ServletContext应用(对比Session)

1.ServletContext的特性

(1)ServletContext中的属性生命周期从创建开始,到服务器关闭而结束.

(2)存在ServletContext中的数据会长时间存在服务器中,占用内存,因此不建议向ServletContext中添加大数据.

2.ServletContext应用

(1)网站计数器

(2)网站在线用户的显示

(3)简单的聊天系统

3.ServletContext方法

(1)获取ServletContext实例     this.getServletContext();

(2)添加属性     setAttribute(String name,Object obj);

(3)获取值     getAttribute(String name)

(4)删除属性     removeAttribute(String name)

4.ServletContext案例(对比Session)

(1)运用上述方法实现读取ServletContext的属性值

 1 package com.tsinghua;
 2 
 3 import javax.servlet.http.*;
 4 //ServletContext所在的包 javax.servlet.*;
 5 import javax.servlet.*;
 6 import java.io.*;
 7 
 8 public class ServletContext1 extends HttpServlet {
 9     public void doGet(HttpServletRequest req,HttpServletResponse res) {
10         try {
11             PrintWriter pw = res.getWriter();
12             ServletContext sc = this.getServletContext();
13             sc.setAttribute("pass","ok");
14             pw.println("ServletContext's name is pass,it has a value");
15             
16             HttpSession hs = req.getSession();
17             hs.setAttribute("calm","know");
18             pw.println("Session's name is calm,it has a value");
19         }catch(Exception ex) {
20             ex.printStackTrace();    
21         }
22     }
23     public void doPost(HttpServletRequest req,HttpServletResponse res) {
24         this.doGet(req,res);
25     }    
26 }
ServletContext1.java
 1 package com.tsinghua;
 2 
 3 import javax.servlet.http.*;
 4 import javax.servlet.*;
 5 import java.io.*;
 6 
 7 public class ServletContext2 extends HttpServlet {
 8     public void doGet(HttpServletRequest req,HttpServletResponse res) {
 9         try {
10             PrintWriter pw = res.getWriter();
11             ServletContext sc = this.getServletContext();
12             String scName = (String)sc.getAttribute("pass");
13             pw.println("ServletContext's value is "+scName);
14             
15             HttpSession s = req.getSession();
16             String sName = (String)s.getAttribute("calm");
17             pw.println("Session's value is "+sName);
18                 
19         }catch(Exception ex) {
20             ex.printStackTrace();
21         }
22     }
23     public void doPost(HttpServletRequest req,HttpServletResponse res) {
24         this.doGet(req,res);    
25     }    
26 }
ServletContext2.java

(2)Servlet部署

 1 <servlet>
 2     <servlet-name>servletContext1</servlet-name>
 3     <servlet-class>com.tsinghua.ServletContext1</servlet-class>
 4   </servlet>
 5   <servlet-mapping>
 6     <servlet-name>servletContext1</servlet-name>
 7     <url-pattern>/servletContext1</url-pattern>
 8   </servlet-mapping>
 9 
10   <servlet>
11     <servlet-name>servletContext2</servlet-name>
12     <servlet-class>com.tsinghua.ServletContext2</servlet-class>
13   </servlet>
14   <servlet-mapping>
15     <servlet-name>servletContext2</servlet-name>
16     <url-pattern>/servletContext2</url-pattern>
17   </servlet-mapping>
View Code

(3)浏览器访问效果图:

posted @ 2018-08-07 21:18  KSYOON  阅读(144)  评论(0编辑  收藏  举报