欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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>