请求request(自用)

请求:
get和post区别:
get提交数据类型是文本,post是文本、二进制
提交长度 get不超过255,post理论上没有限制
get提交数据时,post提交数据在消息体上面
get数据会被缓存在浏览器URL的历史记录中,post不会被浏览器缓存

请求
作用:获取浏览器发送过来的数据
组成部分:
请求行 请求头 请求体
操作请求行
格式:
请求方式 请求资源 协议/版本
常用方法:HttpServletRequest
String getMethod():获取请求方式
String getRemoteAddr():获取ip地址
String getContextPath() :在java中获取项目名称
getRequestURI():获取的是 从项目名到参数之前的内容
getRequestURL():获取的带协议的完整路径
String getQueryString():get请求的所有参数
String getProtocol():获取协议和版本

例如:请求行
GET /day10/row?username=tom&password=123 HTTP/1.1
//
操作请求头
格式:key/value(value可以是多个值)
常用方法:
String getHeader(String key):通过key获取指定的value (一个)
Enumeration getHeaders(String name) :通过key获取指定的value(多个)
Enumeration getHeaderNames() :获取所有的请求头的名称
int getIntHeader(String key):获取整型的请求头
long getDateHeader(String key):获取时间的请求头
重要的请求头:
user-agent:浏览器内核 msie firefox chrome
referer:页面从那里来 防盗链

///
操作请求参数
username=tom&password=123&hobby=drink&hobby=sleep
常用方法:
String getParameter(String key):获取一个值,参数区分大小写
String[] getParameterNames(String key):通过一个key获取多个值
String[] getParameterValues(String key):通过一个key获取多个值
Map<String,String[]> getParameterMap():获取所有的参数名称和值
//
请求的中文乱码
对于get请求:参数追加到地址栏,会使用utf-8编码,服务器(tomcat7)接受到请求之后,使用iso-8859-1解码,所以会出现乱码
对于post请求,参数是放在请求体中,服务器获取请求体的时候使用iso-8859-1解码,也会出现乱码

通用的方法:
new String(参数.getBytes(“iso-8859-1”),“utf-8”);
针对于post请求来说:只需要将请求流的编码设置成utf-8即可
request.setCharacterEncoding(“utf-8”);

文件上传
浏览器端的要求:
表单的提交方法必须是post
必须设置表单的enctype=multipart/form-data

请求转发:
整个过程在服务器端完成,派发对象可以处理静态页面,也可以在servlet上进行转发

request.getRequestDispatcher(“内部路径”).(forward方法 | include方法)
forward(ServletRequest, ServletResponse):
派发请求和响应对象到RequestDispatcher 对象所确定的新资源(Servlet、JSP或者HTML等),控制权全部转交 。
include(ServletRequest, ServletResponse):
该方法关键是能包含服务器端的资源 。请求转发完成后,还有要返回,进行处理。暂时转交控制权,请求转发完成后,还会获得控制权。

请求范围
创建:一次请求来的时候
销毁:响应生成的时候
作用:一次请求里面的数据
在请求范围内可以以键值对的方式存储对象,request.setAttribute(“value”, param);

请求转发和重定向区别:
1、重定向发送两次请求,请求转发一次请求
2、重定向地址栏发生变化,请求转发不变
3、重定向是从浏览器发送,请求转发是服务器内部
4、重定向不存在request域对象,请求转发可以使用request域对象
5、重定向是response的方法,请求转发是request的方法
6、重定向可以请求站外资源,请求转发不可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值