struts的使用加强版

作者: huhu502 | 来源:发表于2016-07-13 18:17 被阅读58次

    接受参数的三种方法

    • 1)同名参数传值
      接受register.jsp中的value值.
     <td>姓名:</td><td><input type="text" name="name"></td>
    

    UserAction写user的get和set方法
    private String name;
    private String pwd;
    private String repwd;
    private Integer age;
    private String gender;
    public String register(){
    User user=new User(null, name, pwd, age, gender);
    msg="注册成功";
    System.out.println(user);
    return "login";
    }

    • 2)域模型
      login.jsp

         <h4  style="color:red">${user.name}</h4>
      

      register.jsp

              <form action="user!register.action" >
      
                <td>姓名:</td><td><input type="text" name="user.name"></td>
      

      UserAction.java写user的get和set方法

            private User user;
      

    struts.xml的配置

         <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    
         <action name="user" 
            class="com.huihui.week3.web.action.UserAction">
            <result name="login">/WEB-INF/jsp/login.jsp</result>
            <result name="register">/WEB-INF/jsp/register.jsp</result>
        </action>
    

    测试结果:
    (1)http://localhost:8888/week3/user!toRegister.action

    Paste_Image.png

    (2)点击提交后

    Paste_Image.png
    • 3)模型驱动
      UserAction
       class TestAction implements ModelDriven<User>{
    
            @Override
            public User getModel() {
                if(user == null){
                    user= new User();
                }
                return user;
            }
        }
       public String register(){
        System.out.println(user);
        return "login";
    }
    

    register.jsp

     <td>姓名:</td><td><input type="text" name="name"></td>
    

    struts.xml的配置同2)的配置

    action中的跳转方式

    1)chain (action->action) 内部跳转
    从一个action里面服务器内部跳转到另一个action中
    也可以说是从一个方法跳转到另外一个方法。

       <action name="jump" class="com.huihui.week3.web.action.JumpAction">
    
            <result name="a" type="chain">
                    访问b方法
                <param name="namespace">/</param>
                <param name="actionName">jump</param>
                <param name="method">A</param>
            </result>
            <result name="b">/WEB-INF/jsp/index.jsp</result>
        </action>
    

    2)dispatcher (action->jsp)内部跳转

       <action name="jump" class="com.huihui.week3.web.action.JumpAction">
    
            <result name="register" type="dispatcher">/WEB-INF/jsp/register.jsp</result>
        </action>
    

    3)redirect (action->jsp) 外部跳转
    从一个action里面客户端重定向到一个页面中.

        <action name="test" class="com.huihui.week3.web.action.TestAction">
    
            <result name="success"  type="redirect">/WEB-INF/jsp/index.jsp</result>
        </action>
    
    1. redirectAction(action->action)
      从一个action里面客户端重定向到另一个action里面
      struts.xml
         <action name="test" class="com.huihui.week3.web.action.TestAction">
    
             <result type="redirectAction" name="A">
                 <param name="namespace">/</param>
                <param name="actionName">test</param>
                <param name="method">A</param>
             </result>
             <result name="login">/WEB-INF/jsp/login.jsp</result>
        </action>
    

    TestAction.java

     public String toA(){
    
        System.out.println("toA");
        return "A";
    }
    public String A(){
        System.out.println("A");
        return "login";
    }
    

    输入http://localhost:8888/week3/test!toA.action后就变为http://localhost:8888/week3/test!A.action

    配置全局的跳转.

     <global-results>
    
        <result name="success">/success.jsp</result>
        <result name="error">/error.jsp</result>
    </global-results> 
    

    作用: 将来在其他任何action中,如果有需要返回success字符串跳转到success.jsp或者返回error字符串跳转到error.jsp的时候,就不需要在单独定义,因为已经把这个俩个跳转定义成了全局的跳转,对当前package里面的所有action都起作用.同时还可以在某一个action中再重新定义一下这个俩个跳转,这个时候全局跳转就不会对这个action起作用了.

    TestAction

     public String errors(){
    
        return "error";
    }
    

    struts.xml的配置保持不变,不需要配置跳转到error.jsp页面的信息
    结果:http://localhost:8888/week3/test!errors.action
    直接就跳转到了error.jsp
    error.jsp在WebContent下面。

    配置package中默认的action

    <default-action-ref name="methodTest"></default-action-ref>
    作用:如果地址栏中访问到了当前package下面一个不存在的action的时候,正常情况下是会直接报错的,错误信息显示这个action找不到,但是我们一旦配置了这个默认的action之后,那么再去访问一个不存在的action就不会报错了,而是直接就去访问这个默认的action.这个默认的action需要我们在当前package里面定义出来,并且在<default-action-ref>标签中引用一下.
    注意:访问某个package下面action的时候有几种错误的情况:
    1.action找不到
    2.action找到了但是action对应的类找不到.
    3.action找到了,对应的类找到了,但是在类中要执行的方法没找到。
    4.action找到了,对应的类找到了,类中要执行的方法找到了,但是方法返回的字符串在<result>标签中没有定义.
    5.action找到了,对应的类找到了,类中要执行的方法找到了,方法返回的字符串在<result>标签也定义了出来,但是要跳转的页面没有找到.

    struts.xml
    下面的配置要在package之下和global-results之上。
    这里的test的指的是继承了ActionSupport的TestAction中默认的success。

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

    相关文章

      网友评论

        本文标题:struts的使用加强版

        本文链接:https://www.haomeiwen.com/subject/begjjttx.html