1.1 转发和包含
- 用ServletContext实现转发和包含,路径必须以正斜杠开头
RequestDispatcher rd = getServletContext().getRequestDispatcher("/register.html");
rd.forward(request, response);
rd.include(request, response);
- 用request对象实现转发和包含,路径可以不用正斜杠开头
RequestDispatcher rd = request.getRequestDispatcher("register.html");
rd.forward(request, response);
rd.include(request, response);
1.2 重定向与转发区别 图解

转发-包含-重定向的区别.png
- 简单是说
- 转发 : 项目内部 servlet1把请求完全给servlet2 返回的结果只有servlet2
- 包含 : 项目内部 servlet1把请求给servlet2 返回的结果有servlet1与servlet2
- 重定向 : 所有范围
- 浏览器发送请求给servlet1,
- servlet1响应让浏览器发送请求给servlet2
- servlet2响应
1.3 使用请求对象实现数据共享
- ServletContext
- 上下文对象 范围是当前的web应用
- 时间范围 tomcat 一加载项目 tomcat关闭
- 空间范围 整个web应用
- request
- 请求对象 范围是当前的请求 需要同一个请求才能实现数据的共享
- 时间范围 一个请求开始,请求结束
- 空间范围 当前这个请求里面
1.3.1 访问网站访问量
ServletContext context = getServletContext();
Integer count = (Integer) context.getAttribute("count");
if(null == count){
context.setAttribute("count", 1);
}else{
context.setAttribute("count", count+1);
}
response.getWriter().println("<h2>"+count+"</h2>");
网友评论