百度:servletContext接口是Servlet中最大的一个接口,呈现了web应用的Servlet视图。ServletContext实例是通过 getServletContext()方法获得的,由于HttpServlet继承GenericServlet的关系,GenericServlet类和HttpServlet类同时具有该方法。
ServletContext对象是在Web应用程序装载时初始化的。正像Servlet具有初始化参数一样,ServletContext也有初始化参数。Servlet上下文初始化参数指定应用程序范围内的信息。 [1]
在web.xml中配置初始化参数:
<context-param>
<param-name>adminEmail</param-name>
<param-value>webmaster</param-value>
</context-param>
<context-param>元素是针对整个应用的,所以并不嵌套在某个<servlet>元素中,该元素是<web-app>元 素的直接子元素。 [1]
从Servlet中访问初始化参数:
ServletContext application=this.getServletContext();
out.println("send us your")
out.println(application.getInitParameter("email"));
out.println("'>email");
这些都不重要WEB程序装载时初始化。
总之这个ServletContext可以简单的实现不同Servlet之间的一个通讯功能。
首先建立个maven空工程,然后再在这个maven空工程下面用模板建立一个WEBAPP maven模板,在src/main/com.
/里面建立两个Servlet类,一个用来SetServletContext,另一个用来get里面的值。
首先建立个PUT类继承HttpServlet
public class PutServletContext extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入PutServletContext DOGET方法");
String cachename = "ServletContextTest";
ServletContext s1sc = this.getServletContext();//new一个Context对象
s1sc.setAttribute("name",cachename);//将值放入公共的ServletContext
System.out.println("set success");
// super.doGet(req, resp);
}
然后建立个GET来取出来Context中的内容
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("ServletContext DOGET方法");
javax.servlet.ServletContext s2sc = this.getServletContext();
String OutString = (String) s2sc.getAttribute("name");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print("从HellowServlet取出数据"+ OutString);
//super.doGet(req, resp);
}
先不set或者说是put值,直接去看看这个ServletContext中有什么
可以看到是个null,然后调用set的servlet,
这样就把context取出来了,结合前几天研究的Tomcat组件,这个Context应该和Wrapper在同一个容器之中,也就是Context,
也就是这个黄色块儿的位置。