Struts2 Action的访问方式
我们在配置Struts2的Action类可以采用以下三种方式配置,不同的配置方式Action类的访问就不一样。
1 方式一:传统方式的配置
Action类:
package com.yiidian.action;
import com.opensymphony.xwork2.ActionSupport;
/**
* 方式一:传统方式的配置
* @author 一点教程(yiidian.com)
*
*/
public class Demo1Action extends ActionSupport{
public String save(){
System.out.println("Demo1Action的save方法");
return SUCCESS;
}
public String update(){
System.out.println("Demo1Action的update方法");
return SUCCESS;
}
}
struts.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 方式一:传统的访问方式 -->
<package name="demo1" extends="struts-default" namespace="/demo1">
<action name="save" class="com.yiidian.action.Demo1Action" method="save">
<result>/succ.jsp</result>
</action>
<action name="update" class="com.yiidian.action.Demo1Action" method="update">
<result>/succ.jsp</result>
</action>
</package>
</struts>
Action的访问路径:
执行save方法:http://localhost:8080/ch01_03_struts2_invoke/demo1/save.action
执行update方法:http://localhost:8080/ch01_03_struts2_invoke/demo1/update.action
优缺点分析
优点:配置可读性强
缺点:配置冗余繁琐
2 方式二:通配符的配置
Action类:
package com.yiidian.action;
import com.opensymphony.xwork2.ActionSupport;
/**
* 方式二:通配符的访问方式
* @author 一点教程(yiidian.com)
*
*/
public class Demo2Action extends ActionSupport{
public String save(){
System.out.println("Demo2Action的save方法");
return SUCCESS;
}
public String delete(){
System.out.println("Demo2Action的delete方法");
return SUCCESS;
}
}
struts.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 方式一:传统的访问方式 -->
<package name="demo1" extends="struts-default" namespace="/demo1">
<action name="save" class="com.yiidian.action.Demo1Action" method="save">
<result>/succ.jsp</result>
</action>
<action name="update" class="com.yiidian.action.Demo1Action" method="update">
<result>/succ.jsp</result>
</action>
</package>
<!-- 方式二:通配符的访问方式 -->
<package name="demo2" extends="struts-default" namespace="/demo2">
<action name="demo2_*" class="com.yiidian.action.Demo2Action" method="{1}">
<result>/succ.jsp</result>
</action>
</package>
</struts>
Action的访问路径:
执行save方法:http://localhost:8080/ch01_03_struts2_invoke/demo2/demo2_save.action
执行delete方法:http://localhost:8080/ch01_03_struts2_invoke/demo2/demo2_delete.action
优缺点分析
优点:配置简洁
缺点:配置可读性稍差
3 方式三:动态方法调用
修改struts.xml开启动态方法调用(默认是关闭的):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 开启动态方式调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
Action类:
package com.yiidian.action;
import com.opensymphony.xwork2.ActionSupport;
/**
* 方式三:动态方式调用的访问方式
* @author 一点教程(yiidian.com)
*
*/
public class Demo3Action extends ActionSupport{
public String save(){
System.out.println("Demo3Action的save方法");
return SUCCESS;
}
public String delete(){
System.out.println("Demo3Action的delete方法");
return SUCCESS;
}
}
struts.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 方式一:传统的访问方式 -->
<package name="demo1" extends="struts-default" namespace="/demo1">
<action name="save" class="com.yiidian.action.Demo1Action" method="save">
<result>/succ.jsp</result>
</action>
<action name="update" class="com.yiidian.action.Demo1Action" method="update">
<result>/succ.jsp</result>
</action>
</package>
<!-- 方式二:通配符的访问方式 -->
<package name="demo2" extends="struts-default" namespace="/demo2">
<action name="demo2_*" class="com.yiidian.action.Demo2Action" method="{1}">
<result>/succ.jsp</result>
</action>
</package>
<!-- 方式三:动态方法调用的访问方式 -->
<package name="demo3" extends="struts-default" namespace="/demo3">
<action name="demo3" class="com.yiidian.action.Demo3Action">
<result>/succ.jsp</result>
</action>
</package>
</struts>
Action的访问路径:
执行save方法:http://localhost:8080/ch01_03_struts2_invoke/demo3/demo3!save.action
执行delete方法:http://localhost:8080/ch01_03_struts2_invoke/demo3/demo3!delete.action
优缺点分析
优点:配置简单
缺点:不安全,因为只要项目开启动态方法调用,所有Action的方法都会对外暴露,不推荐使用!
热门文章
优秀文章