servlet实操之ServletContext

1、web容器在启动的时候,它会为每一个web程序都创建一个ServletContext对象,他代表了当前的web应用;作用:

①数据共享

我们在这个servlet中保存的数据可以在另一个servlet中拿到

设置数据的类

public class HelloServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        this.getInitParameter();
//        this.getServletConfig();
		ServletContext servletContext = this.getServletContext();
		String name  = "shiy";
		servletContext.setAttribute("name",name);//将一个数据保存在了servletContext中名字为name,值为name

}
}

访问数据的类

public class GetServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		ServletContext servletContext = this.getServletContext();
		String name = (String) servletContext.getAttribute("name");
		resp.setContentType("text/html");
		resp.setCharacterEncoding("utf-8");
		PrintWriter writer = resp.getWriter();
		writer.print("<h1>" + name + "</h1>");
	}

也可以在web.xml中配置初始化数据

   <context-param>
		<param-name>sex</param-name>
		<param-value>男</param-value>
	</context-param>

配置web.xml 用于测试访问结果

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
					  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
		 version="4.0"
		 metadata-complete="true">
	<servlet>
		<servlet-name>hello</servlet-name>
		<servlet-class>com.shiy.servlet.HelloServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name>
		<url-pattern>/helloservlet</url-pattern>
	</servlet-mapping>
	<servlet>
		<servlet-name>getServlet</servlet-name>
		<servlet-class>com.shiy.servlet.GetServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>getServlet</servlet-name>
		<url-pattern>/getname</url-pattern>
	</servlet-mapping>
</web-app>

②请求转发

public class Demo04 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		ServletContext servletContext = this.getServletContext();
		//请求转发
		RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/getSex");
		requestDispatcher.forward(req,resp);
	}
}

④读取资源文件

properties
在java目录下新建properties
在resources目录下新建properties
发现都被打包到同意路径下:classespath 俗称“类路径”
思路:
需要一个文件流
getServletContext先获取流的资源路径
然后new一个Properties,load加载文件流,在再使用getProperty获取数据

	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		InputStream resourceAsStream = this.getServletContext().getResourceAsStream("/WEB-INF/classes//com/shiy/servlet/db.properties");
		Properties prop = new Properties();
		prop.load(resourceAsStream);
		String username = prop.getProperty("username");
		String password = prop.getProperty("password");
		resp.setContentType("text/html");
		resp.getWriter().print(username + ":"+password);
	}

最后测试访问即可~

posted @   Takiyo  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示