struts2的Action 的开发几种方式
方式1:继承ActionSupport类
public class UserAction extends ActionSupport{
}
如果使用struts的数据效验功能必须继承此类
方式2:实现Action接口
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public abstract String execute() throws Exception;
方式3:不继承任何类,不实现任何接口
public class UserAction{
}
使用通配符优化配置(*,{1})
<struts>
<package name="xxx" extends="struts-default">
<action name="hello_*" class="com.ning.action.HelloAction" method="{1}">
<result name="{1}">/{1}.jsp</result>
</action>
</package>
</struts>
访问路径:localhost:8080/工程名/hello_ 方法名
struts的路径匹配原则
localhost:8080/FirstStruts/a/b/c/hello_execute
匹配原则:
localhost:8080/FirstStruts/a/b/c/hello_execute | tomcat服务器 |
---|---|
localhost | 访问哪台主机 |
8080 | 端口号 |
FirstStruts | 找到项目名 |
/a/b/c | 匹配是否有这样的名称空间,如果没有,继续向下匹配 |
/a/b | 匹配是否有这样的名称空间,如果没有,继续向下匹配 |
/a | 匹配是否有这样的名称空间,如果没有,继续向下匹配 |
/ | 默认名称空间,如果好没有找到,报错 |
Struts2中常用的常量
指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出
<constant name="struts.i18n.encoding" value="UTF-8"/>
自定义后缀修改常量
<constant name="struts.action.extension" value="do"/>
设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭
<constant name="struts.serve.static.browserCache" value="false"/>
当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开
<constant name="struts.configuration.xml.reload" value="true"/>
开发模式下使用,这样可以打印出更详细的错误信息
<constant name="struts.devMode" value="true" />
默认的视图主题
<constant name="struts.ui.theme" value="simple" />
与spring集成时,指定由spring负责action对象的创建
<constant name="struts.objectFactory" value="spring" />
该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性
为 false
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
上传文件的大小限制
<constant name="struts.multipart.maxSize" value=“10701096"/>
动态方法调用
该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为 false
<constant name="struts.enable.DynamicMethodInvocation"value="false"/>
设置value值为true后:struts.xml
<struts>
<package name="xxx" extends="struts-default">
<action name="hello" class="com.ning.action.HelloAction" >
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
访问路径:localhost:8080/FirstStruts/hello !需调用的方法名
不建议用动态方法调用,建议用通配符
全局跳转视图配置,配置各项默认值
全局视图配置 global-results
<package name="xxx" extends="struts-default">
<global-results>
<result name="{1}">/{1}.jsp</result>
</global-results>
<action name="hello_*" class="com.ning.action.HelloAction" method="{1}">
</action>
</package>
</struts>
配置各项默认值
– class默认值为(在struts-default.xml):com.opensymphony.xwork2.ActionSupport
– method默认值为:execute
– result默认值为:success