HttpServletRequest 和HttpServletResponse

HttpServletRequest 和HttpServletResponse

理解:

  • HttpServletRequest 是服务器接收来自客户端的数据 多用于获取请求
  • HttpServletResponse 是服务器发送数据给客户端 多用于给客户端反馈(也可以用于跳转服务器)

HttpServletRequest 主要方法

(1)getMethod:返回请求方式(如GET)

(2)getRequestURI:返回请求行中的资源名字部分(如/test/index.html )

(3)getRequestURL:返回浏览器地址栏中的所有信息

(4)getContextPath:获取当前项目的上下文路劲元素的path属性值

(5)getRemoteAddr:返回发出请求的客户机的IP地址

(6)getRequestURL:返回客户端请求的完整URL(包括协议、服务器名、端口号、资源路径信息),不含查询参数

(7)getHeader:返回指定名称的头字段的值

获取表单请求参数:

①String getParameter(String name):返回指定名字参数的值

②String[] getParameterValues(String name):返回指定名字参数的多个参数值。(复选框)

③Enumeration getParameterNames():返回所有参数名的 Enumeration 对象

④Map<String,String[]> getParameterMap():返回所有的参数和值所组成的Map对象

HttpServletResponse 主要方法

(1)OutputStream getOutputStream():获取字节输出流对象( 文件下载)。

(2)PrintWriter getWriter(): 获取字符输出流对象

(3)response.setContentType("text/html"),设置输出的MIME类型(内容的类型)

(4)response.setCharacterEncoding("UTF-8"),response.setContentType("text/html;charset=utf-8"),设置输出数据的编码方式

关于重定向和跳转

客户端跳转(重定向): 登录信息验证不通过时(格式不对) 需要重新输入数据 可以覆盖数据

  • 一共发送了两次请求
  • 可以跳转到站外
  • 跳转路径需要包含 context-path
  • 实现方案:
    • resp.setStatus(302);resp.addHeader("Location","客户端路径,需要包含context-path");
    • resp.sendRedirect("客户端路径,需要包含context-path");

服务端跳转: 登录成功时将客户端的数据传到服务器进行下一步验证

  • 一共只发送了一次请求

  • 不可以跳转到站外,只能在当前网站跳转

  • 跳转路径不需要包含 context-path

  • 实现方案:

    • req.getRequestDispatcher("跳转路径,不需要 context-path").forward(req,resp);

当两个Servlet需要传递数据时,选择forward转发。不建议使用sendRedirect进行传递

posted @ 2022-04-01 20:35  舟思水  阅读(252)  评论(0)    收藏  举报