struts2注解
2014-07-08 23:00
387 查看
本文内容:
一.使用注解方式的好处
二.Java注解方式写法
三. Java注解具体实现
四.Java注解的其他写法
一.使用注解方式的好处
Struts2中声明架构有2种方式,一种是xml的方式,一种Java注解的方式。对于Java注解的方式,它没有xml文件,所有的元数据都集中放在Java注解中,这些注解直接驻留在实现动作的类对应的Java源代码中。
很多人觉得Java注解是一种比较优雅的解决方案。有些XMl元素中必须显示指定的信息,可以从注解的类所隶属的Java包结构自动推断出来,也减少了多年以来在Web应用程序类路径下积累的XML文件的混乱状况。
(PS:个人觉得XML的也还好,大不了我把XML分割成几个独立的XML,必要时多写几行注释不就OK了)
二.Java注解方式写法
总结常用注解:
Namespace:指定命名空间。
ParentPackage:指定父包。
Result:提供Action结果的映射。
Results:Result注解列表。
Action:指定Action的访问URL。
Actions:Action注解列表。
@Namespace("/XXX") //不需要指定也可以。
@ParentPackage("struts-default") //不需要指定也可以。
@Result(name = "success",location = "/MyJsp.jsp")
@Results({
@Result(name = "success",location = "/MyJsp.jsp"),
@Result(name = "error",location = "/index.jsp")
})
@Action(value = "abc")
@Actions( { @Action("/one/url"), @Action("/another/url") })
一般来说,Action会配合Results属性一起使用。如:
@Action(value = "/H5/url", results = {
@Result(name = SUCCESS, location = "/H5/success.jsp"),
@Result(name = "failure", location = "/H5/fail.jsp")
})
三. Java注解具体实现
1.需要告诉框架动作类在哪里。
所以需要在web.xml中的FilterDispatcher中配置actionPackages属性,如下:
2.告诉框架动作类在哪里还是不够的,需要以某种方式标记哪些类是动作类。方法有2.
一.实现Action接口。
二.使用命名约定,即让类名以Action结尾。
当然,你即实现Action接口,也以Action结尾也是可以的。
3.具体实例:我建的Web工程如下:
Web.xml文件如下:
Index.jsp页面如下:
四.Java注解的其他写法
1.假如多个action响应同一个函数怎么办?
2.一个TestAction类中有多个方法,分别响应不同的action。
3.正常点的类(一个TestAction类中有多个方法,分别响应不同的action。各自action有各 自的返回值)
对于1:
一.使用注解方式的好处
二.Java注解方式写法
三. Java注解具体实现
四.Java注解的其他写法
一.使用注解方式的好处
Struts2中声明架构有2种方式,一种是xml的方式,一种Java注解的方式。对于Java注解的方式,它没有xml文件,所有的元数据都集中放在Java注解中,这些注解直接驻留在实现动作的类对应的Java源代码中。
很多人觉得Java注解是一种比较优雅的解决方案。有些XMl元素中必须显示指定的信息,可以从注解的类所隶属的Java包结构自动推断出来,也减少了多年以来在Web应用程序类路径下积累的XML文件的混乱状况。
(PS:个人觉得XML的也还好,大不了我把XML分割成几个独立的XML,必要时多写几行注释不就OK了)
二.Java注解方式写法
总结常用注解:
Namespace:指定命名空间。
ParentPackage:指定父包。
Result:提供Action结果的映射。
Results:Result注解列表。
Action:指定Action的访问URL。
Actions:Action注解列表。
@Namespace("/XXX") //不需要指定也可以。
@ParentPackage("struts-default") //不需要指定也可以。
@Result(name = "success",location = "/MyJsp.jsp")
@Results({
@Result(name = "success",location = "/MyJsp.jsp"),
@Result(name = "error",location = "/index.jsp")
})
@Action(value = "abc")
@Actions( { @Action("/one/url"), @Action("/another/url") })
一般来说,Action会配合Results属性一起使用。如:
@Action(value = "/H5/url", results = {
@Result(name = SUCCESS, location = "/H5/success.jsp"),
@Result(name = "failure", location = "/H5/fail.jsp")
})
三. Java注解具体实现
1.需要告诉框架动作类在哪里。
所以需要在web.xml中的FilterDispatcher中配置actionPackages属性,如下:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>action</param-value> </init-param> </filter>
2.告诉框架动作类在哪里还是不够的,需要以某种方式标记哪些类是动作类。方法有2.
一.实现Action接口。
二.使用命名约定,即让类名以Action结尾。
当然,你即实现Action接口,也以Action结尾也是可以的。
3.具体实例:我建的Web工程如下:
Web.xml文件如下:
<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>action</param-value> </init-param> </filter>
Index.jsp页面如下:
<body> <a href = "/test/test.action">test1.action</a> </body>TestAction代码如下:
package com.my.action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.ActionSupport; @Namespace("/test") //不需要指定也可以。不指定时jsp页面的/test/的这个命名空间也要去掉 @ParentPackage("struts-default") //不需要也可以 /* * 相当于指定全局结果 */ @Results({ @Result(name = "success",location = "/Success.jsp"), @Result(name = "error",location = "/Error.jsp") }) /* * @Result(name = "error",location = "/index.jsp") * 这个也是相当于指定全局结果,只不过这个是指定一个返回,上面是指定多个。 */ public class TestAction extends ActionSupport{ public String execute() throws Exception { return SUCCESS; } }
四.Java注解的其他写法
1.假如多个action响应同一个函数怎么办?
2.一个TestAction类中有多个方法,分别响应不同的action。
3.正常点的类(一个TestAction类中有多个方法,分别响应不同的action。各自action有各 自的返回值)
对于1:
public class TestAction extends ActionSupport{ @Actions({ @Action("test"), @Action("test1") }) public String execute() throws Exception { return SUCCESS; } }对于2:
public class TestAction extends ActionSupport{ /* * 这个execute()方法默认就是test.action对应响应的方法 */ public String execute() throws Exception { return SUCCESS; } @Action("test1") public String test2() { return ERROR; } }对于3:
public class TestAction extends ActionSupport{ /* * 这个execute()方法默认就是test.action对应响应的方法 */ public String execute() throws Exception { return SUCCESS; } /* * 不同action响应同一个方法,但是对返回的结果处理不同 */ @Actions({ @Action(value = "test1",results = { @Result(name = "yes",location = "/Success.jsp"), @Result(name = "no",location = "/Error.jsp") }), @Action(value = "test2",results = { @Result(name = "yes",location = "/Error.jsp"), @Result(name = "no",location = "/Success.jsp") }), }) public String test1_2() { return "yes"; } /* * 普通的一个action对应的方法,不同返回值跳转页面不一样 */ @Action(value = "test3",results = { @Result(name = "yes",location = "/Success.jsp"), @Result(name = "no",location = "/Error.jsp") }) public String test3() { return "no"; } }
相关文章推荐
- struts2中使用注解配置Action
- struts2-convention-plugin Annotation(零配置中的注解)
- Struts2基于注解的Action配置(一)
- struts2整合spring 注解方式 注入为空问题原因之一
- 关于struts2注解Namespace的问题总结
- struts2 and json 注解
- Struts2 Annotation 注解配置
- struts2使用注解配置Action传参方式
- spring+hibernate加入struts2(注解版)
- struts2注解
- Struts2基于注解的Action配置
- struts2用注解开发出错一 There is no Action mapped for namespace [/] and action name [zhujie] associated with
- struts2 的注解配置
- struts2.x多文件上传(使用注解)
- Struts2注解指定Action扫描路径
- Struts2 注解详解
- Struts2_注解开发
- Struts2_基于注解的Action配置
- Struts2入门(7): 注解
- Struts2 注解模式