Java Web开发,我们在这里谈到一个简单的,基础的,也是通用的技术-Servlet。如果要学好JavaWeb,个人认为,Servlet是首要必须学好的技术。因为我们之后的框架技术,多数是在他基础上扩展,或者是依赖于他来扩展的。
首先,我们来谈谈Servlet的生命周期,我们来看下面这幅图
我们能在这张图上看到Servlet的完整的生命周期。
首先,我们通过浏览器发送Http请求到Servlet容器,也就是Tomcat服务器中。
当服务器接收到请求之后,会判断是否是第一次调用该Servlet,如果是第一次调用,则初始化一个Servlet供使用(调用Servlet的init()方法),但是如果是第二次调用,就直接使用该Servlet。当然,如果这个Servlet在Web.xml中配置过服务器启动时就加载的参数,当然说明服务器里已经有这个Servlet了,所以就不需要再初始化一个新的了,直接拿有的来用。
new好了Servlet对象后,服务器当然就需要开始new一个HttpServletRequest和一个HttpServletResponse对象。
接下来,服务器会将之前new出来的两个对象传入Servlet中的service()方法里进行业务处理。如果是基于Web,那service()方法是已经写好了,不需要重写的,当然官方也不推荐重写,因为这个service()方法里面要判断传过来的HTTP请求类型,然后通过请求类型调用相应的业务处理类doXXX(),我么常用到的就是doGet()和doPOST()方法了。所以说这里就是调用serice()方法,然后根据HTTP请求类型调用相应的方法。
最后,当我们完成操作后,需要返回一个封装好的HttpServletResponse方法。该方法会返回到Web容器中,然后由容器负责将其返回发送给浏览器显示。该Servlet在此次调用后,将会常驻于后台内存中,等待下一次的任务。
而当容器,也就是服务器shutdown,所有的Servlet就会调用其destory()方法对自身进行销毁工作。
这里总结一下从前我学习servlet用到的一些重点知识点:
1. HTTP协议定义了GET和POST两种请求方法,POST方法对请求发送的数据量没有限制。
2. Servlet允许用户在服务器上运行Java代码和生成动态内容。
3. Servlet运行于Servlet容器中。
4. 扩展HttpServlet类的Servlet必须覆盖如下至少一个方法:doGet、soPost、
doPut、doDelete、init、destroy和getServletInfo。
5. Servlet声明周期包含三种方法:init()、service()和destroy()。
6. Servlet API包含在两个包中,javax.servlet和javax.servlet.http。
7. 通过从GenericServlet类或HttpServlet类扩展,可以编写Servlet。
分享到:
相关推荐
下面小编就为大家带来一篇老生常谈Scanner的基本用法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
老生常谈外链 站长要做到对症下药.pps
下面小编就为大家带来老生常谈Log4j和Log4j2的区别(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈MongoDB数据库基础操作。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
接地是电路设计中最基础的内容,但又是几乎没人说得清的,几乎每次的培训和交流都会有人问到“老师,有没有一种通用的接地方法 可以参考啊?”如果想知道这个问题的答案,请继续耐着性子读下去。
js数据类型主要分为基本数据类型和引用数据类型 基本数据类型和引用数据类型的区别: 基本数据类型是对值得引用,引用数据类型是对地址的引用; 基本数据类型存放在栈内存,栈内存提供了供JS代码执行的环境,引用...
使用CSS布局网页,那是前端的基本功了,什么两栏布局,三栏布局,那也是前端面试的基本题了。一般来说,可以使用CSSposition属性进行布局,或者使用CSSfloat属性布局。前者适合布局首页,因为首页上的内容往往可以...
jQuery-Kwicks-Amination Kwicks 图书馆是老生常谈,但却是个好东西。 如果您想计算它生成的不同事件并制作幻灯片,这里有一些 javascript 可以帮助您。 我花了一些时间,所以可能会为您节省一些时间:) 看看它在行动
下面小编就为大家带来一篇老生常谈Bootstrap媒体对象。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈JavaScript 函数表达式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
OOM顾名思义,Object-Object-Mapping实体间相互转换,AutoMapper也是个老生常谈了,其意义在于帮助你无需手动的转换简单而又麻烦的实体间关系,比如ViewModel和entity的转换,SearchModel和Entity的转换,我这篇分享...
下面小编就为大家带来一篇老生常谈javascript的类型转换。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈JavaScript 正则表达式语法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈java匿名内部类。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈C++getline使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈jacascript DOM节点获取。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈js中的MVC。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇老生常谈JavaScript数组的用法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧