一、HttpServletRequest类
a)HttpServletRequest类有什么作用。
每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中。然后传递到service方法( doGet和doPost)中给我们使用。我们可以通过HttpServletRequest对象,获取到所有请求的信息。
b)HttpServletRequest类的常用方法
常用方法 | 描述 |
---|---|
getRequestURI() | 获取请求的资源路径 |
getRequestURL () | 获取请求的统一资源定位符 (绝对路径) |
getRemoteHost() | 获取客户端的ip地址 |
getHeader() | 获取请求头 |
getParameter() | 获取请求的参数 |
getParameterValues() | 获取请求的参数(多个值的时候使用) |
getMethod() | 获取请求的方式GET或POST |
setAttribute(key, value) | 设置域数据: |
getAttribute(key) | 获取域数据 |
getRequestDispatcher() | 获取请求转发对象 |
c)POST请求的乱码解决
//设置请求体的字符集为UTF-8,从而解决post请求的中文乱码问题
req.setCharacterEncoding("UTF-8");
二、HttpServletResponse类
a)HttpServletResponse类的作用
HttpSerletRespise类和HtpServletRequest类一样。每次请求进来, Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用。HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息,我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象来进行设置。
b)两个输出流的说明
方法 | 常用作用 | |
---|---|---|
字节流 | getOutputStream() | 常用于下载(传递二进制数据) |
字符流 | getWriter(); | 常用于回传字符串(常用) |
注:两个流同时只能使用一个。
使用了字节流,就不能再使用字符流,反之亦然,否则就会报错。
c)如何往客户端回传数据
//获得字节流
PrintWriter writer = resp.getwriter();
//写出
writer.write("response's content!!!");
d)响应的乱码解决
方式一:
//设置服务器字符集为UTF-8
resp.setCharacterEncoding("UTF-8");
//通过响应头,设置浏览器也使用UTF-8字符集
resp.setHeader( "Content-Type","text/html; charset=UTF-8");
方式二(推荐):
//它会同时设置服务器和客户端都使用UTF-8字符集,还设置了响应头
//此方法一定要在获取流对象之前调用才有效
resp.setContentType("text/html; charset=UTF-8");
e)请求重定向
请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求
重定向(因为之前的地址可能已经被废弃)。
- 请求重定向的第一种方案 :
//设置响应状态码302,表示重定向,(已搬迁)
resp. setStatus(302);
//设置响应头,说明新的地址在哪里
resp. setHeader("Location", "http://localhost:8080");
- 请求重定向的第二种方案:
resp . sendRedirect( location: "http://localhost:8080");