Request介绍

1. Requst对象获取请求行/头方法

1.1 Request原理

request和response是服务器创建的两个对象给我们使用,request封装了浏览器发送过来的所有数据,如果是获取浏览器发送过来的信息那么就找request对象,如果想告诉浏览器展示信息那么就找response对象;
在这里插入图片描述

1.2 Requst对象获取请求行方法

1. 获取请求方式 :GET
	String getMethod()  
2. (*)获取虚拟目录:/day14
	String getContextPath()
3. 获取Servlet路径: /demo1
	String getServletPath()
4. 获取get方式请求参数:name=zhangsan
	String getQueryString()
5. (*)获取请求URI:/day14/demo1
	String getRequestURI():		/day14/demo1	不全的路径
	StringBuffer getRequestURL()  :http://localhost/day14/demo1   全路径
	URL:统一资源定位符 : http://localhost/day14/demo1	中华人民共和国
	URI:统一资源标识符 : /day14/demo1				共和国

6. 获取协议及版本:HTTP/1.1
	String getProtocol()
7. 获取客户机的IP地址:
	String getRemoteAddr()

重点掌握:获取虚拟目录的getServletPath()方法,getRequestURI()方法作为一个次掌握的方法

1.3 Requst对象获取请求头方法

1. String getHeader(String name) ;根据指定的请求头获取请求头的值;
2. Enumeration<E> getHeaderNames() ;获取所有请求头

2.Request对象获取请求参数方法

2.1 获取请求参数的三个方法

String getParameter(String name)  :根据一个name获取一个value值		
String[] getParameterValues(String name)  :根据一个name获取多个value值
Map<String,String[]> getParameterMap()  :获取所有请求参数	

2.2 请求参数中文乱码问题

说明:从tomcat8.0之后,get请求参数不再乱码,但是post请求参数依然乱码

原因:request缓冲区默认字符集是iso-8859-1不支持中文
解决办法:在获取请求参数之前设置request缓冲区字符集为utf-8
request.setCharacterEncoding("utf-8");

3.Request对象请求转发和作为域对象

3.1 请求转发实现页面跳转

1.请求转发api:
	request.getRequestDispatcher("/转发的路径,不带虚拟路径").forward(request,response);
2.转发的特点:
	2.1 请求转发是一次请求一次响应;
	2.2 请求转发浏览器地址栏不会发生变化
	2.3 请求转发api中路径不需要携带虚拟路径,默认是访问项目内部资源;

3.2 request作为域对象数据共享(存值、取值、移除值)

作用范围:一次请求范围,浏览器发送请求到服务器做成响应结束,请求转发在一次请求范围内;
创建和销毁时间:浏览器发送请求之后服务器创建request对象,服务器做成相应之后销毁;
存值、取值、移除值api:
	存值:request.setAttribute(String name,Object value);
	取值:Object value=request.getAttribute(String name);
	移除值:request.removeAttribute(String name);

4.登录案例以及BeanUtils

4.1 案例分析

在这里插入图片描述

4.2 BeanUtils的使用

//3.创建User对象
User loginUser = new User();
//3.2使用BeanUtils封装
try {
    BeanUtils.populate(loginUser,req.getParameterMap());
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}

注意:form表单的name属性要和javabean的属性一一对应;

4.3 javabean规范

就是一个标准的java类。
javabean的成员变量和属性的区别:
	成员变量:成员变量都是private修饰的;
	属性:去掉setter和getter方法的set和get部分,将首字母变小写之后就是属性
		setUsername()----->Username----->username;
注意:往往javabean的属性和成员变量是一样,因为getter和setter方法都是idea工具根据成员变量自动生成的。

5. 重点内容总结

1、http协议-请求部分(4部分)
	请求行:
	  请求方式 url路径 协议/版本
		POST /day14/servletDemo2 HTTP/1.1
	请求头:都是一个key对应一个或者多个value值,多个value值用逗号隔开
		user-agent:获取当前浏览器的类型和版本信息,下一次课文件下载会用到。
		referer:当前请求的来源,用于防盗链和统计工作。
	请求空行:就是一个换行
	请求体:只有post请求才有请求体,get请求没有请求体。
		存放post请求的请求参数: username=zhouxiangyang&password=123456
  继承体系:tomcat中的RequestFacade--->实现了HttpServletRequest接口--->继承ServletRequest
2、request对象获取请求行的方法:
	获取虚拟目录/路径:String contextPath=request.getContextPath();
	获取URI:String uri=request.getRequestURI()
  
3、获取请求参数的通用方法
String getParameter(String name):根据一个name获取一个value值。
String[] getParameterValues(String name):根据一个name获取多个value值。
Map<String,String[]> getParameterMap():获取所有的请求参数
4、请求中文乱码问题的原因和解决办法
		get请求:在tomcat8之后中文就不再乱码。
		post请求:中文会乱码
			原因:request缓冲区字符集默认是iso-8859-1不支持中文
			解决办法:在第一次获取请求参数之前设置缓冲区字符集
				request.setCharacterEncoding("utf-8");

5、请求转发实现页面跳转:
	api:request.getRequestDispatcher("不带虚拟目录的路径").forward(request,response);
	特点:
		1、本质:请求转发是一次请求一次响应。
		2、请求转发地址栏不会发生变化
		3、请求转发的路径不带虚拟目录
		4、请求转发只能跳转到项目内部资源
6、request作为域对象共享数据
	域对象:有一定作用范围的对象。
	作用范围:一次请求,从浏览器发送亲请求到接收响应结束。请求转发在一次请求范围内。
	存值、取值、移除值的API:
		存值:void setAttribute(String name,Object value);
		取值:Object getAttribute(String name);
		移除值:void removeAttribute(String name);

7、登录案例
	1、案例的环境搭建
			准备数据库
			创建项目,创建包结构、拷贝资源代码、相关jar包、相关工具类和配置文件
			相关jar包:数据库驱动jar、druid连接池、jdbcTemplate工具类,lib目录必须在WEB-INF	中,名字也必须叫lib。
	2、登录逻辑分析
	3、Servlet代码实现
	4、dao操作数据库代码实现
  • 15
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值