1 概述
先了解一下ServletContext是什麼?
ServletContext 是Tomcat 創建的一個容器,指代了一個Web項目;
既然它能代表一個項目,一個項目包含多個Servlet,那麼是不是對於一個項目下的不同Servlet是不是用的同一個容器ServletContext;
既然可以共用,那麼共享數據是不是可以用它了。
2 ServletContext的使用
思路:
- 一個類繼承HttpServlet,獲得ServletContext對象,賦值
- 一個類繼承HttpServlet,獲得ServletContext對象,獲取上面賦的值
- 打印到控制檯
注意點:運行時候先運行賦值的Servlet,再運行取值的Servlet,可以試試反過來什麼情況
2.1 獲取ServletContext對象
ServletContext servletContext = this.getServletContext();
2.2 爲ServletContext添加屬性值(上下文對象以Key-Value形式存儲的)
String name = "weiduo";
servletContext.setAttribute("name",name);
2.3 獲取ServletContext屬性值
ServletContext servletContext = this.getServletContext();
String name = (String) servletContext.getAttribute("name");
System.out.println(name);
3 參考代碼Demo
package com.duowei.servlet;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class SetContext extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String name = "weiduo";
servletContext.setAttribute("name",name);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
package com.duowei.servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class GetContext extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String name = (String) servletContext.getAttribute("name");
System.out.println(name);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>setContext</servlet-name>
<servlet-class>com.duowei.servlet.SetContext</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>setContext</servlet-name>
<url-pattern>/set</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>getContext</servlet-name>
<servlet-class>com.duowei.servlet.GetContext</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getContext</servlet-name>
<url-pattern>/get</url-pattern>
</servlet-mapping>
</web-app >