您的位置:首页 > 编程语言 > Java开发

Struts2基于注解的Action配置

2014-07-31 13:39 253 查看
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="spring" />

<!-- 所有匹配*.action的请求都由struts2处理,可以扩展 -->

<constant name="struts.action.extension" value="action" />

<!-- 是否启用开发模式,上线时一般不需要开启,开发时获取更多的日志信息 -->

<constant name="struts.devMode" value="true" />

<!-- struts配置文件改动后,是否重新加载 -->

<constant name="struts.configuration.xml.reload" value="true" />

<!-- 设置浏览器是否缓存静态内容 -->

<constant name="struts.serve.static.browserCache" value="false" />

<!-- 请求参数的编码方式 -->

<constant name="struts.i18n.encoding" value="utf-8" />

<!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->

<constant name="struts.i18n.reload" value="true" />

<!-- 文件上传最大值 -->

<constant name="struts.multipart.maxSize" value="104857600" />

<!-- 让struts2支持动态方法调用,在调用时使用userAction !login .action方式进行调用 -->

<constant name="struts.enable.DynamicMethodInvocation" value="true" />


<!-- Action名称中是否还是用斜线 -->

<constant name="struts.enable.SlashesInActionNames" value="false" />

<!-- 允许标签中使用表达式语法 -->

<constant name="struts.tag.altSyntax" value="true" />

<!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->

<constant name="struts.dispatcher.parametersWorkaround" value="false" />

3·action类的注解:

@ParentPackage("basePackage") //指定父包

@Namespace("/user") //指定命名空间

// @Results( { @Result(name = "success", location = "/main.jsp"), @Result(name = "error", location = "/error.jsp") }) 全局的实现跳转的页面

@Action("userAction") //指定action的访问url


public class UserAction extends BaseAction implements
ModelDriven<User> {



private User user = new User();

@Override

public User getModel() {

return user;

}


private UserServiceI service;

public UserServiceI getService() {

return service;

}

@Autowired // spring注解

public void setService(UserServiceI service) {

this.service = service;

}

// @Action(value = "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 即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: