概述
一,请求消息数据的格式
请求行
请求方式:post、get
请求的地址:http://localhost/request_test.html,如果是以get方式提交,请求的数据会拼接在地址后:http://localhost/test?name=123
请求头:由若干个键值对组成
每个键值对的格式:
请求头的名称:请求头的值
请求头是客户端在向服务器发起请求时,告知服务器的信息
常见的请求头:
user-agent:客户端告知服务器当前浏览器的版本信息,用于解决浏览器的兼容性问题
referer:客户端告知服务器当前的请求是从哪里发来的,常用于防盗链
cookie
请求体:封装了以post方式提交的请求数据,以get方式提交,提交的数据不会封装在请求体中
二,HttpServletRequest
2.1 获取请求消息
2.1.1 获取请求行相关
getMethod():获取请求方式
getRequestURI()
getRequestURL()
*getContextPath():获取请求的虚拟路径
getQueryString():获取以get方式提交的数据
注:
uri:统一资源标识符,getRequestURI()获取访问的资源在服务器中的相对路径
url:统一资源定位符,getRequestURL()获取访问资源的绝对路径
2.1.2 获取请求头相关
getHeader(String name):通过请求头的名称获取对应值
2.1.3 获取请求体相关
getReader()
getInputStream()
注:只能获取以post方式提交的数据
2.2 获取请求参数的通用方法
无论是以get还是post方式提交都可以通过以下方法获取请求的数据:
getParameter(String name)
getParameterValues(String name):返回String数组
注:中文乱码问题
原因:tomcat服务器的默认编码格式是iso8859-1,这种编码格式不支持中文,所以提交中文时会有乱码
get
// tomcat8及以上版本不会出现乱码 // 如果是7版本,必须通过以下方法: String name = req.getParameter("name"); name = new String(name.getBytes("iso8859-1"),"utf-8");post
// 在接收到数据之前,使用: req.setCharacterEncoding("utf-8");
2.3 请求转发
请求转发是一种在服务器内部实现资源跳转的方式
步骤:
通过request对象获取请求转发器,同时指定要跳转到的目标地址
RequestDispatcher rd = req.getRequestDispatcher("地址");执行转发
rd.forward(req,resp);注:
请求转发后地址栏不变
请求转发只执行了一次请求
2.4 共享数据
域对象:一个有作用范围的对象,它可以在指定的范围内实现数据的共享
request:只能在一次请求中共享数据
域对象的通用方法:
setAttribute(String key,Object obj)
getAttribute(String key)
removeAttribute(String key)
三,响应消息数据的格式
响应行
协议/版本(HTTP/1.1)、响应状态码
响应状态码:服务器告知浏览器本次请求的响应状态
状态码都是3位数字
分类:
1xx:服务器接收到了客户端的消息,但是消息没未处理完
2xx:表示成功
3xx:302重定向、304访问缓存
4xx:客户端错误,404找不到资源、405没有对应的doXxx()方法
5xx:服务器错误,500服务器内部发生异常
响应头:由若干个键值对组成
每个键值对的格式:
响应头的名称:响应头的值
服务器告知客户端的消息
常见的响应头:
content-type:解决响应时的中文乱码问题,服务器告知客户端以何种编码格式来解析响应的数据
content-disposition:服务器告知客户端当前文件的打开方式
location:重定向时明确跳转的目标地址
响应体:服务器传输给客户端的数据
四,HttpServletResponse
4.1 设置响应消息
4.1.1 设置响应行
resp.setStatus(int code):设置响应状态码
4.1.2 设置响应头
resp.setHeader(String name,String value)
重定向:是一种实现资源跳转的方式
resp.setStatus(302); resp.setHeader("location",目标地址); // 简化写法 resp.sendRedirect("目标地址");
修改编码格式:
resp.setHeader("content-type","text/html;charset=utf-8"); // 简化写法 resp.setContentType("text/html;charset=utf-8");
4.1.3 设置响应体
getWriter()
getOutputStream()
4.2 重定向和请求转发
请求转发的特点:
地址栏不变
只执行了一次请求
不能访问其他服务器中的资源
重定向的特点:
地址栏变化
执行了两次请求
可以访问其他服务器中的资源
区别:
请求次数
地址栏
访问其他服务器
请求转发的性能优于重定向
注:如果使用的是request域对象来存储数据,那么携带数据跳转要选择请求转发
五,ServletContext
ServletContext对象是当前整个web应用的对象,这个对象有且只有一个,该对象在项目部署到服务器后,随着服务器的启动而创建,随着服务器的关闭而销毁。
ServletContext对象的获取方式:
this.getServletContext()
req.getServletContext()
5.1 共享数据
SevletContext也是一个域对象,它的作用范围是整个web应用
域对象的通用方法:
setAttribute(String key,Object obj)
getAttribute(String key)
removeAttribute(String key)
5.2 获取全局初始化参数
步骤:
配置web.xml
<context-param> <param-name>name</param-name> <param-value>zs</param-value> </context-param>获取
context.getInitParameter(String name);
5.3 获取服务器中资源的绝对路径
getRealPath():通过资源在项目中的相对路径获取它在服务器中的绝对路径
最后
以上就是英俊寒风为你收集整理的Java Request、Response的全部内容,希望文章能够帮你解决Java Request、Response所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复