首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Servlet技术-Servlet强化

2012-11-13 
Servlet技术---Servlet深化Servlet的线程安全问题,多个客户端访问Servlet时,Servlet就会创建一个线程,并调

Servlet技术---Servlet深化

Servlet的线程安全问题,多个客户端访问Servlet时,Servlet就会创建一个线程,并调用service方法,因此service方法在同时访问一个资源的时候,就会出现安全问题。

SingleThreadModel接口已经过时,实现SingleThreadModel接口,客户端访问Servlet时就会创建一个Servlet对象

解决Servlet线程安全问题,需要用到线程同步解决。代码如下:
privateintcount=0;

    publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       synchronized (this) {

           count++;

           try {

              Thread.sleep(1000);

           } catch (InterruptedException e1) {

              //TODO Auto-generated catch block

              e1.printStackTrace();

           }

           response.getWriter().print(count);

       }

    }

如果不用线程的同步就会出现相同的数据,造成资源的安全问题;

这里的Thread.sleep(1000);不能向外面抛出异常,只能处;

由于利用线程同步,就加锁了,在客户端访问资源的时候,请求的时间相对长,是因为下一个客户必须等上一个客户释放了锁,才能访问资源;

这就解决了Servlet的线程安全问题。

 

ServletConfig对象

在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。

 

当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

热点排行