`

浅谈servlet

 
阅读更多

一个Servlet的生命周期如下:

1 如果在容器配置文件web.xml中设置了load-on-startup字段,则表示容器在启动时就会自动创建servlet的实例,同时执行其init方法。

 <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>MySevelet</servlet-name>
    <servlet-class>sevelet.MySevelet</servlet-class>
    <init-param>
    	<param-name>initparam</param-name>
    	<param-value> test-Servelet</param-value>
    </init-param>
    <load-on-startup>10</load-on-startup>
  </servlet>

 init方法执行顺序是先执行

public void init() throws ServletException {
 //先执行无参数的init方法
}
public void init(ServletConfig config) throws ServletException {
//接着执行初始化时的有参init方法
		super.init(config);
		String initParam=config.getInitParameter("initparam");
}

 ;如果没有设置load-on-startup字段,则在第一个客户端访问该servlet时,在开始创建该servlet的实例,同时执行init方法,无论是那种方式,init方法都只会执行一次。

2.当一个客户端的请求到达Server服务器后,Server创建一个请求对象request,Server创建一个响应对象response对象
3.Server激活Servlet的service()方法,传递请求request和响应response对象作为参数
4.service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
5.service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。
6.对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次(只有一个对象),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。

 

一般在开发过程中,最容易犯得错误就是没有对servlet进行并发安全性的注意。servlet本身是unsafe的,因此在使用时,最好是不要对其增加状态变量,如果非要使用,那么必须对其进行同步互斥操作,保证状态的一致性和正确性,安全性。最简单的方法就是对service方法加上synchronized关键字,servlet的每一个客户端请求都是通过service方法进行处理的,这样每一个客户端在访问时操作变成了顺序执行的了,故其结果必然不会产生混乱,但是效率却要大大折扣。当然其它的更好的方法就是对所有的原子操作进行 加锁,从而使得在保证并发的同时,使得状态一致。

分享到:
评论

相关推荐

    浅谈Servlet

    使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

    浅谈Servlet转发到JSP页面的路径问题(必看)

    在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同一个文件夹下时,则会出现路径混乱问题。 2. 绝对路径概念 相对于...

    浅谈Servlet开发技术基础

    主要介绍了浅谈Servlet开发技术基础,具有一定借鉴价值,需要的朋友可以参考下。

    浅谈servlet中的request与response

    下面小编就为大家带来一篇浅谈servlet中的request与response。小编觉得挺不错的,现在就分享给大家,也给大家做个参加。一起跟随小编过来看看吧

    浅谈servlet3异步原理与实践

    本篇文章主要介绍了servlet3异步原理与实践,详细的介绍了servlet和异步的流程使用,具有一定的参考价值,有兴趣的可以了解一下

    浅谈servlet与jsp的关系

    本文主要介绍了servlet与jsp的相关知识,并总结出servlet与jsp之间的关系,具有很好的参考价值,下面跟着小编一起来看下吧

    浅谈Servlet 实现网页重定向的方法

    本篇文章主要介绍了Servlet 实现重定向几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    浅谈ajax在jquery中的请求和servlet中的响应

    下面小编就为大家分享一篇浅谈ajax在jquery中的请求和servlet中的响应,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    浅谈JSP与Servlet传值及对比(总结)

    下面小编就为大家带来一篇浅谈JSP与Servlet传值及对比(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    浅谈Web网站架构演变过程

    此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;最后再选择一个数据库管理系统来存储数据...

    浅谈基于Struts和Hibernate的J2EE应用

    “Model” 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现) “View” 是应用的表示层(由JSP页面产生) “Controller” 是提供应用的处理过程控制(一般是一个Servlet) 通过这种设计模型把应用...

    浅谈SpringMVC的拦截器(Interceptor)和Servlet 的过滤器(Filter)的区别与联系 及SpringMVC 的配置文件

    主要介绍了浅谈SpringMVC的拦截器(Interceptor)和Servlet 的过滤器(Filter)的区别与联系 及SpringMVC 的配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    浅谈MVC设计模式(示例)

    典型的MVC就是javabean(M)+JSP(V) + servlet(C )的模式,是对DAO模式的进一步解耦合,姑且可以简单认为就是在DAO基础上多了一个servlet(充当控制器),其目的就是为了实现M和V的分离,便于前后并行开发。 MVC模式组成...

    浅谈jsp九大内置对象及四个作用域

    request 请求对象 类型 javax.servlet.ServletRequest 作用域 Request response 响应对象 类型 javax.servlet.SrvletResponse 作用域 Page pageContext 页面上下文对象 类型 javax.servlet.jsp.PageContext...

    客运站 订票系统 论文

    JSP+Servlet+SQL2000开发的客运站订票系统的论文。

    Javaweb技术文档

    封捷_ModelDriven和Preparable拦截器 张晓飞_Tomcat的设计模式分析 张晓飞_Tomcat系统架构分析 张晓飞_UML模型图 张晓飞_WEB书城. 张晓飞_正则表达式学习手册 ...JNDI原理_张晓飞 ...缓存技术浅谈_张晓飞

    jquery在启动页面时,自动加载数据的实例

    具体的ajax怎么使用,可以查看我的上一篇博客《浅谈ajax在jquery中的请求和servlet中的响应》 [removed] $(document).ready(function(){ var str = ""; var strA = ""; $.ajax({ type: "GET", url: "&...

Global site tag (gtag.js) - Google Analytics