Struts常量
Struts2默认的访问后缀是.action……
修改默认访问路径
有的时候,可能根据项目的需要…我想后缀名默认并不是.action,那我该怎么办呢??
我们在jar包上找到它的配置文件…
我们发现它的默认值是action,,
值得注意的是:两个逗号并不是多余的
我们不可能是直接修改jar包中的配置文件的,在struts.xml文件中提供了constant节点供我们修改struts的常量…
前面已经说了,两个逗号并不是多余的。那么直接在配置文件中配置action时,会怎么样:
<constant name="struts.action.extension" value="action"/>
也就是说,“,”号能够匹配空格键
举例子说明:
- 如果配置后缀为
action
。那么后缀一定要写action - 如果配置后缀为
action,do,
。那么后缀可以是action,可以是do,也可以不写 - 如果配置后缀为
action,,
。那么后缀可以是action,可以不写
Struts常用的常量
<struts> <!-- 0. 请求数据编码 --> <constant name="struts.i18n.encoding" value="UTF-8"/> <!-- 1. 修改Struts默认的访问后缀 --> <constant name="struts.action.extension" value="action,do,"></constant> <!-- 2. 修改xml自动重新加载 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 3. 开启动态方法调用 (默认不开启)--> <constant name="struts.enable.DynamicMethodInvocation" value="true"/> <!-- 4. 修改上传文件的最大大小为30M --> <constant name="struts.multipart.maxSize" value="31457280"/> </struts>
只有动态方法调用是我们没有接触过的。
那动态方法调用是怎么回事呢???这是样的:在action节点不配置method属性,在地址栏使用资源名称!方法名
的方式去调用业务方法
跳转全局视图
为什么需要跳转全局视图?
首先,我们还是来看一个需求:现在我有两个Action,PrivilegeAction和CategoryAction
- PrivilegeAction
public class PrivilegeAction extends ActionSupport { public String login() { System.out.println("我是登陆"); return "success"; } public String register() { System.out.println("我是注册"); return "success"; } }
CategoryAction
public class CategoryAction extends ActionSupport { public String add() { System.out.println("我是添加"); return "success"; } public String find() { System.out.println("我是查找"); return "success"; } }
在struts.xml文件中配置
<action name="privilege_*" class="privilegeaction.PrivilegeAction" method="{1}"> <result name="success">/index.jsp</result> </action> <action name="category_*" class="privilegeaction.CategoryAction" method="{1}"> <result name="success">/index.jsp</result> </action>
我们发现一个问题,只要是方法返回值是success,那么就跳转到首页….如果有大量Action方法返回的都是success,那么就要写很多很多个result节点了..
使用跳转全局视图
代码就可以变成是这样子了,注意:global-results
节点需要在action节点的上面
<package name="privilige" extends="struts-default" > <global-results> <result name="success">/index.jsp</result> </global-results> <action name="privilege_*" class="privilegeaction.PrivilegeAction" method="{1}"> </action> <action name="category_*" class="privilegeaction.CategoryAction" method="{1}"> </action> </package>
效果: