案例1:两个Servlet通过ServletContext对象实现数据共享
public class ServletTest01 extends javax.servlet.http.HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置编码格式,避免乱码 resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); //通过ServletContext设置属性 ServletContext servletContext = this.getServletContext(); String name = "Curry"; servletContext.setAttribute("username",name); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } } public class ServletTest02 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //避免乱码 resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); //获取ServletContext对象 ServletContext servletContext = this.getServletContext(); //通过ServletContext获取属性 String username = (String) servletContext.getAttribute("username"); PrintWriter writer = resp.getWriter(); writer.print("Servlet1的信息为:"+username); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(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>ServletTest01</servlet-name> <servlet-class>com.hooi.demo01.ServletTest01</servlet-class> </servlet> <servlet> <servlet-name>ServletTest02</servlet-name> <servlet-class>com.hooi.demo01.ServletTest02</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletTest01</servlet-name> <url-pattern>/test01</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ServletTest02</servlet-name> <url-pattern>/test02</url-pattern> </servlet-mapping> </web-app>注意:需要先运行/test02设置属性再运行/test03获取属性
案例二:通过servletContext对象读取网站配置文件
在src目录下新建resources目录,在resources目录下创建db.properties 内容如下:
driver=com.mysql.jdbc.Driver username=root password=123456 url=jdbc:mysql://localhost:3306/smbms public class ServletTest03 extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置编码 resp.setCharacterEncoding("utf-8"); resp.setContentType("text/document"); //通过ServletContext获取out目录下的真实路径 //out目录下的classes目录相当于src,因此resources就在classes的下一级目录 String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/resources/db.properties"); //获取properies对象 Properties properties = new Properties(); //获取文件输入流 FileInputStream fileInputStream = new FileInputStream(realPath); //用过properties对象加载文件流 properties.load(fileInputStream); //获取配置详情 String driver = properties.getProperty("driver"); String username = properties.getProperty("username"); String password = properties.getProperty("password"); String url = properties.getProperty("url"); //响应返回配置文件详情 PrintWriter writer = resp.getWriter(); writer.println("driver:"+driver); writer.println("username:"+username); writer.println("password:"+password); writer.println("url:"+url); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req,resp); } } <servlet> <servlet-name>ServletTest03</servlet-name> <servlet-class>com.hooi.demo02.ServletTest03</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletTest03</servlet-name> <url-pattern>/test03</url-pattern> </servlet-mapping>