request对象多种方法封装表单数据
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// test1(request);
// test2(request);
test3(request);
}
//获取单个控件的值
public void test1(HttpServletRequest request){
String name = request.getParameter("username");
System.out.println("name=" + name);
}
//获取同名控件的值
public void test2(HttpServletRequest request){
String[] age = request.getParameterValues("age");
for (String string : age) {
System.out.println("string=" + string);
}
}
//获取全部控件
public void test3(HttpServletRequest request){
//获取所有控件的名字
System.out.println("--------request--------" + request.toString());
Enumeration<String> enu = request.getParameterNames();
while(enu.hasMoreElements()){
String name = enu.nextElement();//控件的名字
//可能有多个重复
String[] values = request.getParameterValues(name);//控件的值
for (String value : values) {
System.out.println(name + "---" + value);
}
}
}
//将表单中的所有值封装到JavaBean中
第四种方法:将表单中的所有值封装到JavaBean中:采用PropertyDesceipt方法
首先添加一个Javabean:实现序列化接口: implements Serializable 表示对象可以被序列化
public class User implements Serializable{ 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;
}
@Override
public String toString() {
return "User [username=" + username + ", password="
+ Arrays.toString(password) + "]";
}
}
实现方法:
public void test4(HttpServletRequest request){
User user = new User();
Enumeration<String> enu = request.getParameterNames();
while(enu.hasMoreElements()){
//拿到控件的名字
String name = enu.nextElement();
//控件的值
String[] values = request.getParameterValues(name); try {
//拿到属性name的属性描述器
PropertyDescriptor pd = new PropertyDescriptor(name, User.class);
//将值注入到属性中
//拿到写描述器
Method md = pd.getWriteMethod();
//为了兼容jdk1.4,invoke方法在执行时将参数拆开进行传递,所以导致IllegalArgumentException
if(values.length == ){
md.invoke(user, values);
}else{
//数组被拆开了
//解决办法1:
// md.invoke(user, (Object)values);
//解决办法2:
md.invoke(user, new Object[] {values});
}
// md.invoke(user, values);
} catch (IntrospectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
System.out.println("封装后的值:"+ user);
}
第六种方法:BeanUtils类封装
//将表单中的所有值封装到JavaBean中,采用第三方jar进行:BeanUtils类
//需要:commons-logging-1.1.1.jar commons-beanutils-1.8.3.jar
public void test5(HttpServletRequest request){
User user = new User();
System.out.println("封装前:" + user); Enumeration<String> enu = request.getParameterNames();
while(enu.hasMoreElements()){
String name = enu.nextElement();
String[] values = request.getParameterValues(name);
//采用BeanUtils类封装
try {
BeanUtils.setProperty(user, name, values);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("封装后" + user);
}
第七种:request.getParameterMap(); BeanUtils
//页面所有的数据传递都是String类型
public void test6(HttpServletRequest request){
User user = new User();
System.out.println("封装前:" + user);
Map<String, String[]> map = request.getParameterMap(); for (Map.Entry<String , String[]> entry : map.entrySet()) {
//拿到控件的名字
String name = entry.getKey();
String[] values = entry.getValue();
//封装数据
try {
BeanUtils.setProperty(user, name, values);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("封装后" + user);
}
推荐方法
//推荐方法
public void test7(HttpServletRequest request){
User user = new User();
try {
BeanUtils.populate(user, request.getParameterMap());
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("封装后777" + user);
}
request对象多种方法封装表单数据的更多相关文章
- 框架学习之Struts2(二)---基本配置和封装表单数据
一.结果页面配置 1.局部结果页面配置 <!-- 局部结果页面配置--> <package name = "demo" extends = "strut ...
- 利用BeanUtils工具类封装表单数据
一.BeanUtils工具类的使用 1.首先导入BeanUtils工具类的jar包 commons-beanutils-1.8.0.jar commons-logging-1.1.1.jar 2.se ...
- httpclient模拟post请求json封装表单数据
好长时间不更博了,主要肚子里没什么好墨水,哈哈.废话不说上代码. public static String httpPostWithJSON(String url) throws Exception ...
- SpringMVC封装表单数据
1.domain类 package com.xiaostudy.domain; public class User { private int id; private String username; ...
- 【flask】处理表单数据
表单数据的处理涉及很多内容,除去表单提交不说,从获取数据到保存数据大致会经历以下步骤: 解析请求,获取表单数据. 对数据进行必要的转换,比如将勾选框的植转换为Python的布尔值. 验证数据是否符合 ...
- Servlet学习笔记(二):表单数据
很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法. 1.GET 方法:GET 方法 ...
- IT兄弟连 JavaWeb教程 Servlet表单数据
很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编 ...
- Servlet表单数据
1.GET 方法 GET 方法向页面请求发送已编码的用户信息.页面和已编码的信息中间用 ? 字符分隔,如下所示: http://www.test.com/hello?key1=value1&k ...
- jQuery使用serialize(),serializeArray()方法取得表单数据+字符串和对象类型两种表单提交的方法
原始form表单值获取方式(手动): $.ajax({ type: "POST", url: "ajax.php", data: "Name=摘取天上 ...
随机推荐
- uva 1453 - Squares
旋转卡壳算法: 直接在这个上面粘的模板 主要用途:用于求凸包的直径.宽度,两个不相交凸包间的最大距离和最小距离··· 这题就是求凸包的直径 #include <cstdio> #inclu ...
- uva 1267 - Network
这个题目关键在于把无根树变成有根树:这个用dfs: 然后用贪心的方法,从最深的那层开始,每次找到节点的上k层,建一个服务器,然后用一个dfs把这个服务器能够覆盖的节点标记: #include<c ...
- underscore demo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 你晓得吗?大多数企业根本没有做到 DevOps!
作为当代 IT 企业提升效率的葵花宝典,DevOps 对 IT 企业效率的提升有目共睹 ,一时之间各大企业纷纷用提升效率的 DevOps 开发.协作.管理工具武装自己. 对比 2014 年上半年,CS ...
- 网页增重不可控?试试 OneAPM Cloud Test
再次发生了!HTTP Archive 报告在收集了 50 万个最受欢迎的网站的技术信息,经过整理分析后指出:2015 年,网页的平均「体重」增加了 16%,达到了 2,262 KB,近似于 2014 ...
- 通过硬件层提高Android动画的性能
曾有许多人问我为什么在他们开发的应用中,动画的性能表现都很差.对于这类问题,我往往会问他们:你们有尝试过在硬件层解决动画的性能问题么? 我们都知道,在播放动画的过程中View在每一帧动画的显示时重绘自 ...
- winRAR将单独文件分别压缩打包
2014-4-7 首先选中多个需要打包的文件,右键-->添加到压缩文件-->选中"文件"选项卡-->勾选下面的"把每个文件压缩到单独文件中. 如下图所示
- 详谈easyui datagrid增删改查操作
转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...
- zoj 3620 Escape Time II
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4744 Escape Time II Time Limit: 2 Seconds ...
- 奇怪的Lisp和难懂的计算机程序的构造和解释
最近用新买的 Kindle 看<黑客与画家>的Lisp部分,发现作者 Paul Graham 很推崇 Lisp 语言,并且认为其它语言都没有Lisp简洁“成熟”,并且举例证明其它语言都在往 ...