zoukankan      html  css  js  c++  java
  • Struts 2 初步入门(五)之接受参数

    1.使用action的属性接受参数

      执行顺序为:前端提交参数--->LoginAction.do进行处理--->处理成功后,跳转到sucess.jsp文件。

     (1)新建login.jsp文件如下:

    <form action="LoginAction.do" method="post">
    用户名:<input type="text" name="username">
    密码:<input type="password" name="password">
    <input type="submit" value="提交">
    </form>

    注意:其中action 方法的后缀名称.do,因为在前面的内容里设置了后缀名,所以这里需要注意。要不然后面会出现:404--The origin server did not find a current representation for the target resource or is not willing to disclose that one 这种错误。

    (2)新建
    LoginAction.do文件,即Java文件LoginAction,并构造setter和getter函数如下
    public class LoginAction extends ActionSupport {
    private String username;
    private String password;

    public String login(){
    System.out.println(username);
    return SUCCESS;
    }
     public String getUsername() {
    return username;
    }

    public void setUsername(String username) {
    this.username = username;
    }

    public String getPassword() {
    return password;
    }

    public void setPassword(String password) {
    this.password = password;
    }


    }

    (3)
    配置xml文件,并新建sucess.jsp文件,如下:
      
    <action name="LoginAction" method="login" class ="com.imooc.action.LoginAction">
    <result>/success.jsp</result>

    </action>
    页面结果如下:


    点击提交后,前端

    后端:


    2.使用DomainModel 接受参数(xml配置文件同上)
    (1)新建一个包为:com.imooc.po,在包下新建一个User.java文件,内容为username和password的getter和setter函数如下:
    public class User {
    private String username;
    private String password;

    public String getUsername() {
    return username;
    }

    public void setUsername(String username) {
    this.username = username;
    }

    public String getPassword() {
    return password;
    }

    public void setPassword(String password) {
    this.password = password;
    }

    }

    (2)在另一个Java文件里,此处为LoginAction.java文件里获得User对象,并调用,内容如下:
    public class LoginAction extends ActionSupport {
    private User user;

    public void setUser(User user) {
    this.user = user;
    }

    public User getUser() {

    return user;
    }

    public String login(){
    System.out.println(user.getUsername());
    return SUCCESS;
    }
    (3)修改login.jsp文件,必须指定前端提交的参数交给哪个User的对象进行处理,如下所示:
    <form action="LoginAction.do" method="post">
    用户名:<input type="text" name="user.username">
    密码:<input type="password" name="user.password">
    <input type="submit" value="提交">
    </form>
    访问结果同上。
    3.使用ModelDriven接受参数(xml配置文件同上),推荐使用
    (1)User.java同上不改变,修改LoginAction.java 文件,如下:
    public class LoginAction extends ActionSupport implements ModelDriven<User> {
    private User user = new User();


    public String login(){
    System.out.println(user.getUsername());
    return SUCCESS;
    }


    @Override
    public User getModel() {
    return user;
    }
    }
    注意:使用ModelDriven必须实现ModelDriven接口泛型类(泛型为User),必须有实现接口类的方法
    getModel,并且去掉getter和setter方法
    同时,必须声明User对象 private User user = new User()

    (2)修改login.jsp文件:
    <form action="LoginAction.do" method="post">
    用户名:<input type="text" name="username">
    密码:<input type="password" name="password">
    <input type="submit" value="提交">
    </form>

    PS:1.如果后端接受的参数是一个复杂类型的,怎么处理呢?
    (1)在User.java里,有一个String类型的List泛型需要接受,可以作如下处理,在User.java里,添加泛型和getter、setter函数如下:
    private List<String> booklist;

    public List<String> getBooklist() {
    return booklist;
    }

    public void setBooklist(List<String> booklist) {
    this.booklist = booklist;
    }
    (2)在前端login.jsp文件里,这样传入参数:
    <form action="LoginAction.do" method="post">
    用户名:<input type="text" name="username">
    密码:<input type="password" name="password">
    书籍1:<input type="text" name="booklist[0]">
    书籍2:<input type="text" name="booklist[1]">
    <input type="submit" value="提交">
    </form>

    (3)在后端LoginAction.java里这样获取参数(LoginAction.java文件里其他内容同上不改变):
    public String login(){
    System.out.println(user.getUsername());
    System.out.println(user.getBooklist().get(0));
    System.out.println(user.getBooklist().get(1));
    return SUCCESS;
    }
    2.如果泛型是一个对象,又怎么处理呢?
    (1)在User.java里,有一个String类型的List泛型需要接受,可以作如下处理,在User.java里,添加泛型和getter、setter函数如下:
    private List<User> ur;

    public List<User> getUr() {
    return ur;
    }

    public void setUr(List<User> ur) {
    this.ur = ur;
    }
    (2)在前端login.jsp文件里,这样传入参数:


    <form action="LoginAction.do" method="post">
        用户名:<input type="text" name="username">
    密码:<input type="password" name="password">
    书籍1:<input type="text" name="booklist[0]">
    书籍2:<input type="text" name="booklist[1]">
    书籍3:<input type="text" name="ur[0].username">
    书籍4:<input type="text" name="ur[1].username">
    <input type="submit" value="提交">
    </form>

    (3)在后端LoginAction.java里这样获取参数(LoginAction.java文件里其他内容同上不改变):
    
    
    System.out.println(user.getUr().get(0).getUsername());
    System.out.println(user.getUr().get(1).getUsername());
     
     





     
    
    
    
    
    
    
  • 相关阅读:
    putty加了密钥ssh不能登陆,PuTTY:server refused our key问题的解决(转)
    CentOS 7 yum 安装php5.6
    sqlite3.OperationalError: no such table: account_user
    python解决八皇后问题的方法
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 140: invalid continuation byte
    GET /static/plugins/bootstrap/css/bootstrap.css HTTP/1.1" 404 1718
    Java中wait()与notify()理解
    Javac可以编译,Java显示找不到或无法加载主类
    《剑指offer》第三十题:包含min函数的栈
    《剑指offer》第二十九题:顺时针打印矩阵
  • 原文地址:https://www.cnblogs.com/aiyamoer/p/8783028.html
Copyright © 2011-2022 走看看