Struts 之 通配符 路径匹配 常量用法 配置默认值
Struts 框架学习
Action的开发的几种方式
方式1 : 继承ActionSupport 如果使用Struts校验功能,必须继承此类
方式2 : 实现Action接口
方式3 :不继承任何类,不实现任何接口
1、通配符:
在Struts中配置信息,可以用*与{1} 可以优化配置
public class UserAction { private String userName; public void setUserName(String userName) { this.userName = userName; } // Action中业务处理方法 public String login() { System.out.println("UserAction.login()" + userName); return "login"; } public String register() { System.out.println("register()" + userName); return "register"; } }
<package name="config" namespace="/user" extends="struts-default" abstract="false"> <!-- <action name="login" class="cn.itcast.a_config.UserAction" method="login"> <result name="success">/index.jsp</result> </action> <action name="register" class="cn.itcast.a_config.UserAction" method="register"> <result name="success">/index.jsp</result> </action> --> <!-- 使用通配符优化上面的步骤 --> <!-- http://localhost:8080/struts02/user_login --> <action name="user_*" class="cn.itcast.a_config.UserAction" method="{1}"> <result name="{1}">/{1}.jsp</result> </action> </package>
2、路径匹配原则
3、常量
struts-default.xml 文件中:
<!-- 1. 修改Struts默认的访问后缀 --> <constant name="struts.action.extension" value="action,do,"></constant>
<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>
<struts> <package name="config2" namespace="/" extends="struts-default"> <!-- 动态方法调用: http://locahost:8080/struts02/user!login <action name="user" class="cn.itcast.b_config2.UserAction"> <result name="success">/index.jsp</result> </action> --> <!-- 通配符: http://locahost:8080/struts02/user_login --> <action name="user_*" class="cn.itcast.b_config2.UserAction" method="{1}"> </action> <!-- <action name="test" class="cn.itcast.b_config2.TestAction" method="execute"> 返回结果标记success对应的页面再当前action中没有配置, 所以会去找全局配置有是否有success标记对应的页面 </action> --> <!-- 什么情况不配置class? 即处理的aciton --> <!-- 答案: 当只是需要跳转到WEB-INF下资源的时候。 --> <action name="test2"> <result name="success">/WEB-INF/index.jsp</result> </action> </package> </struts>
global-results 全局跳转视图 必须写在 action 之前
<!-- 配置各项默认值 --> <!-- name 只配置了访问路径名称 class 默认执行的action在struts-default有配置 <default-class-ref class="com.opensymphony.xwork2.ActionSupport" /> method 默认为execute 默认的方法execute返回值为success,对应的页面去全局视图找。 -->
<action name="test"></action>