5、HttpServletRequest 和 HttpServletRespone

学习基础是servlet,HttpServletRequest 和 HttpServletRespone是 servlet的一个应用。

主要用在客户端到服务器端的请求和响应操作。

  • HttpServletRequest :客户端请求到服务器;

  • HttpServletRespone:服务器响应到客户端。

不管在get请求还是post请求中(对应springboot中的 GetMapping 和 PostMaping,只要注意什么时候使用get,什么时候使用post就可以了),都有请求和响应的操作。所以可以在参数中引入HttpServletRequest 或者HttpServletRespone 进行操作。以下是理解的例子。

//添加HttpServletRequest参数
@PostMapping("/login")
public Response<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
    return  employeeService.loginService(request,employee);
}

如获取请求参数:

//获取客户端传过来的参数
request.getParameter("username");
//处理相关session问题    
request.getSession().setAttribute("employee",employee.getId());

如返回响应内容:

//在页面上直接打印输出
response.getWriter().write("hello");
//响应json格式的内容
response.getWriter().write(JSON.toJSONString(Response.fail(0,"NOTLOGIN")));

 

 

 

 

response对象的主要方法

  1. setContentType()告知浏览器数据类型

  2. setCharacterEncoding设置Response的编码方式

  3. setHeader()设置消息头

  4. setStatus()设置状态吗

  5. addCookie()添加Cookie

  6. sendRedirect()重定向

  7. getOutputStream()获取通向浏览器的字节流(同一次请求处理中,字节流和字符流不能同时存在)

  8. getWriter()获取通向浏览器的字符流(同一次请求处理中,字节流和字符流不能同时存在)

请求转发:request.getRequestDispatcher("/要跳转url-pattern").forward(request, response);

  • 在服务器内部执行;

  • 可以进行数据的共享。

    如先req.setAttribute("attribute",object), 然后在转发的controller中可进行获取,如req.getAttribute("attribute")

响应重定向:response.sendRedirect("URI");

  • 是客户端进行跳转;

  • 不可以进行数据的共享。

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

 

posted @ 2022-07-12 16:07  jason饼干大怪兽  阅读(92)  评论(0)    收藏  举报