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

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

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

  1. <form action="LoginAction.do" method="post">
    用户名:<input type="text" name="username">
    密码:<input type="password" name="password">
    <input type="submit" value="提交">
    </form>
  2.  
  3. 注意:其中action 方法的后缀名称.do,因为在前面的内容里设置了后缀名,所以这里需要注意。要不然后面会出现:404--The origin server did not find a current representation for the target resource or is not willing to disclose that one 这种错误。
  4. (2)新建LoginAction.do文件,即Java文件LoginAction,并构造setter和getter函数如下
  1. public class LoginAction extends ActionSupport {
    private String username;
    private String password;
  2.  
  3. public String login(){
    System.out.println(username);
    return SUCCESS;
    }
  1. public String getUsername() {
    return username;
    }
  2.  
  3. public void setUsername(String username) {
    this.username = username;
    }
  4.  
  5. public String getPassword() {
    return password;
    }
  6.  
  7. public void setPassword(String password) {
    this.password = password;
    }
  8.  
  9. }
  10.  
  11. 3)配置xml文件,并新建sucess.jsp文件,如下:
      
  1. <action name="LoginAction" method="login" class ="com.imooc.action.LoginAction">
    <result>/success.jsp</result>
  2.  
  3. </action>
  1. 页面结果如下:
  2.  

  3. 点击提交后,前端

后端:

  1. 2.使用DomainModel 接受参数(xml配置文件同上)
    1)新建一个包为:com.imooc.po,在包下新建一个User.java文件,内容为usernamepasswordgettersetter函数如下:
  1. public class User {
    private String username;
    private String password;
  2.  
  3. public String getUsername() {
    return username;
    }
  4.  
  5. public void setUsername(String username) {
    this.username = username;
    }
  6.  
  7. public String getPassword() {
    return password;
    }
  8.  
  9. public void setPassword(String password) {
    this.password = password;
    }
  10.  
  11. }
  12.  
  13. 2)在另一个Java文件里,此处为LoginAction.java文件里获得User对象,并调用,内容如下:
  1. public class LoginAction extends ActionSupport {
    private User user;
  2.  
  3. public void setUser(User user) {
    this.user = user;
    }
  4.  
  5. public User getUser() {
  6.  
  7. return user;
    }
  8.  
  9. public String login(){
    System.out.println(user.getUsername());
    return SUCCESS;
    }
  1. 3)修改login.jsp文件,必须指定前端提交的参数交给哪个User的对象进行处理,如下所示:
  1. <form action="LoginAction.do" method="post">
    用户名:<input type="text" name="user.username">
    密码:<input type="password" name="user.password">
    <input type="submit" value="提交">
    </form>
  1. 访问结果同上。
  1. 3.使用ModelDriven接受参数(xml配置文件同上),推荐使用。
    1User.java同上不改变,修改LoginAction.java 文件,如下:
  1. public class LoginAction extends ActionSupport implements ModelDriven<User> {
    private User user = new User();
  2.  
  3. public String login(){
    System.out.println(user.getUsername());
    return SUCCESS;
    }
  4.  
  5. @Override
    public User getModel() {
    return user;
    }
    }
    注意:使用ModelDriven必须实现ModelDriven接口泛型类(泛型为User),必须有实现接口类的方法getModel,并且去掉gettersetter方法。
    同时,必须声明User对象 private User user = new User()

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

  1. PS:1.如果后端接受的参数是一个复杂类型的,怎么处理呢?
    (1)在User.java里,有一个String类型的List泛型需要接受,可以作如下处理,在User.java里,添加泛型和gettersetter函数如下:
  1. private List<String> booklist;
  2.  
  3. public List<String> getBooklist() {
    return booklist;
    }
  4.  
  5. public void setBooklist(List<String> booklist) {
    this.booklist = booklist;
    }
  1. 2)在前端login.jsp文件里,这样传入参数:
  1. <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>
  2.  
  3. (3)在后端LoginAction.java里这样获取参数(LoginAction.java文件里其他内容同上不改变):
  1. public String login(){
    System.out.println(user.getUsername());
    System.out.println(user.getBooklist().get(0));
    System.out.println(user.getBooklist().get(1));
    return SUCCESS;
    }
  1. 2.如果泛型是一个对象,又怎么处理呢?
  1. (1)在User.java里,有一个String类型的List泛型需要接受,可以作如下处理,在User.java里,添加泛型和gettersetter函数如下:
  1. private List<User> ur;
  2.  
  3. public List<User> getUr() {
    return ur;
    }
  4.  
  5. public void setUr(List<User> ur) {
    this.ur = ur;
    }
    2)在前端login.jsp文件里,这样传入参数:
  6. <form action="LoginAction.do" method="post">
  1. 用户名:<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>
  1. 3)在后端LoginAction.java里这样获取参数(LoginAction.java文件里其他内容同上不改变):
  1.  
  1. System.out.println(user.getUr().get(0).getUsername());
    System.out.println(user.getUr().get(1).getUsername());
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  
  1.  

Struts 2 初步入门(五)之接受参数的更多相关文章

  1. Struts 2 初步入门(三)

    接Struts 2初步入门(二) 若想用多个通配符设定访问: <struts> <package name="default" namespace="/ ...

  2. Struts 2 初步入门(六)之处理结果类型

    Struts2 处理流程: 用户请求--->struts框架--->Action控制器--->struts框架--->视图资源 xml配置文件里: <result nam ...

  3. Struts 2 初步入门(二)

    Struts 2 动态方法调用 1.在HelloWorldAction中添加两个新的方法如下: import com.opensymphony.xwork2.ActionSupport; public ...

  4. Struts 2 初步入门(一)

    搭建Struts 2环境步骤 下载jar包----->创建web项目---->创建并完善相关配置文件---->创建action并测试启动 下载jar包访问网站:http://stru ...

  5. Angular2入门系列(五)———— 路由参数设置

    Angular2入门系列(五)---- 路由参数设置路由配置: { path: '', component: CarProFile, children: [ { path: 'add', compon ...

  6. Spring MVC(五)--控制器通过注解@RequestParam接受参数

    上一篇中提到,当前后端命名规则不一致时,需要通过注解@RequestParam接受参数,这个注解是作用在参数上.下面通过实例说明,场景如下: 在页面输入两个参数,控制器通过注解接受,并将接受到的数据渲 ...

  7. openresty 前端开发入门五之Mysql篇

    openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...

  8. 脑残式网络编程入门(五):每天都在用的Ping命令,它到底是什么?

    本文引用了公众号纯洁的微笑作者奎哥的技术文章,感谢原作者的分享. 1.前言   老于网络编程熟手来说,在测试和部署网络通信应用(比如IM聊天.实时音视频等)时,如果发现网络连接超时,第一时间想到的就是 ...

  9. C#基础入门 五

    C#基础入门 五 递归 递归调用:一个方法直接或间接地调用了它本身,就称为方法的递归调用. 递归方法:在方法体内调用该方法本身. 递归示例 public long Fib(int n) { if(n= ...

随机推荐

  1. 数据从mysql迁移至oracle时知识点记录(一)

    最近在做数据的迁移,再将数据从mysql迁移至oracle时,部分sql语句进行了修改,在此对部分知识点进行记录: 参考资料:https://dev.mysql.com/doc/refman/5.5/ ...

  2. RedHat(Linux)下安装Python3步骤

    1. 下载解压.$ wget https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz$ tar zxvf Python-3.4.1.tgz 2 ...

  3. nginx的使用教程

    一.基本概念 1.1 正向代理和反向代理 (参考文档:https://www.cnblogs.com/hafiz/p/7233306.html) 假设我们给定客户端A.代理服务器B.以及最终服务器C ...

  4. in_array的三个参数

    needle 待搜索的值. haystack 待搜索的数组. strict 如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 hays ...

  5. java 四种线程池的异同

    四种线程池的区别仅仅在于executors让threadpoolexecutor的构造器的参数不同,即核心线程池数,最大线程池数等不同.但是其他的,例如终止线程池等都是一样的

  6. C# 定时调用方法

    private void button1_Click(object sender, EventArgs e) { System.Timers.Timer timer = new System.Time ...

  7. Python 编程快速上手 第十七章 操作图像

    前言 在这一章节,讲了关于图像的三个方面的内容: 获得图像的相关信息:例如 RGBA 值,尺寸... 对图像进行编辑操作:例如 旋转,缩放... 在图像上绘制形状:例如 矩形,圆形... [Image ...

  8. English trip V1 - 19.Where Am I? 我在哪里?Teacher:Patrick Key:Ask for and directions

    In this  lesson you will learn to ask for and give directions. 本节课你将学习到学会问路和指路. 课上内容(Lesson) 人类的几种感: ...

  9. c# winform 中的坐标系

    从数学角度讲,Point是一个二维矢量,包含两个公共整型属性,属性用大写X和Y(c#中公共属性一般约定以大写字母开头).当坐标不是整数值是float时,用PointF代替Point使用. 常用的Siz ...

  10. 20170822xlVBA ExportCellPhone

    Public Sub GetCellPhone() Dim CellPhone As String Dim Arr As Variant Dim Brr As Variant Dim n As Lon ...