struts配置

struts2的Action开发的几种方法

继承ActionSupport类

public class UserAction2 extends ActionSupport {

    // Action中业务处理方法
    public String login() {
        System.out.println("UserAction.login()");
//      return "success";
        return SUCCESS;
    }
}

实现Action接口

public class UserAction3 implements Action {

    // Action中业务处理方法
    public String login() {
        System.out.println("UserAction.login()");
        return "success";
    }

    @Override
    public String execute() throws Exception {
        return null;
    }
}

不继承类也不实现接口

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";
    }
}

配置文件的通配符

在struts配置信息中,可以用*与{1}来优化配置

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <package name="config" namespace="/" 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>  

</struts>

struts中路径匹配原则

<struts>

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

    </package>  

</struts>
访问路径: http://localhost:8080/struts02/user/user_login        正确
访问路径: http://localhost:8080/struts02/user/a/b/user_login    正确
访问路径: http://localhost:8080/struts02/a/b/user/user_login    错误

分析:
    http://localhost:8080/struts02/user/a/b/user_login
Tomcat
    Localhost           找到访问哪一台机器
    8080                找到Tomcat服务器
    struts02            找到项目名称 
    /user/a/b           先看有没有这个名称空间,没找到,继续向下;找到就返回
    /user/a             先看有没有这个名称空间,没找到,继续向下;找到就返回
    /user               先看有没有这个名称空间,没找到,继续向下;找到就返回
    /                   默认名称空间,还没找到,报错!找到就返回

struts常量

struts中默认访问后缀:
    struts1中默认访问后缀是*.do
    struts2中默认访问后缀是*.action

如何修改默认访问后缀?
    1. struts2的.action访问后缀在哪里定义?
       struts2-core-2.3.4.1.jar/org.apache.struts2/default.properties文件中有
struts.action.extension = action,,
    2.在struts.xml中通过配置常量修改
<struts>
    <!-- 一、全局配置 -->
    <!-- 1. 修改Struts默认的访问后缀 -->
    <constant name="struts.action.extension" value="action,do,"></constant>
</struts>
    上述配置指定访问后缀为action/do或没有访问路径都可以

struts2中常用的常量

1. 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出
 <constant name="struts.i18n.encoding" value="UTF-8"/>
2. 自定义后缀修改常量
 <constant name="struts.action.extension" value="do"/>
3. 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 
    <constant name="struts.serve.static.browserCache" value="false"/>
4. 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 
    <constant name="struts.configuration.xml.reload" value="true"/>
5. 开发模式下使用,这样可以打印出更详细的错误信息 
    <constant name="struts.devMode" value="true" />
6. 默认的视图主题 
    <constant name="struts.ui.theme" value="simple" />
7. 与spring集成时,指定由spring负责action对象的创建 
    <constant name="struts.objectFactory" value="spring" />
8. 该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为 false
    <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
9. 上传文件的大小限制
    <constant name="struts.multipart.maxSize" value=“10701096"/>

动态方法

动态方法调用语法:
    actionName+! 即为动态与法调用
<!-- 动态方法调用: http://locahost:8080/struts02/user!login -->
<action name="user" class="cn.itcast.b_config2.UserAction">
    <result name="success">/index.jsp</result>          
</action> 

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

全局视图配置

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


<action name="test" class="cn.itcast.b_config2.TestAction" method="execute">
    <!-- 返回结果标记success对应的页面再当前action中没有配置,
    所以会去找全局配置有是否有success标记对应的页面 -->
</action>

配置各项默认值

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

  -->
 <action name="test"></action>

 <!-- 什么情况不配置class? 即处理的aciton -->
 <!-- 答案: 当只是需要跳转到WEB-INF下资源的时候。 -->
  <action name="test2">
     <result name="success">/WEB-INF/index.jsp</result>
  </action>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值