ServletContext讲解(三)

研究: javax.servlet.ServletContext接口
    1、javax.servlet.ServletContext接口,Servlet规范
    2、Tomcat服务器对ServletContext接口的实现类的完整类名:org.apache.catalina.core.ApplicationContextFacade
    javaweb程序员还是只需要面向ServletContext接口调用方法接口。
    3、ServletContext到底是什么?什么时候被创建?什么时候被销毁?创建几个?
       --ServletContext被翻译为:Servlet上下文【Context一般被翻译为上下文】
       --一个webapp只有一个web.xml文件,web.xml文件服务器启动阶段被解析
       --一个webapp只有一个ServletContext对象,ServletContext在服务器启动阶段被实例化
       --ServletContext在服务器关闭的时候会被销毁
       --ServletContext对应的是web.xml文件,是web.xml文件的代表
       --ServletContext是所有Servlelt对象四周环境的代表【在同一个webapp中,所有Servlet对象共享同一个"四周环境对象",该对象就是ServletContext】
       --所有的用户若想共享同一个数据,可以将这个数据放到ServletContext对象中。
       --一般放到ServletContext对象中的数据是不建议涉及到修改操作,因为ServletContext是多线程共享的一个对象,修改的时候会存在线程安全问题。
    4、ServletContext接口中有哪些常用的方法?
       --void setAttribute(String name, Object obje) // 向ServletContext范围中添加数据
       --Object getAttribute(String name)  // 从ServletContext范围中获取数据
       --void removeAttribute(String name) // 移除ServletContext范围中的数据

       --String getInitParameter(String name)
       --Enumeration getInitParamterNames()

       --String getRealPath(String path)
       
    5、ServletContext可以完成跨用户传递数据

package com.xxx.javaweb.servlet;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import com.bjpowernode.javaweb.entity.User;

public class ServletContextA implements Servlet {
    
	private ServletConfig config;
	@Override
	public void destroy() {

	}

	@Override
	public void init(ServletConfig config) throws ServletException {
     this.config=config;
	}

	@Override
	public void service(ServletRequest requsst, ServletResponse response)
			throws ServletException, IOException {
	
		//获取ServletConfig
        ServletConfig config=getServletConfig();
        //获取ServletContext
        ServletContext application=config.getServletContext();
      //  Enumeration<String>  names=application.getInitParameterNames();
       /* while (names.hasMoreElements()) {
			String name=names.nextElement();
			String value=application.getInitParameter(name);
			System.out.println("name:"+name+"value"+value);
		   
		}
        //获取文件的绝对路径
       String  relpath=application.getRealPath("/index.html");
       System.out.println(relpath);
       */
       //创建user对象
       User user=new User();
       user.setUsercode("123456");
       user.setUsername("javac");
       //向ServletContext的环境范围中存储user数据
       application.setAttribute("userObject", user);
       //将上面建立的userObject删除掉
       application.removeAttribute("userObject");
	}
	@Override
	public ServletConfig getServletConfig() {
		return config;
	}

	@Override
	public String getServletInfo() {
		return null;
	}

}
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <context-param>
    <param-name>user</param-name>
    <param-value>lihao</param-value>
  </context-param>
  <context-param>
    <param-name>password</param-name>
    <param-value>123456</param-value>
  </context-param>
  <servlet>
    <servlet-name>context</servlet-name>
    <servlet-class>com.bjpowernode.javaweb.servlet.ServletContextA</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>context</servlet-name>
    <url-pattern>/a</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>context1</servlet-name>
    <servlet-class>com.bjpowernode.javaweb.servlet.ServletContextB</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>context1</servlet-name>
    <url-pattern>/b</url-pattern>
  </servlet-mapping>
</web-app>

我对ServletContext的理解:

    servletContext其实就是我么用到的web.xml我们通过ServletContext可以获取到web.xml中配置的内容

猜你喜欢

转载自blog.csdn.net/qq_36826506/article/details/82317451