Servlet的初始化参数

时间:2022-10-31 21:06:21

确保接收和输出的数据不出现乱码。需要对request和response进行转码

request.setCharacterEncoding(charset);
	response.setCharacterEncoding(charset);
	response.setContentType("text/html;charset=" + charset);

但这样编写容易出现书写错误,而且当需要改变编码时,需要逐个替换。为保证编码书写的一致性和后期的可维护性,可以把编码定义在web.xml文件中

配置Servlet初始化参数

web.xml文件中对应Servlet节点中定义init-param子节点,其中param-name为参数的名称,param-value为参数的值。一个Servlet可以配置多个初始化参数

 <servlet>
    <servlet-name>first</servlet-name>
    <servlet-class>com.cashop.servlet.FirstServlet</servlet-class>
    <init-param>
      <param-name>charset</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </servlet>

Servlet中获取初始化参数

Servlet中声明一个私有变量用于接收初始化参数

Private String charset;//用于接收初始化参数的变量

重写Servlet的无参init方法,在方法中通过ServletConfig对象的getInitParameter方法获取初始化参数,方法的参数为web.xml文件中init-param中param-name子节点的值

@Override
	public void init() throws ServletException {
		// 调用父类方法在前
		super.init();
	}

如果要使所有的Servlet的字符编码一致,可以在web.xml中定义全局的初始化参数来实现

配置全局初始化参数

Context-param节点用于配置全局初始化参数,param-name为参数名,param-value为参数值,一个项目可以配置多个初始化参数。

<context-param>
    <param-name>charset</param-name>
    <param-value>UTF-8</param-value>
  </context-param>

Serlvet中获取全局初始化参数

使用全局对象的getInitParameter方法可以获取全局的初始化参数,在Servlet中可以通过getSerlvetContext()方法获取全局对象

Servlet的初始化参数