网站设计色板,wordpress怎么做,wordpress哪个版本稳定,wordpress趣味集1、什么是ServletContext ServletContext是一个全局储存空间#xff0c;随服务器的生命周期变化#xff0c;
Cookie#xff0c;Session#xff0c;ServletContext的区别 Cookie#xff1a; 存在于客户端的本地文本文件 Session#xff1a; 存在于服务器的文本文件#…1、什么是ServletContext ServletContext是一个全局储存空间随服务器的生命周期变化
CookieSessionServletContext的区别 Cookie 存在于客户端的本地文本文件 Session 存在于服务器的文本文件一个客户端有唯一session ServletContext 存在于服务器并开辟一块服务器区域可以被所有客户端访问。 ServletContext对象通常也被称为context域对象。
Servlet对象之间可以通过ServlertContext对象来实现通讯。
当WEB容器在启动时为每个Web应用程序都创建一个对应的ServletContext它代表当前Web应用并且它被所有客户端共享。 我们可以拓展场景通常在咨询网站浏览时会有客服弹窗这就可以基于ServletContext进行通讯。
当web应用关闭、Tomcat关闭或者Web应用reload的时候ServletContext对象会被销毁。【即关闭浏览器客户端】
2、ServletContext使用方法
获取ServletContext对象
//直接调取ServletContext对象
this.getServletContext();
//通过ServletConfig对象调取ServletContext对象
this.getServletConfig().getServletContext();ServletContext对象的结构
名字String值Object
操作方法 添加属性boolean setAttribute(String name,Object obj) 得到值Object getAttribute(String name) 删除属性boolean removeAttribute(String name)
生命周期 ServletContext中的生命周期从创建开始到服务器关闭结束。
使用实例 1.分别创建两个Servlet对象 servlet1.java
public class servlet1 extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{response.setContentType(text/html;charsetutf-8);PrintWriter out response.getWriter();ServletContext servletContext this.getServletContext();//ServletContext servletCOntext this.getServletConfig().getServletContext();servletContext.setAttribute(name,小明);out.println(将 name servletContext.getAttribute(name)写入ServletContext);}
}servlet2.java
public class servlet2 extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{response.setContentType(text/html;charsetutf-8);PrintWriter out response.getWriter();ServletContext servletContext this.getServletContext();//ServletContext servletCOntext this.getServletConfig().getServletContext();String name servletContext.getAttribute(name);out.println(name name);}
}web.xml
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0servletservlet-nameservlet1/servlet-nameservlet-classservlet1/servlet-class/servletservlet-mappingservlet-nameservlet1/servlet-nameurl-pattern/servlet1/url-pattern/servlet-mappingservletservlet-nameservlet2/servlet-nameservlet-classservlet2/servlet-class/servletservlet-mappingservlet-nameservlet2/servlet-nameurl-pattern/servlet2/url-pattern/servlet-mapping
/web-app效果图
chrom浏览器 QQ浏览器 3、ServletContext应用
多Servlet对象共享数据实现Servlet的请求转发
两种请求转发方法 request对象转发
request.getRequestDispatcher(转发目的路径).forward(reqeust,response);ServletContext实现请求转发
this.getServletContext().getRequestDispatcher(转发目的路径).forwaard(request,response);配置Web应用初始化
!--
init-param标签用于servlet配置初始化参数通过ServletConfig对象获取参数--
servletservlet-nameMyServlet/servlet-nameservlet-classMyServlet/servlet-classinit-paramparam-nameencoding/param-nameparam-valueutf-8/param-value/init-param
/servlet获取初始化参数
String encoding this.getServletConfig().getInitParameter(encoding);配置Servlet全局配置
context-paramparam-namename/param-nameparam-valuegavin/param-value
/context-param4、利用ServletContext对象读取资源文件比如properties文件 读取资源文件要根据资源文件所在位置决定有两种情况 4.1 文件在WebRoot文件夹下即Web应用的根目录。 假设Web根目录下【web文件夹下】有一个配置数据库信息的dbinfo.properties文件配置了name和password属性通过ServletContext读取文件
//这种方法默认读取路径为Web应用的根目录
InputStream stream this.getServletContext().getResourceAsStream(dbinfo.properties);
// 创建属性对象
Properties properties new Properties();
properties.load(stream);
String name properties.getProperty(name);
String password properties.getProperty(password);
out.println(namename;passwordpassword);dbinfo.properties
nameroot
passwordroot**4.2 文件放置在src目录下 ** 这时需要使用类加载器其默认加载src根目录
InputStream stream MyServlet.class.getClassLoader().getResourceAsStream(dbinfo.properties);若文件放置在src的子文件夹中则加载方式为
InputStream inputStream MyServlet.class.getClassLoader().getResourceAsStream(com/properties/dbinfo.properties);注意 ServletContext只有在读取web应用根目录下的文件才能获取文件的全路径。
String path this.getServletContext().getRealPath(/images/Servlet.jpg);网站开发中的功能模块应用
网站计数器网站在线用户显示聊天系统等功能
若涉及不同用户共享数据且数据量不打且不希望占用数据库内存可以考虑使用ServletContext实现。