什么是作用域?
- 就是对象的声明周期,在JavaWeb中有多个不同声明周期的对象
- 比如:
PageContext,ServletRequest,HttpSession,ServletContext
- 对象里面包含属性和对应的数据,所以不同作用域对象使用场景会不同
ServletContext
- 它代表了servlet环境的上下文,相当于一个全局存储空间
- 同一个WEB应用程序,所有的Servlet和JSP都可以共享同一个区域,是最大的作用域对象(webapps下的每个目录就是一个应用程序)
- 四大作用域对象-用于存取数据:
PageContext
(页面)->ServletRequest
(请求)->HttpSession
(会话)->【ServletContext
】(应用)
- 声明周期:在WEB服务器启动时创建,服务器关闭时销毁
示?
- 存储全局数据(只要是同一个应用,都可以共享这些数据,类似map结构)
- web.xml中的配置
<context-param>
<param-name>url</param-name>
<param-value>fl.net</param-value>
</context-param>
@WebServlet(name = "userServlet",value = "/user1")
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
//设置响应内容
resp.setContentType("text/html;charset=utf-8");
PrintWriter printWriter = resp.getWriter();
printWriter.write("<div>doGet可以了</div>");
ServletContext servletContext = this.getServletContext();
String url = servletContext.getInitParameter("url");
System.out.println(url);
servletContext.setAttribute("appInfo","net Info");
}
}
@WebServlet(name = "testServlet",value = "/test")
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应内容
resp.setContentType("text/html;charset=utf-8");
PrintWriter printWriter = resp.getWriter();
printWriter.write("<div>doGet可以了</div>");
ServletContext servletContext = this.getServletContext();
Object appInfo = servletContext.getAttribute("appInfo");
System.out.println("appInfo:"+appInfo);
}
}