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=摘取天上 ...
随机推荐
- [BZOJ 2048] [2009国家集训队]书堆 【调和级数】
题目链接:BZOJ - 2048 题目分析 只有一本书时,这本书的重心落在桌子边缘上,伸出桌面的长度就是 1/2. 有两本书时,第一本书的重心就落在第二本书的边缘上,两本书的重心落在桌子边缘上,两本书 ...
- JAVA 反序列化攻击
Java 反序列化攻击漏洞由 FoxGlove 的最近的一篇博文爆出,该漏洞可以被黑客利用向服务器上传恶意脚本,或者远程执行命令. 由于目前发现该漏洞存在于 Apache commons-collec ...
- js常用操作代码
页面前进后退<input type=button value=刷新 onclick="window.location.reload()"><input type= ...
- bzoj2242
快速幂 扩展欧几里得 baby-step-giant-step 可以自行baidu 程序附部分注释 ; type link=^node; node=record re,wh:l ...
- POJ_2184_Cow_Exhibition_(动态规划,背包)
描述 http://poj.org/problem?id=2184 n只奶牛,每只都有智商s_i和情商f_i,取出若干只,保证智商之和与情商之和都不为负的情况下,让两者之和最大. Cow Exhibi ...
- js 弹出页面传值
有页面a和页面b,页面a中有一个文本框和一个按钮,点按钮弹出页面b,页面b也有一个文本框,在文本框中输入值,在不经过后台用js实现把页面b的文本框的值传到页面a,赋给页面a的文本框 a页面代码< ...
- structs 源码示例
http://blog.csdn.net/wwwihpccn/article/details/5725518
- LoadRunner_Analysis(z) 分析
LoadRunner_Analysis(z) 分析 lr_Analysis(z) Analysis Summary Page Analysis Summary(分析总结页面) 分为三个部分: Stat ...
- msm8610 lcd driver code analysis
---恢复内容开始--- 1 lcd probe The probe sequence is determined by compilation sequence: mdss-mdp3-objs = ...
- 图片上传unexpected end of stream
第二次上传头像图片的时候出现 unexpected end of stream 解决办法: 将第一次图片上传成功后做以下操作即可: mBitmapFile.delete(); mBitmapFile ...