ServletConfig和ServletContext

来源:互联网 发布:php错误类型有哪些 编辑:程序博客网 时间:2024/05/13 10:23
       Public class GenericServlet implements Servlet,ServletConfig{

      Private ServletConfig conf;

      Public void init(ServletConfig conf){

           This.conf=conf;

}

Public ServletConfig getServletConfig(){

      Return conf;

}

}

Public class HttpServlet extends GenericServlet{

}

每一个Servlet都对应有一个自己的ServletConfig对象

Web.xml

<web-app>

      <servlet>servle名字和servlet类<init-param></init-param></servlet>

      <servlet-mapping>servlet名字和url模式</servlet-mapping>

      <context-param>参数名和参数值</context-param>

</web-app>

ServletContext对象  一个Web应用程序有一个ServletContext对象

ServletContext对象 得到上下文参数

setAttribute()设置属性名和属性值

getAttribute(“属性名”)

servlet对象一旦创建并init()后  开启线程service()

共享资源  临界资源

HttpServletRequest接口中提供了几个方法用来操作请求实例中存储的对象:

public void setAttribute(String name, Object obj):将对象存储进HttpServletRequest实例中。

public Object getAttribute(String name):检索存储在HttpServletRequest实例中的对象。

public Enumeration getAttributeNames():返回包含HttpServletRequest实例中的所有属性名的Enumeration对象。

public void removeAttribute(String name):从HttpServletRequest实例中删除指定名称的属性。

ServletConfig

如何给Servlet类配置初始化参数

如何在Servlet类中获取它的初始化参数值

ServletContext

如何配置Web应用上下文初始化参数

如何在Servlet类中获取Web应用上下文的初始化参数值

ServletContext的其他用途

public void setAttribute(String name, Object obj):根据指定名name把对象obj存放到应用上下文范围中。

public Object getAttribute(String name):根据指定名从应用上下文范围中获取到该属性对象。

public void removeAttribut(String name):根据指定名从应用上下文范围中移除该属性。

ServletConfig和ServletContext的区别

整个Web应用只有一个ServletContext,在部署Web应用的时候,容器会建立这一个ServletContext对象,这个上下文对Web应用中的每个Servlet和JSP都可用。

Web应用中的各个Servlet都有自己的ServletConfig,它只对当前Servlet有效。

使用synchronized

使用synchronized关键字同步操作成员变量和共享数据的代码,就可以防止可能出现的线程安全问题。

尽量少使用成员变量和共享数据

ServletContext是可以多线程同时读/写成员变量和共享数据的,线程是不安全的。

ServletRequest对象在service方法的范围内是有效的,不要试图在service方法结束后仍然保存请求对象的引用。

Servlet本身就是多线程的,在Servlet中再创建线程,将

致执行情况复杂化,出现多线程安全问题

 

 

 

 

 

原创粉丝点击