栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servelt获取初始化参数时出现空指针问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servelt获取初始化参数时出现空指针问题

ServletConfig接口

javax.servlet.ServletConfig

  • getInitParemeter(String name)方法:获取web.xml文件中的标签中与传递的字符串参数相同的标签内容所对应的标签的字符串内容。

  • getInitParameterNames()方法:获取servlet初始化参数值,以字符串对象的一个枚举返回;或者返回一个空的枚举对象,如果没有任意一个初始化参数值。

  • getServletContext()方法返回ServletContext对象的引用。

  • getServletName()方法返回Servlet实例的名字。


当servlet配置了初始化参数后,web容器在创建servlet实例对象时, 会自动将这些初始化参数封装到ServletConfig对象中, 并在调用servlet的init方法时, 将ServletConfig对象传递给servlet。 进而,通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

web.xml配置

	
  	
  		
  		encoding
  		
  		UTF-8
  	

 
 		
 		encoding
 		
 		ISO-8859-1
 

在当前的Servlet中重写了GenericServlet的init方法

	@Override
	public void init(ServletConfig config) throws ServletException {
		// 当前参数
		System.out.println( "单独" + config.getInitParameter("encoding") );
		// 全局参数
		System.out.println( "全局" + config.getServletContext().getInitParameter("encoding"));
	}

然后在doPost中重新获取初始化参数 显示空指针异常


打印可以看出 无法获取到config对象

System.out.println( this.getServletConfig());
//  指定Servlet的初始化配置的参 
System.out.println( this.getServletConfig().getInitParameter("encoding") );

检查抽象类GenericServlet源码发现

成员属性

private transient ServletConfig config;


在init方法中会给成员属性 config 赋值操作

getServletConfig方法会返回当前的config对象


而我们重写了init方法时未调用父类的init(config)方法 导致 获得一个空的config对象

从而导致了 空指针异常 的产生


解决方案

必须加上super.init(config)

	@Override
	public void init(ServletConfig config) throws ServletException {
		super.init(config);// 给父类GenericServlet的config对象注值
		// 当前参数
		System.out.println( "单独" + config.getInitParameter("encoding") );
		// 全局参数
		System.out.println( "全局" + config.getServletContext().getInitParameter("encoding"));
	}

效果如下图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号