请求参数封装到JavaBean从入门到精通
来源:互联网 发布:sql server 基础语法 编辑:程序博客网 时间:2024/06/06 07:34
Web开发中,客户端提交的请求参数进行封装:主要两种方式一种是借助javase类中的PropertyDescriptor,另一种方法是借助第三方框架beanutils。
封装Demo如下:
package com.itheima.request;import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.io.IOException;import java.io.PrintWriter;import java.lang.reflect.Method;import java.util.Enumeration;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;import com.itheima.domain.User;/*GET方式: URI?username=abc&password=123 username和password就是请求参数POST方式: 请求正文中 username=abc&password=123 */public class RequestDemo3 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { test7(request, response); } catch (Exception e) { e.printStackTrace(); } } //实际开发中怎么玩:封装对象 借助第三方开发包 BeanUtils 终极版 private void test7(HttpServletRequest request, HttpServletResponse response) throws IOException, Exception { User user = new User(); System.out.println("封装前:"+user); //表单的字段名和User中的属性名一致 BeanUtils.populate(user, request.getParameterMap()); System.out.println("封装后:"+user); } //实际开发中怎么玩:封装对象 借助第三方开发包 BeanUtils private void test6(HttpServletRequest request, HttpServletResponse response) throws IOException, Exception { User user = new User(); System.out.println("封装前:"+user); //表单的字段名和User中的属性名一致 Map<String,String[]> map = request.getParameterMap();//key:表单中input的name value:请求参数的值数组 for(Map.Entry<String, String[]> me:map.entrySet()){ String paramName = me.getKey(); String paramValues[] = me.getValue(); BeanUtils.setProperty(user, paramName, paramValues);//调用对应的setter方法 } System.out.println("封装后:"+user); } //实际开发中怎么玩:封装对象(技术点:反射+内省) 参考:java基础加强 private void test5(HttpServletRequest request, HttpServletResponse response) throws IOException, Exception { User user = new User(); System.out.println("封装前:"+user); //表单的字段名和User中的属性名一致 Map<String,String[]> map = request.getParameterMap();//key:表单中input的name value:请求参数的值数组 for(Map.Entry<String, String[]> me:map.entrySet()){ String paramName = me.getKey(); String paramValues[] = me.getValue(); //调用User中对应的写属性:比如当前username,需要调用setUsername(paramValues); PropertyDescriptor pd = new PropertyDescriptor(paramName, User.class);//属性描述器:就是得getter或setter方法的类 Method method = pd.getWriteMethod();// setter方法 if(paramValues!=null){ if(paramValues.length==1){ method.invoke(user, paramValues);//有一个数组(参考反射main方法) }else{ method.invoke(user, (Object)paramValues); } } } System.out.println("封装后:"+user); } //实际开发中怎么玩:封装对象(技术点:反射+内省) 参考:java基础加强 private void test4(HttpServletRequest request, HttpServletResponse response) throws IOException, Exception { User user = new User(); System.out.println("封装前:"+user); //表单的字段名和User中的属性名一致 Enumeration e = request.getParameterNames(); while(e.hasMoreElements()){ String paramName = (String) e.nextElement();//每一个form中的input域的name 和User中的属性一致 String paramValues[] = request.getParameterValues(paramName); //调用User中对应的写属性:比如当前username,需要调用setUsername(paramValues); PropertyDescriptor pd = new PropertyDescriptor(paramName, User.class);//属性描述器:就是得getter或setter方法的类 Method method = pd.getWriteMethod();// setter方法 if(paramValues!=null){ if(paramValues.length==1){ method.invoke(user, paramValues);//有一个数组(参考反射main方法) }else{ method.invoke(user, (Object)paramValues); } } } System.out.println("封装后:"+user); } //获取所有的请求参数 private void test3(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); Enumeration e = request.getParameterNames();//获取所有请求参数名 while(e.hasMoreElements()){ String paramName = (String)e.nextElement();//请求参数名 String values [] = request.getParameterValues(paramName); out.write(paramName+"="); for(String v:values){ out.write(v+","); } out.write("<br/>"); } } //为什么返回的是String或String[]:用户的所有输出都是字符串 //获取重名的请求参数 private void test2(HttpServletRequest request, HttpServletResponse response) throws IOException { String passwords[] = request.getParameterValues("password"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); for(String p:passwords) out.write(p+"<br/>"); } //获取单一的请求参数:重名的特例 private void test1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String code = request.getParameter("code"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.write(username+":"+password+":"+code); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
阅读全文
0 0
- 请求参数封装到JavaBean从入门到精通
- 从入门到精通
- JAVA从入门到精通(9)-- 封装
- JavaWeb从入门到精通(二)-http请求协议
- ajax发送异步请求从入门到精通
- 免费报表XDOC从入门到精通(四)参数
- Google从入门到精通
- JAVA从入门到精通
- GOOGLE从入门到精通
- 搜索引擎从入门到精通
- RMS从入门到精通
- RSS从入门到精通
- RSS从入门到精通
- RSS从入门到精通
- VI 从入门到精通
- 搜索引擎从入门到精通
- JAVA从入门到精通
- VI - 从入门到精通
- X2Go Client下载与使用(新手向)
- 统计每月订单数量并生成折线图
- SQL获取AWR信息
- Oracle日期转换处理
- TCP定时器
- 请求参数封装到JavaBean从入门到精通
- 13_ARM汇编自学笔记指令系统之批量数据加载存储指令
- adb命令大全
- 暑假学习--作业总结一
- 决策树(decision tree)的自我理解 (下) 关于剪枝和连续值缺失值处理
- 关于进制转换,16进制转10进制,其它进制转10进制
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
- Android常用的四种布局使用方法
- C++学习笔记-多态