struts2学习->一ServletConfig和ServletContext

引言:在J2EE项目中,struts的应用无处不在,而在实际的项目中ServletConfig类和ServletContext类的若是恰当的应用的话,会          提升项目中的效率,同时,会减小一部分代码的编写工做。web

 


 

ServletConfig类:

   1、Servlet容器在初始化servlet的时候会初始化一个servletConfig对象,这个对象在任何可访问的客户端都是有效的,可是,需注意的是,该对象只能在本servlet中应用,不能在其余servlet中访问。tomcat

   2、 ServletConfig类的父类是HttpServlet。ServletConfig对象在servletConfig初始化的时候被建立,所以能够在ServletConfig对象中获取Servlet的配置信息,这些信息能够在web.xml中进行配置(这就是避免“硬编码”).例如servlet的一些初始化参数的信息。在这里稍微将servlet在web.xml怎么配置说下......以下:ide

 

 1  <servlet>
 2         <!--名称-->
 3         <servlet-name>
 4             myTestservlet
 5         </servlet-name>
 6      <!--对应的类-->
 7         <servlet-class>
 8             com.dxb.init.SystemInit
 9         </servlet-class>
10     <!--配置的初始化参数-->
11         <init-param>
12             <param-name>
13                 systemVersion
14             </param-name>
15             <param-value>
16                 dxb
17             </param-value>
18         </init-param>
19         <load-on-startup>
20             1
21         </load-on-startup>
22     </servlet>
web.xml

 

     3、在我作过的项目中,servletConfig应用作多就是在tomcat启动中,获取项目中配置的参数以及为项目的启动就须要加载的一些数据进行处理。就如上面的代码中的load-on-start,在xml中配置其实例化顺序(load-on-start的数字越小,越优先被实例化,实例化的对象就是servlet指向的类....)。this

  简单介绍servlet指向类中的使用方法:编码

 1 public class SystemInit extends HttpServlet
 2 {
 3     private static final long serialVersionUID = 1L;
 4 
 5     public void init(ServletConfig config) throws ServletException
 6     {
 7         super.init();
 8         //获取初始化参数
 9         Object version = config.getInitParameter("systemVersion");
10         System.out.println("***********"+version+"************");
11         ServletContext servletContext=config.getServletContext();
12         //为全部可访问的servlet设置参数,在任何servlet中访问该参数
13         servletContext.setAttribute("version", version);
14     }
15 }
servletConfig

   4、servletConfig类的经常使用方法:spa

  1.getInitParameter(String name):根据给定的初始化参数,返回匹配的初始化参数值。code

  2.getInitParameterNmes():返回一个Enumeration对象,里面包含了全部的初始化参数。xml

  3.getServletContext():返回一个servletContext()对象。对象


 

ServletContext类:

  真正的全局变量!在web项目中,ServletContext对象被全部的servlet共享,因此,在项目中servlet之间的通信可使用serrvletContext对象来完成。blog

  在我参与过的项目中,在初始化项目的时候,通常会加载数据字典,将数据字典里的值(通常在项目中比较通用)放在servletContext对象中,这样,在不一样的servlet中就能够访问。例如,上面代码中将项目的版本号放在servletContext对象中,这样就能够实现servlvet的通讯。

   固然,servletContext对象的用法远不止这些。

   1、先介绍一下在J2EE项目中获取servletContext对象的几种方法:

   1.使用servletConfig对象获取:

   servletConfig对象能够维护servletContext对象。ServletContext context = config.getServletContext();就能够得到到。

   2.在继承了HttpServlet类的类中:

   ServletContext context=this.getservletContext;

   3.使用ServletActionContext获取:

     ServletContext context= ServletActionContext.getServletContext();

   4.继承了ServletContextAware接口的类(这个我真心没用过....)

   2、ServletContext的用途

   1.实现多个servlet数据的共享:使用servletContext.setAttibute("version","dxb");能够在其余servlet中获取到servletContext对象后,使用servletContext.getAttibute("version");获取你设置的数据。

   2.读取配置文件(固然,这不是惟一的读取配置文件的方法,还可使用PropertityConfigration类去操做)

   我比较经常使用下面这种方式:

InputStream is = context.getResourceAsStream("WEB-INF/classes/db.properties ");    

 /*解析properties的文件*/  

Properties prop = new Properties();   

//从输入流中读取属性列表(键和元素对)。   

 prop.load(is);   

Set<String> set = prop.stringPropertyNames();   
View Code

 

   


  这就是我对这两个对象的一些理解,但愿你们提出改善的意见......固然能够喷...... 

相关文章
相关标签/搜索