您的位置:首页 > 其它

(24)ServletConfig和ServletContext

2011-10-18 21:13 344 查看
11,10,18

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{

}

1、ServletConfig:每一个servlet对象都有一个ServletConfig对象

例如:

FirstServlet -------- ServletConfig对象

SecondServlet---------ServletConfig对象

2、

web.xml

<web-app>

<servlet>servlet名字和servlet类

<init-param>初始化参数</init-param>

</servlet>

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

<context-param>参数名和参数值,对所有servlet都有效</context-param>

</web-app> //根标签

ServletContext 上下文对象,一个web应用有一个ServletContext对象。

它里面有setAttribute();方法:设置属性名和属性值

getAttribute("属性名");

application session request

Enumeration getAttributeNames()

removeAttribute()

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

临界资源,共享资源

上下文的参数:

在server文件中进行配置。

<Context path="/demo" docBase=".\demo">

<Parameter name="companyName" value="csdn"/>

</Context>

3、Servlet的线程安全问题:

(1)使用synchronized

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

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

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

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

– Servlet本身就是多线程的,在Servlet中再创建线程,将导致执行情况复杂化,出现多线程安全问题

4、ServletConfig和ServletContext的区别

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

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

使用synchronized

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

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

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

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

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

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

二、

1、HttpServletRequesr简介

WEB客户端发送给WEB服务器的HTTP请求消息分为三个部分:

(1)请求行: GET demo/login?username=xxx&password=1234 HTTP/1.1

POST demo/login HTTP/1.1

(2)请求消息头:

(3)消息正文(也叫实体内容)username=xxx&password=1234

Servlet API中定义的ServletRequest及人口用于封装请求消息。

2、获取请求行的相关信息:

3、获取网络连接消息:

4、获取请求头信息:

<a href=" ">资源下载</a> 为了吸引访问量。 “盗链”,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: