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对象多种方法封装表单数据的更多相关文章

  1. 框架学习之Struts2(二)---基本配置和封装表单数据

    一.结果页面配置 1.局部结果页面配置 <!-- 局部结果页面配置--> <package name = "demo" extends = "strut ...

  2. 利用BeanUtils工具类封装表单数据

    一.BeanUtils工具类的使用 1.首先导入BeanUtils工具类的jar包 commons-beanutils-1.8.0.jar commons-logging-1.1.1.jar 2.se ...

  3. httpclient模拟post请求json封装表单数据

    好长时间不更博了,主要肚子里没什么好墨水,哈哈.废话不说上代码. public static String httpPostWithJSON(String url) throws Exception ...

  4. SpringMVC封装表单数据

    1.domain类 package com.xiaostudy.domain; public class User { private int id; private String username; ...

  5. 【flask】处理表单数据

     表单数据的处理涉及很多内容,除去表单提交不说,从获取数据到保存数据大致会经历以下步骤: 解析请求,获取表单数据. 对数据进行必要的转换,比如将勾选框的植转换为Python的布尔值. 验证数据是否符合 ...

  6. Servlet学习笔记(二):表单数据

    很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法. 1.GET 方法:GET 方法 ...

  7. IT兄弟连 JavaWeb教程 Servlet表单数据

    很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编 ...

  8. Servlet表单数据

    1.GET 方法 GET 方法向页面请求发送已编码的用户信息.页面和已编码的信息中间用 ? 字符分隔,如下所示: http://www.test.com/hello?key1=value1&k ...

  9. jQuery使用serialize(),serializeArray()方法取得表单数据+字符串和对象类型两种表单提交的方法

    原始form表单值获取方式(手动): $.ajax({ type: "POST", url: "ajax.php", data: "Name=摘取天上 ...

随机推荐

  1. bootstrap兼容IE8 解决办法

    bootstrap有使用CSS3,所以ie9以下浏览器不会很顺畅.IE9以下的兼容性不是很好.IE本身就是怪胎,就搞一些和外界标准不一致.搞得web开发考虑这考虑那的兼容性,蛋疼! 基本上css3的没 ...

  2. 将excel数据导入内表的函数

    call function 'TEXT_CONVERT_XLS_TO_SAP'    exporting      i_tab_raw_data       = lt_raw "开始行    ...

  3. Java ,单实例 多线程 ,web容器,servlet与struts1-2.x系列,线程安全的解决

    1.Servlet是如何处理多个请求同时访问呢? 回答:servlet是默认采用单实例,多线程的方式进行.只要webapp被发布到web容器中的时候,servlet只会在发布的时候实例化一次,serv ...

  4. 高级PHP应用程序漏洞审核技术

    前言 PHP是一种被广泛使用的脚本语言,尤其适合于web开发.具有跨平台,容易学习,功能强大等特点,据统计全世界有超过34%的网站有php的应 用,包括Yahoo.sina.163.sohu等大型门户 ...

  5. PHP 中的随机数——你觉得可靠么?

    本文主要分析以加密为目的的随机数生成问题.PHP 5 并未提供生成强加密随机数的简便机制,但是,PHP 7 引入了两个 CSPRNG 函数以解决该问题.系 OneAPM 工程师编译整理. 什么是 CS ...

  6. [OJ] Insert Interval

    LintCode #30. Insert Interval (Easy) LeetCode #57. Insert Interval (Hard) class Solution { public: v ...

  7. SQL中Case When的使用方法

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END       --Case搜索 ...

  8. 员工部门表综合查询SQL

    --数据库的表设计如下: --部门:部门编号,部门名称,地址: --员工:员工编号,员工名字,职务,管理编号,入职日期,薪资,奖金,部门编号: --创建部门表: CREATE TABLE dept( ...

  9. ajax向后台传值

    function save_person(){ //保存个人信息编辑 var data = getFormJson(".row"); //获取表单数据 $.post(clerk_u ...

  10. $(function(){})里面不能声明定义函数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...