Web开发入门之Servlet(二)

Servlet技术2

一、ServletConfig接口

① Servlet接口的init(ServletConfig config)方法有有一个ServletConfig类型的参数。当Servlet容器初始化一个Servlet对象时,会为这个Servlet对象创建一个ServletConfig对象。在Servlet对象中包含了Servlet的初始化参数信息,此外,ServletConfig对象还与当前Web应用的ServletContext对象关联。Servlet容器在调用Servlet对象的init(ServletConfig config)方法时,会把ServletConfig对象作为参数传递给Servlet对象,init(ServletConfig config)方法会使得当前Servlet对象与ServletConfig对象之间建立关联关系。

② 在ServletConfig接口中定义了以下方法:

●getInitParameter(String name)

● getInitParameterNames()

●getServletContext()

●getSevletName()

③ 在web.xml文件中,配置<servlet>时可以为<servlet>配置0~N个初始化参数,例如:

<servlet>
  <servlet-name>xxx</servlet-name>
  <servlet-class>cn.servlet.MyServlet</servlet-class>
  <init-param>
    <param-name>p1</param-name>
    <param-value>v1</param-value>
  </init-param>
  <init-param>
    <param-name>p2</param-name>
    <param-value>v2</param-value>
  </init-param>
</servlet>

 

二、ServletContext接口(重要)

① ServletContext是Servlet与Servlet容器之间直接通信的接口。Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象。每个Web应用都有唯一的ServletContext对象。

② 功能:1.在不同servlet之间传递数据,作用范围是整个web应用。

            2.在web.xml可以配置整个web应用的初始化参数,利用ServletContext去获得。

            3. 在不同servlet之间进行转发。

            4.读取资源文件

 

三、避免并发问题

① 当多个客户同时请求访问Web应用中的同一个Servlet时,可能会导致并发问题,并发问题有两种有效的解决措施。

1.利用同步代码块解决问题。缺陷是,同一时间同步代码块只能处理一个 请求,效率很低下,所以同步代码块中尽量只包含核心的导致线程安全问题的代码。

2.为该servlet实现SingleThreadModel接口,此为一个标记接口,被标记的servlet将会在内存中保存一个servlet池,如果一个线程来了而池中没有servlet对象处理,则创建一个新的。如果池中有空闲的servlet则直接使用。这并不能真的解决线程安全问题。此接口已经被废弃。

② 两种解决方案都不够完美,所以尽量不要在servlet中出现成员变量。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。