javaEE ServletContext, 域对象, 获取绝对路径, servlet共享数据

学习笔记文档: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>


猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/80852118