Servlet系列之Request和Response
1.HttpServletRequest
1.1 定义
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,通过此种方式来获取请求中的数据
1.2 request常用方法
getRequestURL:获取客户端的完整URL
getRequesURI:获取请求行中的资源名部分
getQueryString:获取请求行的参数部分
getMethod:获取请求方式
getSchema:获取请求的协议
getRemoteAddr:获取客户端的ip地址
getRemoteHost:获取客户端的完整主机名
getRemotePort:获取客户端的网络端口号
1.3 request常用方法-map
获取请求头信息
getHeader(String name)
getHeaders(String name)
获取客户端请求参数(用户提交的数据)
getParameter(name)
getParameterValues(String name)
getParameterNames()
getParameterMap()
2.HttpServletResponse
2.1 定义
HttpServletResponse对象是服务器的响应对象,这个对象中封装了向客户端发送数据,发送响应头,发送响应状态码的方法。
2.2 response常用方法
设置响应头
setHeader(String key,String value) 添加响应信息,key重复会覆盖
addHeader(String key,String value) 添加响应信息,key重复不会覆盖
设置响应状态
sendError(int num,String msg ) 添加响应状态
设置响应实体
getWriter().write(msg) 响应具体的数据给浏览器
3.乱码问题解决
1、使用String重新进行编码
String name = new String(name.getBytes(“ios-8859-1”),”utf-8”)
2、get请求乱码
request.setCharacterEncoding("utf-8");
在server.xml中添加属性useBodyEncodingForURI=true
3、post请求乱码
request.setCharacterEncoding("utf-8");
4、response乱码
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8")
4.servlet request作用域
思考:不同的servlet之间如何实现数据共享?
用法:
request.setAttribute(Object key,Object value)
request.getAttribute(Object key)
5.请求转发和重定向的区别
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1c8865005e9640b448bda6bfe7957b66.png)