getServletContext是凌驾于所有Servlet之上的,所以里面的数据可以实现共享,存储数据的形式使用键值对的形式。
HelloServlet.java中的代码
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username="胡汉三";
ServletContext context = this.getServletContext();
//ServletContext 通过键值对的形式存储数据 多个servlet调用的ServletContext是同一个
context.setAttribute("username",username);
}
GetHello.java中的代码
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
//返回值是object类型 高转低需要进行强转
String username = (String) context.getAttribute("username");
//设置响应的编码格式
resp.setContentType("text/html");
//设置响应的编码字符集
resp.setCharacterEncoding("utf-8");
resp.getWriter().print("汉奸"+username);
}
配置web.xml
<!-- HelloServlet.java的配置-->
<!--注册servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.zhang.servlet.HelloServlet</servlet-class>
</servlet>
<!-- 映射servlet-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!-- GetHello.java配置-->
<servlet>
<servlet-name>getHello</servlet-name>
<servlet-class>com.zhang.servlet.GetHello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getHello</servlet-name>
<url-pattern>/getHello</url-pattern>
</servlet-mapping>
启动Tomcat访问
如果直接访问getHello,返回的结果是null,因为此时的getServletContext还没有存放数据!
先访问hello,然后在此访问getHello,就可以了
自己的理解!!!!!!!1