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

Struts2 的学习笔记(五) action的优化配置

2017-03-19 00:00 387 查看
摘要: Struts2中action的配置文件会随着业务的增加而增加。导致配置文件膨胀。Struts2中提供了三种方案来解决这个问题:
a) 动态方法调用来实现
b) 通配符配置来解决
c) 使用注解的方式来解决。

action的优化配置

1. Struts2中action的配置文件会随着业务的增加而增加。导致配置文件膨胀。Struts2中提供了三种方案来解决这个问题:

a) 动态方法调用来实现

b) 通配符配置来解决

c) 使用注解的方式来解决。

传统的action配置方式:

Action处理类中有4个处理方法:

public class UserAction {
public String add(){
System.out.println("添加");
return Action.SUCCESS;
}
public String delete(){
System.out.println("删除");
return Action.SUCCESS;
}
public String find(){
System.out.println("查询");
return Action.SUCCESS;
}
public String update(){
System.out.println("修改");
return Action.SUCCESS;
}
}
Action的配置文件:

<package name="default" namespace="/" extends="struts-default">
<!-- 传统的配置方式 -->
<action name="add" class="cn.sxt.action.UserAction" method="add">
<result>/index.jsp</result>
</action>
<action name="find" class="cn.sxt.action.UserAction" method="find">
<result>/index.jsp</result>
</action>
<action name="delete" class="cn.sxt.action.UserAction" method="delete">
<result>/index.jsp</result>
</action>
<action name="update" class="cn.sxt.action.UserAction" method="update">
<result>/index.jsp</result>
</action>
</package>
2. 动态方法调用简化action的配置:

a) 动态方法调用首先需要将下面常量配置为true

<!-- 配置动态方法调用为true,不同版本默认配置不一致 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
b) 在struts.xml配置文件中,只需配置一个action即可

<!-- 动态方法调用方式 -->
<action name="userAction" class="cn.sxt.action.UserAction">
<result>/index.jsp</result>
</action>
c) 在调用action时,需要按照以下规则进行调用:

ActionName!methodName.action

调用方式:http://localhost:8080/action_cfg/userAction!delete.action

注意:使用动态方法调用,需要注意不同的处理方法返回值的问题。不同处理方法的返回值应该是不一致的,除非处理后跳转到同一个页面。动态方法调用不安全,不推荐使用。

3. 使用通配符配置来解决action配置优化的问题。

<!-- 使用通配符进行action的配置
* 表示匹配多个字符
{1} 表示占位符 1表示的第一个*的内容
如果请求的是add.action,那么* 表示add {1}表示add
-->
<action name="*" class="cn.sxt.action.UserAction" method="{1}">
<result>/index.jsp</result>
</action>
注意:如果使用通配符进行配置action,需要注意不同的处理方法返回值的问题。不同处理方法的返回值应该是不一致的,除非处理后跳转到同一个页面。如果有指定名称的action,那么首先匹配指定名称的action,没有再匹配通配符。

4. 使用注解来进行action的配置

a) 导入struts2-convention-plugin-2.3.4.jar

b) 在action类上配置注解

@ParentPackage("struts-default")
@Namespace("/")
public class UserAction {
@Action(value="/add",
results={@Result(name="success", location="/index.jsp", type="redirect"),
@Result(name="error", location="/error.jsp", type="redirect")})
public String add(){
System.out.println("添加");
return "success";
}
@Action("/delete")
public String delete(){
System.out.println("删除");
return "success";
}
@Action("/find")
public String find(){
System.out.println("查询");
return "success";
}
@Action("/update")
public String update(){
System.out.println("修改");
return "success";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: