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());
     
     





     
    
    
    
    
    
    
  • 相关阅读:
    BZOJ 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
    AC日记——绿豆蛙的归宿 codevs 2488
    AC日记——codeforces Ancient Berland Circus 1c
    AC日记——平衡树练习 codevs 4244
    AC日记——[NOIP2015]运输计划 cogs 2109
    AC日记——pigs poj 1149
    AC日记——Card Game codeforces 808f
    AC日记——斐波那契数列(升级版) 洛谷 P2626
    AC日记——Collectors Problem uva 10779
    AC日记——中山市选[2009]小明的游戏 bzoj 2464
  • 原文地址:https://www.cnblogs.com/aiyamoer/p/8783028.html
Copyright © 2011-2022 走看看