WEB请求与响应解析
- URL统一资源定位符,表示Web应用对外暴露的访问地址
- 示例:http://www.imooc.com/index.html
- URI统一资源标识符,表示Web应用资源的访问路径
- 示例:/index.html
请求的结构
HTTP请求包含三部分:请求行、请求头、请求体
利用请求开发多端应用
@WebServlet("/ua")
public class UesrAgentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 得到请求结构 User-Agent中的属性
String ua = request.getHeader("User-Agent");
String output = "";
// 判断获取的参数
if (ua.toLowerCase().indexOf("iphone") != -1 || ua.toLowerCase().indexOf("android") != -1) {
output = "<h1>这是移动端页面</h1>";
} else if (ua.toLowerCase().indexOf("windows nt") != -1) {
output = "<h1>这是PC端页面";
}
// 设置为UTF-8字符集
response.setContentType("text/html;charset=utf-8");
response.getWriter().println(output);
}
}
响应的结构
HTTP响应包含三部分:响应行、响应头、响应体
HTTP常见状态码
ContentType的作用
ContentType 决定浏览器采用何种方式对响应体进行处理
请求转发与响应重定向
多个Servlet之间跳转有两种方式:
- request.getRequestDispatchar().forward():请求转发
- response.sendRedirect():响应重定向
请求转发
请求转发是服务器跳转,只会产生一次请求
响应重定向
重定向则是浏览器端跳转,会产生两次请求
设置请求自定义属性
请求允许创建自定义属性
设置请求:request.setAttribute(属性名,属性值)
获取请求属性: Object attr = request.getAttribute(属性名)
Session与ServletContext原理
浏览器cookie
Cookie 是浏览器保存在本地的文本内容。Cookie默认域名绑定,只有当前域名下的程序才能读取数据。Cookie具有时效性,Cookie会伴随请求头发送给服务器。
Cookie的时效性有两种情况:
- 默认Cookie有效期与当前浏览器进程绑定
- 设置过期时间后,Cookie过期后才会时效
/**
* 用于生成随机数的Cookie
*/
@WebServlet("/cookie/random")
public class RandomServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取随机整数
Integer random = new Random().nextInt(10000);
Cookie cookie = new Cookie("random", String.valueOf(random));
// 设置Cookie时效
cookie.setMaxAge(60*60*