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



 


												

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. Error: Program type already present: okhttp3.Authenticator$1

    在app中的build.gradle中加入如下代码, configurations { all*.exclude group: 'com.google.code.gson' all*.exclude ...

  2. SpringBoot学习路线

    网上也有很多github资源,都是自己学习Spring Boot时候,自己练的代码 虽然现在最新的版本用2.1.3.RELEASE版本,以前版本的demo运行可能会遇到错误.但是有总比没有要好,不是么 ...

  3. IIS字体 404错误

    问题:最近在IIS上部署web项目的时候,发现浏览器总是报找不到woff.woff2字体的错误.导致浏览器加载字体报404错误,白白消耗了100-200毫秒的加载时间. 原因:因为服务器IIS不认SV ...

  4. [转][smart3d]Smart3D之手动配置 S3C 索引加载全部的OSGB瓦片数据

    转自:https://blog.csdn.net/u013719339/article/details/77840728/ 一.须知: S3C是Smart3D内部格式,实质上是一个分块模型的索引,可以 ...

  5. 力扣(LeetCode)709. 转换成小写字母

    实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串. 示例 1: 输入: "Hello" 输出: & ...

  6. Android开发 打开已存在的项目(以虹软人脸识别sdk的demo为例)

    详细流程参考博客https://blog.csdn.net/z979451341/article/details/79468785 个人遇到的问题与注意点 1.下载Demo后忘记修改appid和sdk ...

  7. public,protected,private

    1.public:public表明该数据成员.成员函数是对所有用户开放的,所有用户都可以直接进行调用 2.private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直 ...

  8. nginx+php上传大文件配置

    //nginx- //上传文件大小限制,需在nginx.conf中配置 'client_max_body_size' => '500M', //php- //允许上传文件大小的最大值,需在php ...

  9. Ruby 基础教程 第一部分总结

    第一部分:Ruby 初体验 第一章: Ruby 初探 前言 开头的这一章节讲了一些十分基础的内容,重要的几个话题有: ruby 命令的执行方法 对象.方法的概念 常见的打印方法 ruby 命令的执行方 ...

  10. JavaScript 第十章总结:first class functions

    前言 这一章的内容是 advanced knowledge and use of functions. 讲了关于 function 的使用的一些特殊的方面. function expression 的 ...