1.背景
1.我们程序中往往把一些经常会发生变化的数据写在配置文件上,我们如果是写死在程序中,我们称作为”硬编码“.硬编码修改起来需要重新编译。
2.作用:
1.ServletConfig主要的作用: 获取web.xml文件上的配置参数。
3.使用步骤
1.web.xml文件
1.
<!-- ServletConfig , 在Servlet标签内配置参数 -->
<servlet>
<servlet-name>config</servlet-name>
<servlet-class>com.itheima.config.ServletConfigServlet_01</servlet-class>
<!-- 配置参数 -->
<init-param>
<param-name>userName</param-name>
<param-value>狗娃</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>abc123</param-value>
</init-param>
</servlet>
2.获取配置参数
1.利用ServletConfig对象获取配置参数。
3.获取配置参数使用的方法
1.getInitParameterNames() 获取所有配置参数的name
2.getInitParameter(name) 根据name获取配置参数的值
4.代码
@Override
public void init(ServletConfig config) throws ServletException {
Enumeration<String> e = config.getInitParameterNames(); //获取配置参数的所有name。
while(e.hasMoreElements()){
String paramName = e.nextElement(); //得到配置参数的名字
String value = config.getInitParameter(paramName); //根据配置参数的名字获取对应值。
System.out.println(paramName+" : "+ value);
}
}
4.应用场景
1.我们的一个项目如果需要实现码表统一,那么我们就可以专门编写一个servlet读取码表信息,
然后把码表消息设置在工具类上,然后其他的serlvet都可以通过工具类获取码表信息,
但是如果需要让一个servlet在服务器启动的是时候就创建该Serlvet的对象,那么我们需要配置<load-on-startup>,
这个标签的数字越小创建servlet对象越快。
2.代码
1.设置码表的Servlet: charsetServlet
//该serlvet不应该是人工去访问的,应该在项目一启动的时候就直接创建对象,可以调用init方法。
public class CharSetServlet_02 extends HttpServlet {
//读取配置文件,然后把配置参数的参数设置到工具类上。
@Override
public void init(ServletConfig config) throws ServletException {
//读取使用的码表
String charset = config.getInitParameter("charset");
//把读取到的码表设置工具类上。
CharSetUtil_02.setCharset(charset);
System.out.println("设置了码表..");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
}
}
2.工具类:
public class CharSetUtil_02 {
private static String charset;
public static String getCharset() {
return charset;
}
public static void setCharset(String charset) {
CharSetUtil_02.charset = charset;
}
}
3.测试类:
public class Demo1Servlet_02 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset="+CharSetUtil_02.getCharset());
PrintWriter out = response.getWriter();
out.write("三杠该还钱的时候就要还!");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
4.启动项目的时候创建Servlet对象:
<servlet>
<servlet-name>charset</servlet-name>
<servlet-class>com.itheima.config.CharSetServlet_02</servlet-class>
<init-param>
<param-name>charset</param-name>
<param-value>gbk</param-value>
</init-param>
<!-- 如果该Servlet需要在项目启动的时候就创建对象调用init方法,
需要添加load-on-startup标签, 标签里面的是一个数字,数字越小启动越快。 -->
<load-on-startup>1</load-on-startup>
</servlet>
ServletConfig对象
猜你喜欢
转载自blog.csdn.net/chenzuen113113/article/details/80906342
今日推荐
周排行