Servlet学习D4 -- Servlet中的常见对象1,2

Servlet学习D4 – Servlet中的常见对象

1. ServletContext

2. ServletConfig

3. Cookie&session

一、 servletContext对象

Sevlet上下文对象的作用是:
  1,相对路径转绝路径

		String path = "/2019-03-21 16-18-00 的屏幕截图.png";
		//获取ServletContext 对象
		ServletContext sc=this.getServletContext();
		//相对路径转绝对路径
		String realPath=sc.getRealPath(path);
//		File file = new File(realPath);
//		InputStream is  =new FileInputStream(file);
		System.out.println(realPath);

2,获取容器附加信息

	sc.getServerInfo():获取服务器版本号
	sc.getMajorVersion():获取Servlet版本号

3,全局容器
Servletcontext通过两个api完成对他的添加与读取的操作

setAttrbuter(String key,Object value);

Object value = getAttrbuter(Stirng key);

3.1自启动的servlet

所谓 的自启动的servlet表示,该servlet的实例化不依赖于请求,而是依赖于容器。当容器启动时会实例化这个servlet。

如果将一个servlet修改为自启动呢?

在web.xml文件中找到这个servlet所对应的在该节点中添加100 其中100为优先级的标识,他并不是一个时间。当为多个serlvet配置了自启动时,tomcat会根据数值的大小来觉得启动的先后顺序。数值越小的优先级越高。

 
    
    ReadInitConfigg
    ReadInitConfigg
    com.jay.ReadInitConfig
    100   其中100即用于配置自启动servlet(100表示优先级,1最大)
  

使用全局容器时需要注意的地方

千万不要存业务数据。因为ServletContext的生命周期太长了。意味着存放在该对象下的数据也会一直存在,那么我们还需要考虑到数据同步的问题

此外,在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法:
  今天遇到了一个在servlet的service方法中获取ServletContext对象出现java.lang.NullPointerException(空指针)异常,代码如下:

1 //获取ServletContext对象
2 ServletContext servletContext = this.getServletContext();

这个问题很奇怪,也是第一次遇到,因为以前在servlet的doGet/doPost方法中要获取ServletContext对象时都是这样写的,也没有出现过java.lang.NullPointerException(空指针)异常,上网查了一下出现这个异常的原因:原来是我重写了init(ServletConfig)方法,但重写的init方法内部没有调用super.init(config);就是这导致了错误!父类的 init(ServletConfig)有处理获取ServletContext对象的引用,在doGet/doPost/service方法方法中才能够通过 getServletContext()方法获取到SeverletContext对象!重写了Servlet的init方法后一定要记得调用父类的init方法!!!,否则在service/doGet/doPost方法中使用getServletContext()方法获取ServletContext对象时就会出现java.lang.NullPointerException异常

 public void init(ServletConfig config) throws ServletException {
   //重写了Servlet的init方法后一定要记得调用父类的init方法,
	否则在service/doGet/doPost方法中使用getServletContext()方法获取ServletContext对象时
	就会出现java.lang.NullPointerException异常
   super.init(config);
	//接下来才是自己的init方法体 
}

4, 读取web.xml文件中的配置信息
    配置web.xml

  
  key
  param-value
  

获取配置文件中的配置信息

String value = sc.getInitParameter("key");

二、ServletConfig对象

用户读取我们在servlet节点中配置的配置信息。注意一个每个servletConfig对象只能去读取在web.xml文件中对于当前这个serlvet的配置信息中的节点中的值。不能夸servler获取。
修改  Web.xml


    
    ServletConfigDemo
    ServletConfigDemo
    com.jay.ServletConfigDemo
    
       ServletConfigDemo-key
       ServletConfigDemo-value
    
  

java代码

	  ServletConfig  sc  = this.getServletConfig();
      sc.getInitParameter("ServletConfigDemo-key");

111

你可能感兴趣的:(Servlet学习D4 -- Servlet中的常见对象1,2)