zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Struts2 <action>元素:建立Action对象的映射

对象映射 建立 元素 gt lt struts2 Action
2023-06-13 09:11:54 时间
Struts2 框架中的 Action 对象是一个控制器的角色,Struts2 框架通过 Action 对象处理 HTTP 请求,其请求地址的映射需要配置在 struts.xml 文件中,它使用 action 元素进行配置。

action name= name >  result url /result
/action

配置文件中的 action 元素主要用于建立 Action 对象的映射,通过 action 元素可以指定 Action 请求地址及处理后的映射页面,在 action 元素中主要包含如表所示的属性信息。


注意:在 action 元素中,name 属性是必须配置的,在建立 Action 对象的映射时,必须指定它的 URL 映射地址,否则请求找不到 Action 对象。

在实际的项目开发中,对于每一个模块来说,其业务逻辑都比较复杂,一个 Action 对象包含多个业务逻辑请求的分支,如在用户管理模块中,需要对用户信息进行添加、删除、修改、查询操作,其 Action 对象的代码如下:


import com.opensymphony.xwork2.ActionSupport;/**

*用户信息管理Action

*@author zs

public class UserAction extends ActionSupport{

 private static final long serialVersionUID=1L; //添加用户信息

 public String save()throws Exception{

 return SUCCESS;

 } //修改用户信息

 public String update()throws Exception{

 return SUCCESS;

 } //删除用户信息

 public String delete()throws Exception{

 return SUCCESS;

 } //查询用户信息

 public String find()throws Exception{

 return SUCCESS;

}

调用一个 Action 对象,默认情况下,它执行的是 execute() 方法,在这种多个业务逻辑分支的 Action 对象中,如果需要请求指定的方法,就可以通过 action 元素的 method 属性进行配置,将一个请求交给指定的业务逻辑方法进行处理,如:


 !--添加用户-- 

 action name= userAction >

action 元素的 method 属性主要用于对一个 action 请求分发一个指定业务逻辑方法,如将 action 元素的 method 属性值设置为 add ,那么这个请求会交给 Action 对象的 add() 方法进行处理,此种配置方法可以减少 Action 对象数目。

注意:在使用 action 元素的 method 属性时,其属性值需要与 Action 对象中的方法名一致,Struts2 框架是通过 method 属性值查找与之配置的方法。

在多个 Action 的情况下,通过一定的命名约定,使用通配符配置 Action 对象来达到一种简化配置的效果。

在 Struts2 框架的配置文件 struts.xml中,常用的通配符主要有两个,分别为 * 与 / 。


action name= XXX* >

action 元素的 name 属性的值为 add* ,它匹配的是以字符 add 开头的字符串,如 addUser 、 addBook 都可以匹配。对于通配符所匹配的字符,在 Struts2 框架的配置文件中是可以获取的,它使用表达式 {1}、{2}、{3} 的方式进行获取。

说明:表达式 {N} 是 1~9 之间的数字,它的下标从 1 开始。

在图书信息处理 Action 中,分别编写添加、删除、更新、查询图书的方法,针对这 4 种操作,使用通配符配置此 Action,并将请求方法返回到相应的页面。

创建名为 Struts2_12 的 Java Web 项目,将 Struts2 的相关类包添加到项目的 classpath,并在 web.xml 文件中注册 Struts2 提供的 StrutsPrepareAndExecuteFilter 过滤器,从而搭建 Struts2 的开发环境。

创建图书信息管理的 Action 对象,它的名称为 BookAction,在此 Action 中分别编写添加、删除、更新、查询图书的方法,关键代码如下:


import com.opensymphony.xwork2.ActionSupport;/**

*图书Action

*@authorZS

public class BookAction extends ActionSupport{

 private static final long serialVersionUID=1L; //添加图书信息请求

 public String add()throws Exception{//返回SUCCESS

 return SUCCESS;

 } //更新图书信息请求

 public String update()throws Exception{ //返回SUCCESS

 return SUCCESS;

 } //删除图书信息请求

 public String delete()throws Exception{ //返回SUCCESS

 return SUCCESS;

 }//查询图书信息请求

 public String select()throws Exception{ //返回SUCCESS

 return SUCCESS;

 } //默认请求执行方法

 @Override

 public String execute()throws Exception{ //返回SUCCESS

 return SUCCESS;

}

在 BookAction 类中,添加图书信息的方法为 add() 方法,更新图书信息的方法为 update() 方法,删除图书信息的方法为 delete() 方法,查询图书信息的方法为 select() 方法,execute() 方法为默认请求处理方法。

说明:本示例主要演示通过通配符配置 Action,在 BookAction 类中并没有对图书信息进行相关操作,只返回了 SUCCESS 值。

在 Web 项目的源码文件夹(MyEclipse 中默认为 src 目录)中,创建名为 struts.xml 的配置文件,在此文件中通过通配符配置 BookAction 对象,关键代码如下:


 !DOCTYPE struts PUBLIC

 -//Apache Software Foundation//DTD Struts Configuration 2.1//EN 

 http://struts.apache.org/dtds/struts-2.1.dtd 

 struts 

 !--声明常量-- 

 constant name= struts.devMode value= true /constant 

 package name= myPackage extends= struts-default namespace= / 

 !--定义action(使用通配符进行配置)-- 

 action name= *_* >

action 元素的 name 属性的值为 *_* ,它匹配使用下划线分隔的两个字符串,method 属性的值为 {1} ,表达式 {1} 匹配的是 name 属性第一个字符串的值,如请求 /add_book 时,将调用 BookAction 类的 add() 方法。

说明: action 元素的 method 属性用于设置访问一个 Action 对象所调用的方法。

*_* 请求的 Action 映射结果只有一个,它的值为 success。在这个返回结果中,本示例通过表达式动态生成返回值,示例将其返回值设置为 {2}_{1}.jsp ,它所生成的动态返回值是 *_* 请求第一个 * 与第二个 * 组合成的 JSP 页面,如请求 /update_book 时,调用 BookAction 类的 update() 方法,其处理成功的返回页面为 book_update.jsp,同理,当请求 /delete_book 时,其处理成功的返回页面为 book_delete.jsp。

技巧:在多个 Action 对象的情况下,使用通配符配置 Action 对象可以减少大量的配置代码。

创建图书信息管理请求处理成功的返回页面,包括 book_add.jsp 页面、book_update.jsp 页面、book_delete.jsp 页面、book_select.jsp 页面,并在这些页面中输出相应的提示信息。

创建程序的首页 index.jsp,在此页面中编写 添加图书 、 修改图书 、 删除图书 与 查询图书 的超级链接,关键代码如下:


 body 

 div align= center 

 h1 图书信息管理 /h1 

 a href= add_book 添加图书 /a 

 a href= update_book 修改图书 /a 

 a href= delete_book 删除图书 /a 

 a href= select_book 查询图书 /a 

 /div 

 /body 

注意:index.jsp 页面中的超级链接地址应按照 struts.xml 文件中定义的通配符格式编写,并且下划线之前的字符串是 BookAction 类中存在的方法。否则,将不能找到与之对应的返回结果页面。

单击 index.jsp 页面中的超级链接,将进入相应的 JSP 页面,如单击 查询图书 超级链接,请求地址为 /select_book ,其返回结果为 book_select.jsp 页面。

21290.html

javaJSPStruts2Web