首页 > 8 ServletContext

8 ServletContext

 

1 为什么需要ServletContext 技术

显示网站多少人在线,显示当前登录者是第几位登录者等信息。

 

2 什么是ServletContext

  可以把它想象成一个服务器上的公共空间,每个用户都可以访问到它。 Web 容器在启动时,它会为每个Web 应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

① ServletContext 在服务器端

② ServletContext 被所有客户端共享

③ ServletContext 当Web应用启动时,自动创建

④ web应用关闭/tomcat关闭/reload,ServletContext自动消亡

 

3 创建

ServletContext 对象可以通过 getServletConfig().getServletContext()方法获得,也可以通过this.getServletContext()获得。

 

4 删除

ServletContext.removeAttribute("counter");

 

5 实际应用

① 获取web应用的初始化参数

 1 
 2   
 3       name
 4       latinyTest3
 5   

6 //获取: 7 ServletContext serCon = this.getServletContext(); 8 String name = serCon.getInitParameter("name"); 9

10 //如果文件在src下,应该使用类加载器读取 11 InputStream 12 inpStr2= ContextTest5.class.getClassLoader().getResourceAsStream("dbinfo.properties");

 

② 跳转页面技术

//1 response.sendRedirect("/web应用名/资源名");
//2 request.getRequestDispatcher("/资源名").forward(request, response);
//3 this.getServletContext().getRequestDispatcher("/url").forward(request, response);

 

③ 读取资源文件

//a 创建资源文件,dbinfo.properties
username=latiny
password=123456abc
age=28
sex=male

  

//b读取资源文件
ServletContext serCon = this.getServletContext();
//1 首先读取到文件
InputStream inpStr = serCon.getResourceAsStream("dbinfo.properties");
//2 创建Properties,然后loadinStr到Properties对象里
Properties proper= new Properties();
proper.load(inpStr);//根据Properties对象的key获取value
String name=proper.getProperty("username");
String password=proper.getProperty("password");

  

④ 获取文件全路径

ServletContext serCon = this.getServletContext();
//读取到文件全路径
String path = serCon.getRealPath("/images/2.png");
String path = serCon.getRealPath("2.png");

 

⑤ web网站实际应用

网站计数器;网站在线用户显示;简单聊天系统;

如果涉及到不同用户共享数据,并且这些数据量不大,同时又不希望写入到数据库中,则可以考虑ServletContext实现;

 

实现网站计数器功能时,用户每刷新一次会自动增加一次访问记录,如何避免表单重复提交:

使用sendRedirect 访问即可:

response.sendRedirect("/UserManager4/MainFrame");

 

⑥ 使用ServletContext注意事项

ServletContext会长时间保存在服务器内存中,因此建议不要想ServletContext中添加过大的数据。

 

转载于:https://www.cnblogs.com/Latiny/p/8458539.html

更多相关:

  • 微软在Visual Studio 2017 正式发布的时候也上线了一个参考应用https://github.com/dotnet/eShopOnContainers , 最近微软给这个参考应用写了完善的文档,放在.NET官网的.NET架构频道https://www.microsoft.com/net/architecture。 整个....

  • 第4章 本地化 Android系统会在很多地区的不同设备上运行。为了能够将应用提供给更多的用户,你的应用应该以不同的方式处理文本、音频文件、数字、货币和图形,以适合于你应用使用的地点。 本文档描述了本地化Android应用最好的实例。原则上允许你用Eclipse、Ant-based tools、或者其他任何搭载ADT的IED来开发An...

  • 为了方便创建Component,请自行安装插件       接下来就是创建组件需要绑定入参in和事件out(用于输出参数)  运行效果如下(可以点击红色文字,就获取到了子组件传出的内容)...

  • 第1步 在stmg/src/main/webapp/subsystem下创建一个newPage文件夹 在newPage文件夹下新建一个newSubPage.jsp文件 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> <%String pat...

  • 学习在Substance Designer中创建复杂材料的高级技术。 如果你想进入游戏行业,想学习如何创建高质量的纹理和学习物质设计,那么这个课程是给你的。 我设计了这个课程,从一开始就带你,教你我用来创建AAA纹理的3个步骤:图案,雕刻和细节。 看完这个课程后,你会觉得非常有信心创造一个AAA级纹理,你可以把它放在你的作品集里...

  • 了解如何使用C#在Unity中创建您的第一款2D平台游戏 你会学到什么 使用Unity创建2D奥运会 使用可脚本化的对象和单一模式 使用良好的编程实践 创造武器和射弹 使用可脚本化的对象和委托模式创建强大且通用的人工智能 创造具有多重能力的角色 创建级别组件 MP4 |视频:h264,1280×720 |音频:AAC,44.1...

  • 在Unity中学习高级粒子系统和视觉效果创建。初级到中级 你会学到: 游戏的视觉效果 Unity粒子系统 Unity中的Vfx 创建Unity视觉效果的初级到中级指南 课程获取:Unity粒子系统创建VFX游戏特效学习教程-云桥网 MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言...