Struts2 <action>元素:建立Action对象的映射
发布时间:2020-12-15 02:41:11 所属栏目:Java 来源:网络整理
导读:Struts2 框架中的 Action 对象是一个控制器的角色,Struts2 框架通过 Action 对象处理 HTTP 请求,其请求地址的映射需要配置在 struts.xml 文件中,它使用 action 元素进行配置。 语法1: action name="name" class="url"method="name" ? resulturl/result /a
Struts2 框架中的 Action 对象是一个控制器的角色,Struts2 框架通过 Action 对象处理 HTTP 请求,其请求地址的映射需要配置在 struts.xml 文件中,它使用 <action> 元素进行配置。语法1:
<action name="name" class="url"method="name"> 配置文件中的 <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" class="com.lyq.action.UserAction" method="save"> <result>success.jsp</result> </action> <!--修改用户--> <action name="userAction" class="com.lyq.action.UserAction" method="update"> <result>success.jsp</result> </action> <!--删除用户--> <action name="userAction" class="com.lyq.action.UserAction" method="delete"> <result>success.jsp</result> </action> <!--查询用户--> <action name="userAction" class="com.lyq.action.UserAction" method="find"> <result>success.jsp</result> </action> <action> 元素的 method 属性主要用于对一个 action 请求分发一个指定业务逻辑方法,如将 <action> 元素的 method 属性值设置为 "add",那么这个请求会交给 Action 对象的 add() 方法进行处理,此种配置方法可以减少 Action 对象数目。 注意:在使用 <action> 元素的 method 属性时,其属性值需要与 Action 对象中的方法名一致,Struts2 框架是通过 method 属性值查找与之配置的方法。 语法2:在多个 Action 的情况下,通过一定的命名约定,使用通配符配置 Action 对象来达到一种简化配置的效果。在 Struts2 框架的配置文件 struts.xml中,常用的通配符主要有两个,分别为“*”与“”。
在 Struts2 框架的配置文件 struts.xml 中应用通配符的方法如下: <struts> <!--定义action--> <action name="XXX*" class=XXXq.action.{1}XXXAction"> </struts> <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="*_*" class="com.lyq.action.BookAction" method="{1}"> <!--结果映射--> <result name="success">{2}_{1}.jsp</result> </action> </package> </struts> <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="https://www.52php.cnadd_book">添加图书</a> <a href="https://www.52php.cnupdate_book">修改图书</a> <a href="https://www.52php.cndelete_book">删除图书</a> <a href="https://www.52php.cnselect_book">查询图书</a> </div> </body> 注意:index.jsp 页面中的超级链接地址应按照 struts.xml 文件中定义的通配符格式编写,并且下划线之前的字符串是 BookAction 类中存在的方法。否则,将不能找到与之对应的返回结果页面。 单击 index.jsp 页面中的超级链接,将进入相应的 JSP 页面,如单击“查询图书”超级链接,请求地址为 "/select_book",其返回结果为 book_select.jsp 页面。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |