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对象的主要方法
-
setContentType()告知浏览器数据类型
-
setCharacterEncoding设置Response的编码方式
-
setHeader()设置消息头
-
setStatus()设置状态吗
-
addCookie()添加Cookie
-
sendRedirect()重定向
-
getOutputStream()获取通向浏览器的字节流(同一次请求处理中,字节流和字符流不能同时存在)
-
getWriter()获取通向浏览器的字符流(同一次请求处理中,字节流和字符流不能同时存在)
请求转发:request.getRequestDispatcher("/要跳转url-pattern").forward(request, response);
-
在服务器内部执行;
-
可以进行数据的共享。
如先req.setAttribute("attribute",object), 然后在转发的controller中可进行获取,如req.getAttribute("attribute")
响应重定向:response.sendRedirect("URI");
-
是客户端进行跳转;
-
不可以进行数据的共享。
小总结:当两个servlet需要传递数据时,选择forward转发,不建议使用sendRedirect进行传递。

浙公网安备 33010602011771号