服务器处理请求的过程:
1.服务器每次收到请求时,都会为这个请求创建一个线程。
2.服务器会把客户端的请求数据封装到HttpServletRequest中,HttpServletRequest类就是请求数据的载体。
3.服务器还会创建HttpServletResponse对象,给客户端发送响应。
客户端与服务器通讯
HttpServletResponse总结:
1.给客户端发送错误状态码。
setError(int sc);
setError(int sc,String msg);//带错误信息
实例:
response.sendError(404, "资源存在,就是不给你看!!!");
2.设置响应头的方法
服务器给客户端发送响应主要包括两个部分,分别是响应头与响应体。响应头是一个键值对,可能存在一个头对应一个或多个值的情况。HttpServletResponse设置响应头的方法主要是:
void setHeader(String name,String value);
3.完成重定向。
重定向的状态码是302。服务器重定向的响应头必须带一个Location:URL的响应头。
重定向示意图
实例:
response.setStatus(302);
response.setHeader("Location", "https://www.baidu.com");
或者重定向同一个项目下的不同Servlet
response.setStatus(302);
response.setHeader("Location", "/MyHttpServletResponse/BServlet");
再有快捷的重定向的方法:
void sendRedirect(String location);
4.定时刷新。(5秒跳转,可用于登陆等功能)
response.setHeader("Refresh", "5;URL=https://www.baidu.com");
或者重定向同一个项目下的不同Servlet
response.setHeader("Refresh", "5;URL=/MyHttpServletResponse/BServlet");
5.设置浏览器不缓存
主要是通过设置三个响应头:Cache-Control,pragma,expires
response.setHeader("Cache-Control", "no-cache");
response.setHeader("pragma","no-cache");
//最后的参数是时间,-1表示不缓存
response.setDateHeader("expires", -1);
HttpServletRequest总结
1.获取请求方法:getMethod();
2.获取请求头的信息:getHeader(String name); //例如:getHeader("User-Agent");
//注:通过查看Referer头进行防盗链
3.获取请求URL:getRequestURL();
4.获取上下文请求路径:getContextPath();
5.获取请求参数:
5.1 获取指定名称的参数值(单值)
String getParameter(String name);
5.2 获取指定名称的参数值(多值)
String [ ] getParameterValues(String name);
5.3 获取所有参数名
Enumeration<String>getParameterNames();
5.4 获取所有参数以及值
Map<String,String [ ]>getParameterMap();