HttpServletRequest和HttpServletResponse的使用

这两个对象是什么时候被创建的?

在请求报文转发给servlet容器的时候,servlet容器会解析成HttpServletRequest对象,也会生成一个HttpServletResponse对象,传给doGet(),doPost()方法。一次请求和响应的过程对应了一个request和response对象(次抛)

1 HttpServletRequest

  • req.setAttribute(); -> 设置一个属性在request对象里面,以键值对的形式来设置,键是一个字符串,值是一个对象
  • req.getAttribute(); -> 根据键来获得属性
  • req.setCharacterEncoding(“UTF-8”); -> 设置request对象的编码方式为UTF-8

接受浏览器发送的参数:

  • req.getParameter(); -> 根据参数名来获得前端传到后端的参数值
  • req.getParameterValues(); -> 如果一个参数名对应了多个值的话,就以数组的形式来获得这些值
  • req.getRemoteAddr(); -> 获得浏览器的IP地址
  • req.getMethod(); -> 获得请求方式

做一个IP禁止访问的例子:
HttpServletRequest和HttpServletResponse的使用_第1张图片

servlet针对浏览器中文乱码的解决思路:

  1. 如果是GET请求的中文乱码在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题
    HttpServletRequest和HttpServletResponse的使用_第2张图片

  2. 如果是POST请求的中文乱码 在这里插入图片描述

2 HttpServletResponse

代表了一个HTTP响应

  1. 设置服务器向浏览器返回请求时,设置的报文头部(设置响应头),设置请求头部可以控制浏览器的行为
    HttpServletRequest和HttpServletResponse的使用_第3张图片
    HttpServletRequest和HttpServletResponse的使用_第4张图片
    HttpServletRequest和HttpServletResponse的使用_第5张图片
    HttpServletRequest和HttpServletResponse的使用_第6张图片
    响应cookie的作用是 服务器告诉浏览器,要把这个键值对设置到你当前的浏览器里面
    HttpServletRequest和HttpServletResponse的使用_第7张图片第二次发送请求的时候,cookie里就有这个键值对了
    HttpServletRequest和HttpServletResponse的使用_第8张图片

  2. 向浏览器发送数据

  • a. resp.getWriter() -> 向浏览器写入文本文档
  • b. resp.getOutputStream() -> 向浏览器写入二进制流

3.请求转发和重定向

  • 请求转发:发生在服务器的内部的跳转,只会有一次请求和响应的过程(带上res和resq)
  • 请求重定向:发生在浏览器的跳转,会产生两次请求和响应
    HttpServletRequest和HttpServletResponse的使用_第9张图片
    HttpServletRequest和HttpServletResponse的使用_第10张图片

你可能感兴趣的:(Servlet,servlet,java,前端)