Struts2配置详解2配置Action_第1页
Struts2配置详解2配置Action_第2页
Struts2配置详解2配置Action_第3页
Struts2配置详解2配置Action_第4页
Struts2配置详解2配置Action_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、配置ActionStruts2的核心功能是action,对于开发人员来说,使用 Struts2主要就是编写action,action类通 常都要实现com.opensymphony.xwork2.Action接口,并实现该接口中的 execute。 方法。该方法如下:public String execute()throws ExceptionStruts2并不是要求所有编写的action类都要实现Action 接口,也可以直接编写一个普通的Java类作为action ,只要实现一个返回类型为public String xxx()在实际开发中,action类很少直接实现ActionString

2、的无参的public 方法即可:接口,通常都是从com.opensymphony.xwork2.ActionSupport类继承,ActionSupport实现了 Action 接口和其他一些可选的接口,提供了输入验证,错误信息存取,以及国际化的支持,选择从ActionSupport 继承,可以简化action 的定义。开发好action之后,好需要对action进行配置,以告诉 Struts2框架,针对某个URL的请求应该交由哪个 action 进行处理。1. Action 映射:action 映射是Struts2 框架中的基本”工作单元”,action映射就是将一个请求URL(即actio

3、n 的名字)映射到一个action 类,当一个请求匹配某个 action 的名字 时,框架就使用这个映射来确定如何处理请求。action元素的完整属性表属性是否必须说明name是action的名子,用于匹配 URLclass否Action实现类的完整类名method否执行Action类时调用的方法convert否应用于action的类型转换的完整类名例如:<action name ="user" class ="org.lesson05.UserAction"><result name ="success" >

4、/user.jsp </ result > </ action >2. 使用method属性在配置action 时,我们可以通过action 元素的method属性来指定action 调用的方法,所指定的方法,必须遵循与execute方法相同的格式。在Struts2.xml 文件中,我们可以为同一个 action 类配置不同的别名,并使用 method 属性。在Struts.xml文件中为同一个 Action 类配置不同的别名<!-使用 method 属性->< package name ="methods" namespace =

5、"/"extends ="struts-default"><!- 对应着 MethodAction 里面的 execute 方法-><action name ="list" class ="org.lesson05.MethodAction"><result name = "success" >/Methods/list.jsp</ result ></ action ><!- 对应着MethodAction 里面的add方

6、法-><action name ="add" class ="org.lesson05.MethodAction"method ="add" ><resultname = "success">/Methods/add.jsp </ result ></ action ><!- 对应着MethodAction 里面的edit 方法-><action name = "edit"class ="org.lesson05.

7、MethodAction"method ="edit" ><result name = "success" >/Methods/edit.jsp </ result > </ action > <!- 对应着 MethodAction 里面的 delete 方法->< action name = "delete"class ="org.lesson05.MethodAction"method ="delete" ><

8、;result name ="success" >/Methods/delete.jsp</ result ></ action ></ package >对应的MethodAction 类,代码如下:import com.opensymphony.xwork2.ActionSupport;public class MethodAction extends ActionSupport Overridethrows Exceptionthrows Exceptionpublic String execute() return SUCC

9、ESS; public String add()return SUCCESS;public String edit()throws Exceptionreturn SUCCESS;public String delete()throws Exception return SUCCESS; 使用action 的method属性可以任意指定处理请求的方法(只要该方法和execute方法具有相同的格式),这样就可以在同一个类中完成相关的任务,而不需要去编写不同的Action 类。注意:Struts2 在根据action 元素的method属性查找方法时有两种途径:1. 查找与method属性值完全一

10、致的方法.2.查找doMethod()形式的方法.3 .动态方法调用:另外一种无需配置就可以直接调用Action 中的非execute 方法的方式,是使用Struts2 的动态方法调用。动态方法调用是在action的名字中使用感叹号来标识要调用的方法名,其语法格式为 actionName!methodName.action例如,我们配置了如下的action<action name ="user" class ="org.lesson05.UserAction"><result name = "success" >

11、;/Methods/list.jsp</ result ></ action >当请求/user!delete.action时,就会自动调用 UserAction 中的delete() 方法提示,这种调用方式会带来安全隐患!4 .模拟 Struts1 中的 ForwardAction<action name = "user" ><result >/index.jsp </ result ></ action >这样写就可以了 .HTTP404错误。在Struts2 中,可以指定 action匹配,那么默

12、认的 action将被执元素来声明,如下所示:namespace ="/default”5. 默认的action如果请求一个不存在的action一个默认的action,如果一个请求没有其他的行。默认的 action 使用 default-action-ref <!- 默认 action ->< package name ="defaultAction"extends ="struts-default”<default-action-refname ="error" ></ default-actio

13、n-ref><action name ="defaultaction"class ="org.lesson05.DefaultAction"><result name ="success" >/defaultAction.jsp</ result ></ action > <action name ="error" ><result >/error.jsp </ result ></ action ></ p

14、ackage >注意:根据struts-2.0.dtd 中定义的package 元素的内容模型, default-acion-ref必须在action元素之前使用。如果请求的是/default/defaultactionl.action,框架找不到映射到defaultactionl 的 action, 那么名为 error 的 action将被调用。注意:每个包中都可以有它自己默认的action ,但是每一个名称空间应该只有一个默认action。如果具有相同名称空间的多个包中都声明了默认action, 那么哪一个action才是默认的将无法保证。注意:默认action 只对action的

15、访问有效。如果你访问一个非action 的资源,例如/user.jsp,而该页面不存在,这时仍会看到HTTP404错误。如果想为整个 Web应用程序指定默认页面,需要在 web.xml文件中对HTTP404错误指定相应的错误处理 页面。6.通配符映射随着Web应用程序的增加,所需的 Action 也会更多,从而导致大量的 action 映 射,使用通配符可以减少 action 配置的数量,使一些具有类似行为的Action 或者Action 方法可以使用通用的样式来配置。通配符即星号(*),用于匹配0个或多个字符,在配置action 时,可以在action 元素的name属性中使用星号(*)来匹

16、配任意的字符。以下是在action映射中使用通配符:< action name = "news*"class ="org.struts2.lesson05.News1Action"><result name ="success" >/WEB-INF/News/1.jsp </ result > </ action >我们在action 元素的name属性中使用了通配符(*),允许这个映射匹配所有以/news 开始的 URL,例如 /newsAdd,/newsEdit,/newsDelet

17、e,但是,如果请求的是/newsEdit/add ,那么这个映射就不会被匹配。在上面,有一个特殊的记号1,这是作为占位符使用的,它将被通配符所匹配的值替换,例如访问/newsEdit ,通配符(*)匹配的部分是Edit ,那么,这个值将 替换1,最终调用的类是 org.struts2.lesson05.NewsEditAction,Action执行成功后导向的结果页面是/WEB-INF/News/Edit.jsp 二在action 映射和action结果中,通配符匹配的值可以用记号N来访问,N是从1到9的数字,指出替换的是哪一个通配符匹配的值。整个请求URL可以用记号0来访问。例如如下的 ac

18、tion 映射:<action name ="*_*" class ="org.struts2.lesson05.1Action"method ="2"><result >/WEB-INF/News/0.jsp </ result ></ action >当访问/News_delete 时,name属性中的第一个"* ”匹配News,第二个"* ”匹配delete, class属性中使用的记号是 1,所以被News所替换,method属性中使用的记号是2,于是被delete 所替换。结果映射中使用的记号是0,于是被整个URL替换,即News_delete 所替换。整个替换后的结果是:当请求方法对请求进行处理。执 页面。即将"* ”放在action 名字常用的特殊字符是下划/News_delete 时,框架调用 NewsAction 实例的 delete 行成功后,请求被导向到 /WEB-INF/News/News_delete.jsp通配符方法设置的另一种常见方式是使用后缀通配符,的后面,在"* ”和名字前缀之间使用一个特殊字符作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论