首页 > 代码库 > Struts2基于注解的Action配置
Struts2基于注解的Action配置
1· 既然我们开发的是web项目所以web.xml文件时必不可少的
在web.xml 中配置拦截用户请求的 filter拦截用户的所有的请求并且初始化 struts.xml文件
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2·使用注解的方式配置struts就需要引入一个jar包
虽然说是零配置但是struts.xml还是少不了的配置如下:
<!-- 指定由spring负责action对象的创建 -->
<constant name="struts.objectFactory" value=http://www.mamicode.com/"spring" />
<!-- 所有匹配*.action的请求都由struts2处理,可以扩展 -->
<constant name="struts.action.extension" value=http://www.mamicode.com/"action" />
<!-- 是否启用开发模式,上线时一般不需要开启,开发时获取更多的日志信息 -->
<constant name="struts.devMode" value=http://www.mamicode.com/"true" />
<!-- struts配置文件改动后,是否重新加载 -->
<constant name="struts.configuration.xml.reload" value=http://www.mamicode.com/"true" />
<!-- 设置浏览器是否缓存静态内容 -->
<constant name="struts.serve.static.browserCache" value=http://www.mamicode.com/"false" />
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value=http://www.mamicode.com/"utf-8" />
<!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
<constant name="struts.i18n.reload" value=http://www.mamicode.com/"true" />
<!-- 文件上传最大值 -->
<constant name="struts.multipart.maxSize" value=http://www.mamicode.com/"104857600" />
<!-- 让struts2支持动态方法调用,在调用时使用userAction !login .action方式进行调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value=http://www.mamicode.com/"true" />
<!-- Action名称中是否还是用斜线 -->
<constant name="struts.enable.SlashesInActionNames" value=http://www.mamicode.com/"false" />
<!-- 允许标签中使用表达式语法 -->
<constant name="struts.tag.altSyntax" value=http://www.mamicode.com/"true" />
<!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
<constant name="struts.dispatcher.parametersWorkaround" value=http://www.mamicode.com/"false" />
3·action类的注解:
@ParentPackage("basePackage") //指定父包
@Namespace("/user") //指定命名空间
// @Results( { @Result(name = "success", location = "/main.jsp"), @Result(name = "error", location = "/error.jsp") }) 全局的实现跳转的页面
public class UserAction extends BaseAction implements ModelDriven<User> {
②
private User user = new User();
@Overridepublic User getModel() {
return user;
}
private UserServiceI service;
public UserServiceI getService() {
return service;
}
@Autowired // spring注解
public void setService(UserServiceI service) {
this.service = service;
}
// @Action(value = http://www.mamicode.com/"reg", results = { @Result(name = "success", location = "/index.jsp") }) 另一种方式localhost:8080/struts_demo/user/userAction/reg
public void reg(){
JSON j = new JSON();
try {
service.addUser(user);
j.setSuccess(true);
j.setMessage("注册成功");
} catch (Exception e) {
j.setMessage("注册失败");
e.printStackTrace();
}
super.writeJson(j);
}
}
上面的1.2使用的是实现ModalDriven<User>(模型驱动的方式)方便接收页面传递过来的值
以前我们是把页面上所有的传值写一个类级变量然后定义其getter / setter方法
这样的话如果变量过多会很麻烦,所以我们实现模型驱动实现其getModal方法即可,在modal层建立实例写入getter/setter方法
总结:
Namespace:指定命名空间。
ParentPackage:指定父包。
Result:提供了Action结果的映射。(一个结果的映射)
Results:“Result”注解列表
ResultPath:指定结果页面的基路径。
Action:指定Action的访问URL。
Actions:“Action”注解列表。
ExceptionMapping:指定异常映射。(映射一个声明异常)
ExceptionMappings:一级声明异常的数组。
InterceptorRef:拦截器引用。
InterceptorRefs:拦截器引用组。
4. 调用:localhost:8080/struts_demo/user/userAction!reg .action 即可