javaEE ServletContext, 域对象, 获取绝对路径, servlet共享数据
程序员文章站
2022-05-10 09:11:12
...
学习笔记文档:https://pan.baidu.com/s/1XEB1a0xHSdFnUDdHFJr6ig 密码:csi6
ServletContext代表该web应用的环境(上下文)对象,ServletContext对象内部封装了该web应用的信息,ServletContext对象一个web应用只有一个。但一个web应用可以有多个servlet实现类对象。
xxxServlet.java:
package com.xxx.context;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ContextServlet extends HttpServlet { // 继承HttpServlet (实现了Servlet接口)
// 重写doGet方法
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//获得ServletContext对象
ServletContext context = getServletContext();
// 1、获得Context(整个应用)的初始化参数 (Web.xml中设置初始化参数)
String initParameter = context.getInitParameter("driver");
System.out.println(initParameter);
// 2、获得a.txt的绝对路径
String realPath_A = context.getRealPath("/a.txt"); // "/"表示网站根目录(WebRoot、WebContent)
System.out.println(realPath_A);
//在读取src(classes) 下的资源时可以用类加载器----专门加载classes 下的文件的
//getResource() 参数是一个相对地址;相对classes目录
String path = ContextServlet.class.getClassLoader().getResource("c.txt").getPath();
System.out.println(path);
//3、域对象---向servletContext中存数据
context.setAttribute("name", "zhangsan"); // 设置值
context.getAttribute("name"); // 获取域对象中的属性值
context.removeAttribute("name"); // 删除属性
}
// 重写doPost方法
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
doGet(request, response);
}
}
WEB-INF/web.xml(配置文件):<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>MyWeb</display-name>
<context-param> <!-- (整个应用的)初始化参数配置 -->
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<servlet> <!-- 配置某个servlet -->
<servlet-name>abc</servlet-name>
<servlet-class>com.itheima.servlet.QuickStratServlet</servlet-class>
<init-param> <!-- (该servlet的)初始化参数配置 -->
<param-name>url</param-name>
<param-value>jdbc:mysql:///mydb</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>abc</servlet-name>
<url-pattern>/quickStratServlet</url-pattern> <!-- 可以用"*"匹配任意,但必须放在最前面或最后面 -->
</servlet-mapping>
<welcome-file-list> <!-- 默认首页配置 -->
<welcome-file>1.html</welcome-file> <!-- 先后次序表示优先级 -->
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>