ServletConfig对象

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>
		
	


猜你喜欢

转载自blog.csdn.net/chenzuen113113/article/details/80906342