package com.heima.request;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
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.heima.bean.User;
//演示获取客户端的请求参数
public class ServletReqeust3 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// tes1(request) ;
// tes2(request) ;
// tes3(request) ;
// tes4(request) ;
// tes5(request) ;
tes6(request) ;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
//1.拿到单个表单控件的的值:拿取姓名的值
public void tes1(HttpServletRequest request){
String name = request.getParameter("username") ;
System.out.println(name);
}
//2.拿到表单控件的的值(同名控件的多个值):拿取密码的值
public void tes2(HttpServletRequest request){
String[] password = request.getParameterValues("password") ;
for (String string : password) {
System.out.println(string);
}
}
//3.拿到所有控件的名字和值
public void tes3(HttpServletRequest request){
Enumeration<String> names = request.getParameterNames() ;
while(names.hasMoreElements()){
String name = names.nextElement() ;
String[] values = request.getParameterValues(name) ;
System.out.println(name + ":" + Arrays.asList(values));
}
}
//4.将获取的参数应当封装到javabean中: 采用PropertyDesciptor
public void tes4(HttpServletRequest request){
User user = new User() ;
System.out.println("封装前: " + user);
//获取所有的表单控件的名字
Enumeration<String> names = request.getParameterNames() ;
//循环封装
while(names.hasMoreElements()){
//拿取控件的名字
String name = names.nextElement() ;
//控件的值
String[] values = request.getParameterValues(name) ;
try {
PropertyDescriptor pd = new PropertyDescriptor(name, User.class) ; //拿到User对象的属性name的属性描述器
Method m = pd.getWriteMethod() ; //拿到属性的set方法
//为了兼容jdk1.4的版本,虚拟机会将values拆分成一个一个值进行传递
if(values !=null && values.length == 1)
m.invoke(user, values) ;
else{
//方法一:强转成一个object
//m.invoke(user, (Object)values) ;
//方法二:创建一个数组
m.invoke(user, new Object[]{values}) ;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("封装后: " + user);
}
//5.将获取的参数应当封装到javabean中: 采用BeanUtils
public void tes5(HttpServletRequest request){
User user = new User() ;
System.out.println("封装前: " + user);
//获取所有的表单控件的名字
Enumeration<String> names = request.getParameterNames() ;
//循环封装
while(names.hasMoreElements()){
//拿取控件的名字
String name = names.nextElement() ;
//控件的值
String[] values = request.getParameterValues(name) ;
try {
BeanUtils.setProperty(user, name, values) ;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("封装后: " + user);
}
//6.将获取的参数应当封装到javabean中: 采用BeanUtils的另一种方式
public void tes6(HttpServletRequest request){
User user = new User() ;
System.out.println("封装前: " + user);
//拿到键值对的映射
Map<String,String[]> map = request.getParameterMap() ;
for (Map.Entry<String, String[]> entry : map.entrySet()) { //entry就是键值对
String name = entry.getKey() ; //拿到键
String[] values = entry.getValue() ; //拿到值
try {
BeanUtils.setProperty(user, name, values) ;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("封装后: " + user);
}
//7.终极必杀技 (采用beanUtils类)(推荐)
public void tes7(HttpServletRequest request){
User user = new User() ;
System.out.println("封装前: " + 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("封装后: " + user);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JAVAWEB-09:HttpServletRequest对象&会话管理之Cookie
共66个文件
class:20个
java:20个
docx:4个
需积分: 46 10 下载量 148 浏览量
2015-04-01
08:59:12
上传
评论
收藏 2.71MB ZIP 举报
温馨提示
JAVAWEB-09:HttpServletRequest对象&会话管理之Cookie
资源推荐
资源详情
资源评论
收起资源包目录
资料.zip (66个子文件)
资料
commons-beanutils-1.8.3.jar 227KB
购买商品模拟图.docx 28KB
commons-logging-1.1.1.jar 59KB
编码图.docx 29KB
request&response课堂笔记.docx 254KB
request&会话课堂笔记.docx 194KB
源码
day09_00_httpServletRequest
.project 2KB
.mymetadata 354B
src
com
heima
request
ServletReqeust4.java 1KB
ServletRequest6.java 1KB
ServletRequest8.java 993B
ServletRequest7.java 766B
ServletRequest9.java 768B
ServletRequest2.java 1KB
ServletRequest1.java 2KB
ServletReqeust3.java 5KB
ServletReqeust5.java 1KB
bean
User.java 2KB
WebRoot
WEB-INF
classes
com
heima
request
ServletRequest7.class 1KB
ServletRequest8.class 2KB
ServletRequest1.class 3KB
ServletReqeust5.class 1KB
ServletRequest6.class 2KB
ServletReqeust4.class 2KB
ServletRequest9.class 1KB
ServletRequest2.class 2KB
ServletReqeust3.class 5KB
bean
User.class 2KB
lib
commons-beanutils-1.8.3.jar 227KB
commons-logging-1.1.1.jar 59KB
web.xml 3KB
index.jsp 834B
register.html 764B
login.html 625B
META-INF
MANIFEST.MF 36B
register1.html 2KB
.myeclipse
.classpath 529B
1.gif 782KB
day09_01_cookie
.project 2KB
.mymetadata 318B
src
two
utils
BookUtils.java 972B
servlet
ShowAllBookServlet.java 2KB
ShowDetailInfoServlet.java 3KB
bean
Book.java 1KB
com
heima
cookie1
ServletDemo1.java 756B
cookie
ServletCookie1.java 2KB
ServletCookie2.java 877B
one
MainServlet.java 711B
ServletCookie3.java 2KB
ServletCookie4.java 2KB
WebRoot
WEB-INF
classes
two
utils
BookUtils.class 2KB
servlet
ShowDetailInfoServlet.class 4KB
ShowAllBookServlet.class 3KB
bean
Book.class 2KB
com
heima
cookie1
ServletDemo1.class 1KB
cookie
ServletCookie1.class 2KB
ServletCookie2.class 1KB
one
ServletCookie4.class 2KB
MainServlet.class 1KB
ServletCookie3.class 2KB
lib
web.xml 3KB
index.jsp 834B
META-INF
MANIFEST.MF 36B
.myeclipse
.classpath 529B
ppt
0103Request&Response.ppt 905KB
0104会话管理.ppt 512KB
共 66 条
- 1
资源评论
faith_yee
- 粉丝: 36
- 资源: 46
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 传统网页UI设计在移动应用开发中的应用研究.pdf
- 基于pytorch实现BERT+BiLSTM+CRF实现中文命名实体识别源码.zip
- 校园帮项目,毕业设计/课程设计/javaWeb/SSM
- C++ plotting library,matplotlib-cpp-master.zip
- 案例源码matplotlib-examples-master.zip
- 基于JavaScript 实现的KMP 算法
- 基于C++实现二叉树的创建,遍历,添加,查找与删除
- 基于C语言实现二叉树的基本操作
- 毕业设计基于STM32的测量温度与压力的数据处理设计C语言完整源码+论文.zip
- 基于MATLAB的PCA算法人脸识别项目源码+GUI界面+说明文档.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功