ServletContext实现数据共享

ServletContext实现数据共享

1、 加入新Module

 

补全项目,并把web.xml更新

  

建目录,建类HelloServlet:

  

 

2、 getServletContext(上下文对象)的作用

 1 package com.wang.servlet;
 2 
 3 import javax.servlet.ServletContext;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 import java.io.IOException;
 9 import java.io.PrintWriter;
10 
11 public class HelloServlet extends HttpServlet {
12     @Override
13     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
14         ServletContext context = this.getServletContext();
15     }
16 
17     @Override
18     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
19         doGet(req, resp);
20     }
21 }
View Code

ServletContext是一个凌驾于所有的servlet之上的东西,web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用。

ServletContext对象的主要作用:共享数据:在一个servlet中保存的数据,可以在另一个servlet中拿到。

3、 ServletContext(上下文对象)的使用

1、在一个servlet类中放入数据(在HelloServlet类里),在另一个servlet类中读取数据(在GetServlet类里),这两个类中用ServletContext context = this.getServletContext();得到的是同一个ServletContext对象,

    ServletContext对象全局唯一。

 

 

 

 

     2.1 HelloServlet代码

 1 package com.wang.servlet;
 2 
 3 import javax.servlet.ServletContext;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 import java.io.IOException;
 9 import java.io.PrintWriter;
10 
11 public class HelloServlet extends HttpServlet {
12     @Override
13     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
14         ServletContext context = this.getServletContext();
15         String username = "王赞";
16         context.setAttribute("username",username);//将一个数据保存在ServletContext中,名字为:username,值为:王赞
17     }
18 
19     @Override
20     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
21         doGet(req, resp);
22     }
23 }
View Code

     2.2 GetServlet代码

 1 package com.wang.servlet;
 2 
 3 import javax.servlet.ServletContext;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 import java.io.IOException;
 9 
10 public class GetServlet extends HttpServlet {
11     @Override
12     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
13         ServletContext context = this.getServletContext();
14         String username = (String) context.getAttribute("username");  //咱们自己知道类型,所以强转下,告诉计算机
15         //输出到网页上看看
16         resp.setContentType("text/html");
17         resp.setCharacterEncoding("utf-8");
18         resp.getWriter().print("名字"+username);
19     }
20 
21     @Override
22     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
23         doGet(req, resp);
24     }
25 }
View Code

2、注册加映射

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
 5                       http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
 6          version="4.0"
 7          metadata-complete="true">
 8 
 9     <!--注册和映射:设置数据部分-->
10     <servlet>
11         <servlet-name>hello</servlet-name>
12         <servlet-class>com.wang.servlet.HelloServlet</servlet-class>
13     </servlet>
14     <servlet-mapping>
15         <servlet-name>hello</servlet-name>
16         <url-pattern>/hello</url-pattern>
17     </servlet-mapping>
18 
19     <!--注册和映射:获取数据部分-->
20     <servlet>
21         <servlet-name>getc</servlet-name>
22         <servlet-class>com.wang.servlet.GetServlet</servlet-class>
23     </servlet>
24     <servlet-mapping>
25         <servlet-name>getc</servlet-name>
26         <url-pattern>/getc</url-pattern>
27     </servlet-mapping>
28 </web-app>
View Code

3、解决中文乱码问题

1         resp.setContentType("text/html");
2         resp.setCharacterEncoding("utf-8");
View Code

4、重新指定Tomcate,把名字从s1改为s2

  

5、先放数据,再读数据的先后过程

 

 

 

 

 

posted @ 2020-03-24 14:07  WZ_BeiHang  阅读(480)  评论(0)    收藏  举报