Servlet(2):通过servletContext对象实现数据共享
一,ServletContext介绍
- web容器在启动时,它会为每一个web应用程序都创建一个ServletContext对象,它代表当前web应用
- 多个Servlet通过ServletContext对象实现数据共享
- 获取web应用的初始化参数
- 用ServletContext实现请求转发
- 使用ServletContext对象读取资源文件
二,通过servletContext对象实现数据共享
1,通过this获得ServletContext,实现数据的共享
//存入数据
response.setCharacterEncoding("UTF-8");
ServletContext context = this.getServletContext();
String username="清水河";
context.setAttribute("name",username);
response.getWriter().print("设置name成功:"+username);
//读取数据
response.setCharacterEncoding("UTF-8");
ServletContext context = this.getServletContext();
String name = (String) context.getAttribute("name");
response.getWriter().print("我们获取的信息为:"+name);
2,运行结果
三,通过servletContext对象读取网站配置文件
1,新建一个properties文件
driver=com.mysql.jdbc.Driver
username=root
password=123456
url=jdbc:mysql://localhost:3306/smbms
2,编写servlet类
//获取配置文件的路径
String realPath = this.getServletContext().getRealPath(
"WEB-INF/classes/resources/database.properties");
System.out.println("获取的路径:"+realPath); Properties properties = new Properties();
FileInputStream is = new FileInputStream(realPath); //把文件流加载到配置文件对象中
properties.load(is); String driver = properties.getProperty("driver");
String username = properties.getProperty("username");
String password = properties.getProperty("password");
String url = properties.getProperty("url");//响应到网页
response.getWriter().print(driver);
response.getWriter().print(username);
response.getWriter().print(password);
response.getWriter().print(url);
3,配置web.xml
<servlet>
<servlet-name>ServletTest03</servlet-name>
<servlet-class>com.kuang.servlet.ServletTest03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest03</servlet-name>
<url-pattern>/s3</url-pattern>
</servlet-mapping>
4,访问查看
localhost:8080/demo02/s3
四,简单验证码
//自动刷新网页
response.setHeader("refresh","2");<span class="hljs-comment">//验证码是一个图片 , 我们需要制作一个图片</span>
BufferedImage image = <span class="hljs-keyword">new</span> BufferedImage(<span class="hljs-number">100</span>,<span class="hljs-number">30</span>,BufferedImage.TYPE_3BYTE_BGR); <span class="hljs-comment">//图片写入一些东西</span>
Graphics2D graphics = image.createGraphics();
graphics.setColor(Color.red);
<span class="hljs-built_in">String</span> <span class="hljs-built_in">num</span> = <span class="hljs-built_in">String</span>.valueOf(newRandom());
graphics.drawString(<span class="hljs-built_in">num</span>,<span class="hljs-number">10</span>,<span class="hljs-number">10</span>); <span class="hljs-comment">//想办法让浏览器知道我们给的是一张图片</span>
response.setContentType(<span class="hljs-string">"image/jpg"</span>); <span class="hljs-comment">//让网站去打开图片</span>
ImageIO.write(image,<span class="hljs-string">"jpg"</span>,response.getOutputStream());
} <span class="hljs-comment">//生成随机数</span>
public <span class="hljs-built_in">int</span> newRandom(){
<span class="hljs-built_in">int</span> <span class="hljs-built_in">num</span> = (<span class="hljs-built_in">int</span>)(Math.random()*<span class="hljs-number">9</span>+<span class="hljs-number">1</span>)*<span class="hljs-number">100000</span>;
<span class="hljs-keyword">return</span> <span class="hljs-built_in">num</span>;
}
Servlet(2):通过servletContext对象实现数据共享的更多相关文章
- servlet中的ServletContext对象
ServletContext官方叫Servlet上下文.服务器会为每一个Web应用创建一个ServletContext对象.这个对象全局唯一,而且Web应用 中的所有Servlet都共享这个对象(在整 ...
- 重温Servlet学习笔记--servletContext对象
一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...
- Servlet学习(二)——ServletContext对象
1.什么是ServletContext对象 ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象内部封装是该web应用的信息,一个web应用只有一个S ...
- javee学习-通过ServletContext对象实现数据共享
1,设置值. ServletContext context = this.getServletConfig().getServletContext();//获得ServletContext对象 // ...
- Servlet(八):ServletContext对象和ServletConfig对象
ServletContext 对象:问题: Request 解决了一次请求内的数据共享问题,session 解决了用户不同请求的数据共享问题,那么不同的用户的数据共享该怎么办呢?解决: 使用 Serv ...
- Servlet接口的实现类,路径配置映射,ServletConfig对象,ServletContext对象及web工程中文件的读取
一,Servlet接口实现类:sun公司为Servlet接口定义了两个默认的实现类,分别为:GenericServlet和HttpServlet. HttpServlet:指能够处理HTTP请求的se ...
- [Servlet]研究ServletContext对象
作者信息 作者姓名:金云龙 个人站点:http://www.longestory.com 个人公众帐号:搜索"longestory"或"龙哥有话说" Servl ...
- mvc-servlet---ServletConfig与ServletContext对象详解(转载)
ServletConfig与ServletContext对象详解 一.ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ...
- ServletConfig与ServletContext对象(接口)
ServletConfig:封装servlet的配置信息. 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. <ser ...
随机推荐
- springboot如何通过apollo动态去注册dubbo服务
参考相关文章: apollo官方文档: https://dubbo.apache.org/zh/docs/v2.7/user/configuration/configuration-load-pro ...
- node.js中模块和包
node.js中模块和包 什么是模块 如何创建并加载模块 1. 创建模块 2. 单次加载 3. 覆盖 exports 如何创建一个包 1. 作为文件夹的模块 2. package.json 如何使用包 ...
- selenium截屏操作(也支持截长图)
1.常用的可能是谷歌和火狐做自动化在抛异常的时候可以截屏保存 from selenium import webdriver br=webdriver.Chrome() br.maximize_wind ...
- c++学习笔记1(引用)
引用 格式:类型名&引用名=某变量名: 概念 实例:编写交换整型变量的函数对比 不用引用 实机操作 使用引用 实机操作 实例2:用作函数的返回值 可对函数返回值赋值 常引用 使用格式,在引用前 ...
- 96.n-1位数
描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数. 输入 第一行为M,表示测试数据组数. 接下来M行,每行包含一个测试数据. 输出 输 ...
- Kubernetes 中的 gRPC 负载均衡
安装环境依赖 docker-desktop >= 4.1.1 kubernetes >= 1.21.5 go >= 1.17 protobuf >= 3.17.3 istioc ...
- .NET6运行时动态更新限流阈值
昨天博客园撑不住流量又崩溃了,很巧正在编写这篇文章,于是产生一个假想:如果博客园用上我这个限流组件会怎么样呢? 用户会收到几个429错误,并且多刷新几次就看到了内容,不会出现完全不可用. 还可以降低查 ...
- 菜鸡的Java笔记 第三十一 扩展结构
.新特性 可变参数的意义以及实现 那么下面通过一个简单的思考来分析可变参数的存在意义 范例:如果说现在要定义一个方法,这个方法可以实现任意多个 ...
- [源码解析] PyTorch 分布式(7) ----- DistributedDataParallel 之进程组
[源码解析] PyTorch 分布式(7) ----- DistributedDataParallel 之进程组 目录 [源码解析] PyTorch 分布式(7) ----- DistributedD ...
- 简易发号SQL,可用于生成指定前缀自增序列--改进版
使用merge语法实现新增or更新 首先创建表 CREATE TABLE Test.dbo.Increments ( Prefix varchar(50) NOT NULL, [MaxNum ] bi ...