Struts Series(2) - Struts2配置

来源:互联网 发布:分水岭算法的用途 编辑:程序博客网 时间:2024/06/16 12:02

Struts2配置

Struts2的Action的开发的几种方式

1.继承ActionSupport

import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {    public String login(){    System.out.println("UserAction.login()");    return "success";    }}

如果用Struts的数据校验功能,必须继承此类!

2.实现Action接口

接口内容如下:

public interface Action{      public static final java.lang.String SUCCESS = "success";    public static final java.lang.String NONE = "none";    public static final java.lang.String ERROR = "error";    public static final java.lang.String INPUT = "input";    public static final java.lang.String LOGIN = "login";    public String execute() throws Exception;}

可以直接使用内部定义的常量来代替硬编码。

3.不继承任何类,不实现任何接口

不继承不实现对拦截器执行没有任何影响。

通配符

<!-- 占位符写法:用{1}{2}传入到*的位置 --><action name="user_*"          class="com.dmm.a_config.UserAction" method="{1}">    <result name="success">/index.jsp</result></action><!-- 通配符的其他用法 --><action name="user_*" class="com.dmm.a_config.UserAction" method="{1}">    <result name="{1}">/{1}.jsp</result>    <result name="register">/register.jsp</result></action>

Struts中的路径访问原则

访问路径=名称空间+action名称。

假定传入的值为login,项目路径为Http://localhost:8080/struts02

<package name="config" namespace="/user" extends="struts-default" abstract="false">    <action name="user_*" class="com.dmm.a_config.UserAction" method="{1}">        <result name="{1}">/{1}.jsp</result>    </action></package>

上述配置的访问路径为:

Http://localhost:8080/struts02/user/user_login

useruser_login中加入任何路径亦可。如:

Http://localhost:8080/struts02/user/a/b/user_login

而在其余部分加入字符则不会被匹配:

Http://localhost:8080/struts02/a/user/user_login 报错

系统首先寻找有没有/user/a/b的命名空间,没有找到,继续向下;

寻找·/user/a的命名空间,没有找到,继续向下;

寻找/user的命名空间,找到;若仍未找到,继续向下;

寻找/默认命名空间,若仍未找到,报错。

在上述过程中,找到一项路径就返回,不再向下。

Struts常量

Struts1中默认访问后缀.do

Struts2中默认访问后缀.action

如何修改默认访问后缀?

若项目约定修改访问后缀:

1.Struts2的.action访问后缀在何处定义?

Struts-core-2.3.4.1/org/apache/struts2/default.properties中。

struts.action.extension=action,,

2.如何全局修改默认后缀?

在Struts.xml中修改

<!-- 全局配置 -->    <!-- 修改Struts默认的访问后缀 -->    <constant name="struts.action.extension" value="action,do,"></constant>

此处修改为action或do或空。注意,如果删去最后的逗号则必须加后缀才能访问。

其他常量的修改

<!-- 默认编码集 --><constant name="struts.i18n.encoding" value="UTF-8"/><!--设置浏览器是否缓存静态内容,默认值为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"/>

全局跳转视图配置,配置的各项默认值

全局视图配置:

<!-- 配置全局跳转视图 --> <global-results>        <result name="success">/index.jsp</result> </global-results>

Struts会先从action中寻找跳转,之后才会从全局配置中寻找。

注意:该配置应在所有action前。

配置各项默认值

<!-- 配置各项默认值 --><!--         name 只配置了访问路径名称        class 在struts-default包中配置了默认执行的类 ActionSupport         method 默认为execute        默认方法execute返回值为success,对应的页面去全局视图找 --><action name="test"></action>

上述配置为最简单的action配置,如果全局视图没有配置对应的返回页则输出404。

<!-- 什么情况不配置class?即处理的action --><!-- 当只是需要跳转到WEB-INF下资源的时候 --><action name="test2">    <result name="success">/WEB-INF/index.jsp</result></action>
0 0