十一、Struts2封装请求参数的方式
十一、Struts2封装请求参数的方式
方式一、Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的)
注意:表单中的名称要和动作类中的名称一致(这是必须的)
表单代码:
<br /> ---------------封装请求参数到Action中-----------<br />
<form method="post"> 用户名:<input 密码: <input <input </form> |
Struts.xml文件中的代码:
<package <action method="execute">
</action> </package> |
动作类中的代码:
//用动作类封装数据:定义字段名。提供setter方法,setter属性名称和表单的输入域中的名称保持一致 public private String username; private String password;
public this.username = username; }
public this.password = password; }
@Override public String execute() throws Exception { System.out.println(username + ":" + password); //这里可以调用service层的方法保存对象:save(this) return } } |
方式二:动作类和模型分开
表单代码:
<br /> ------封装请求参数到模型对象中,Action和模型分开------<br />
<form method="post"> 用户名:<input 密码: <input <input </form> |
-------------
动作类代码:
//用动作类封装数据:定义字段名。提供setter方法,setter属性名称和表单的输入域中的名称保持一致 public private User user;
public User getUser() { return }
public this.user = user; }
@Override public String execute() throws Exception { System.out.println(user); // 这里可以调用service层的方法保存对象:save(user) return } } |
------------
实体类:User.java
//实体类: public private String username; private String password;
public String getUsername() { return }
public this.username = username; }
public String getPassword() { return }
public this.password = password; }
@Override public String toString() { return } } |
方式三:模型驱动(面试)
表单代码:
<br/>----封装请求参数到模型对象中:Action和模型分开。模型驱动------<br/>
<form method="post"> 用户名:<input 密码: <input <input </form> |
动作类代码:
//动作类和实体类分开 public // 此处必须创建一个对象 private User user = new User();;
@Override public String execute() throws Exception { System.out.println(user); // 这里可以调用service层的方法保存对象:save(user) return }
@Override public User getModel() { //这里需要返回一个对象 return } } |
注:模型驱动实际上是由一个拦截器来做的。modelDriven拦截器来做。把getModel方法返回的对象,压入一个叫做ValueStack的栈顶。struts框架就会根据表单的name属性,调用对应栈顶对象的setter方法,从而把请求参数封装进来。
封装数据到集合类型Collection中:
表单代码:
<body> <br/>-----封装请求参数到集合中:使用场景,批量添加-----<br/> <form 用户名:<input 密码:<input 用户名:<input 密码:<input 用户名:<input 密码:<input <input </form> </body> |
动作类代码:
//数据封装到集合中 public // 定义一个集合 private Collection<User> users;
public Collection<User> getUsers() { return }
// 通过该方法将对象注入到集合中,不用显示的添加对象到集合中 public this.users = users; }
public String execute() throws Exception { for (User user : users) { System.out.println(user); } return } } |
封装数据到Map中
表单代码:
<br/>-----封装请求参数到Map中:使用场景,批量添加-----<br/> <form 用户名:<input 密码:<input 用户名:<input 密码:<input <input </form> |
动作类代码:
//数据封装到集合中 public // 定义一个Map集合 private Map<String, User> users;
// 提供相应的setter和getter方法 public Map<String, User> getUsers() { return }
public this.users = users; }
@Override public String execute() throws Exception { for (Map.Entry<String, User> me : users.entrySet()) { System.out.println(me.getKey() + "=" + me.getValue()); } return } } |
十一、Struts2封装请求参数的方式的更多相关文章
- struts2封装请求参数
利用struts2框架进行将页面请求的参数封装有三种方法 第一种(不推荐) 就是动作类和bean中结合在一起,这样方法比较简单,但是很混乱. 代码: package com.example.actio ...
- struts2获得请求参数的方式
1.用Action的属性接收参数 2.用DomainModel(域模型)接收参数 3.用ModelDriven接收参数 使用这种方式接受参数需要实现ModelDriven接口,
- struts2之请求参数接收
struts2之请求参数接收 1. 采用基本类型接受请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名的属性.请求路径:http:/ ...
- struts2接受请求参数
https://blog.csdn.net/y249839817/article/details/77702745 https://blog.csdn.net/nthack5730/article/d ...
- Servlet请求参数的方式
今天整理了以下几种常用的Servlet请求参数的方式,下面简单地介绍 1)getParameter(String key)返回一个字符串,获得name和key 一样的表单控件的数据,如果有重复的nam ...
- 入门servlet:request获取请求参数通用方式
一.获取请求参数通用方式 1. String getParameter(String name):根据参数名称获取参数值 例:username=flypig&password=2343 2. ...
- struts2获取请求参数的三种方式及传递给JSP参数的方式
接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...
- Struts2接受请求参数三种常用方法
一 接受请求参数主要有三种:属性驱动 对象驱动 模型驱动<model Driven> 方式1:在Action中接收请求参数不需要使用request对象,在Action中定义与请求参数相同名 ...
- 利用Common-BeanUtils封装请求参数
一.BeanUtils介绍 commons-beanutils是利用反射机制对JavaBean的属性进行处理,提供了对于JavaBean的各种处理方法.众所周知,一个JavaBean通常包含了大量的属 ...
随机推荐
- 转载__Java内部类
内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权 ...
- 深入ThreadLocal之一
想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理.首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码 ...
- MySQL 绿色版安装方法图文教程
一.下载,这里使用绿色解压缩版 http://mirror.services.wisc.edu/mysql/Downloads/MySQL-5.1/mysql-noinstall-5.1.32-win ...
- vs 2012 智能提示后为何不能 直接按enter键把提示的内容输入
这个是VS的"建议完成模式"和"标准模式",两者间切换按快捷键:Ctrl+Alt+空格键
- gc 日志格式
对于 Parallel Scavenge + Parallel Old - 新生代:PSYoungGen - 老年代:ParOldGen - 永久代:PSPermGen 后面方括号内部的 " ...
- VisualVM 性能分析概述
VisualVM是一个免费的Java应用监控.分析工具. 简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括 ...
- VS打包资源文件,转自推酷,请小星同学查看
上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...
- JAVA设计模式之依赖倒转原则
3.1 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是 ...
- IOS开发-phonegap上的数据库
phonegap提供的本地数据库功能不可用,最终请教高手后使用SQLitePlugin插件来实现.网上很多都是介绍IOS插件如何编程,少有介绍如何使用插件: 一.插件安装: 1.下载,解压,复制以下文 ...
- Hive参数层面常用优化
1.hive数据仓库权限问题: set hive.warehouse.subdir.inherit.perms=true; 2.HiveServer2的内存 连接的个数越多压力越大,可以加大内存:可以 ...