struts的使用加强版

接受参数的三种方法

  • 1)同名参数传值
    接受register.jsp中的value值.
 姓名:

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

       

    ${user.name}

    register.jsp

            
              姓名:
    

    UserAction.java写user的get和set方法

          private User user;
    

struts.xml的配置

     
     
        /WEB-INF/jsp/login.jsp
        /WEB-INF/jsp/register.jsp
    

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

struts的使用加强版_第1张图片
Paste_Image.png

(2)点击提交后

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

register.jsp

 姓名:

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

action中的跳转方式

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

   
        
                访问b方法
            /
            jump
            A
        
        /WEB-INF/jsp/index.jsp
    

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

   
        /WEB-INF/jsp/register.jsp
    

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

    
        /WEB-INF/jsp/index.jsp
    
  1. redirectAction(action->action)
    从一个action里面客户端重定向到另一个action里面
    struts.xml
     
         
             /
            test
            A
         
         /WEB-INF/jsp/login.jsp
    

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

配置全局的跳转.

 
    /success.jsp
    /error.jsp
 

作用: 将来在其他任何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


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

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

   

你可能感兴趣的:(struts的使用加强版)