Request与Response小知识

Request与Response小知识

一、Request小知识

1、定义
HttpServletRequest对象,继承ServletRequest接口,封装HTTP请求消息

2、获取请求行信息的相关方法

(1)String getMethod():获取HTTP请求方式(GET/POST)
(2)String getRequestURI(): 获取资源名称,主机和端口后、请求参数之前的部分
(3)String getQueryString(): 参数部分,即?后的参数
(4)String getProtocol(): 获取请求协议与版本
(5)String getContextPath():获取请求URL中属于WEB应用程序的路径,以/开头,结尾不含/,表示相对于整个WEB站点的根目录
(6)String getContextPath():获取Servlet名称或Servlet所映射的路径
(7)String getRemoteAddr():获取请求客户端的IP地址
(8)int getRemotePort():获取请求客户端网络连接的端口号
(9)StringBuffer getRequestURL():获取客户端请求的完整URL,包括协议、服务器名、端口号、资源路径等信息

3、获取请求消息头的相关方法

(1)String getHeader(String name):获取一个指定头字段的值
(2)Enumeration getHeaders(String name)

4、获取请求参数

(1)String getParameter(String name):获取某个指定名称的参数值
(2)String[] getParameterValues(String name)
(3)Map getParameterMap():将请求消息中的所有参数名和值装入Map对象中返回

5、重定向与转发区别

(1)重定向的地址栏会发生变化,转发的地址栏不变
(2)重定向两次请求两次响应,转发一次请求一次响应
(3)重定向路径需要加工程名,转发的路径不需要加工程名
(4)重定向可以跳转到任意网站,转发只能在服务器内部进行转发
(5)request作用域数据在重定向不可以使用,转发可以使用

二、Response小知识

1、定义
HttpServletResponse继承ServletResponse接口,专门封装HTTP响应消息

2、发送状态码相关的方法

(1)setStatus(int status):设置HTTP响应信息的状态码,并生成响应状态行
(2)sendError(int sc):发送表示错误信息的状态码

3、发送响应消息头相关的方法

(1)void addHeader(String name,String value)
(2)void setContentLength(int len):设置响应信息的实体内容的大小,单位字节
(3)void setContentType(String type):设置Servlet输出内容的MIME类型
(4)void setCharacterEncoding(String charset):设置输出内容使用的字符编码

4、发送响应消息体相关的方法

(1)ServletOutputStream getOutputStream():字节输出流,直接输出字节数组中的二进制数据,输出二进制格式的响应正文。
(2)PrintWriter getWriter():字符输出流,输出内容位字符文本的网页文档

5、文件下载原理
原理:需要指定文件的路径,在HTTP协议中设置两个响应消息头

//设置接收程序处理数据的方式
Content-Disposition: attachment;filename=xxx
//设定实体内容的MIME类型
Content-Type: application/x-msdownload

6、中文输出乱码问题
(1)

//设置HttpServletResponse使用utf-8
response.setCharacterEncoding("utf-8");
//设置浏览器查看的编码方式
response.setHeader("Content-Type","text/html;charset=utf-8")

(2)

response.setContentType("text/html;charset=utf-8");
posted @ 2020-03-06 17:26  李泽坤  阅读(146)  评论(0编辑  收藏  举报