关于 Servlet 和 Web
文中也只是对Servlet和Web作简单的了解,有个初步的认识,深入的内容有待于进一步去研究。 T. T _ . _
Servlet
Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一个Servlet 就是 Java 编程语言中的一个类。
Servlet是一种独立于操作系统平台和网络传输协议的服务器端Java应用程序,运行于支持Java的应用服务器中,是Java Web技术的核心基础。Servlet与传统Java应用程序的最大不同在于,它不是从命令行启动的,而是由Java虚拟机的web服务器进行加载。
功能: 扩展基于HTTP协议的Web服务器的功能,交互式地浏览和修改数据,生成动态Web页面内容。
生命周期:Servlet加载 - -> 实例化 - -> 服务 - -> 销毁
- [1] init():服务器装入Servlet时执行该方法,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
- [2] service():Servlet的核心,负责响应客户的请求。每当一个客户机请求一个HttpServlet对象,该对象的Service()方法就要调用,并以一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法,默认的服务功能是调用与HTTP请求的方法相应的do功能。
- [3] destroy():当Servlet对象退出生命周期,服务器端停止且卸载Servlet时执行该方法,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此在调用destroy()方法时,要确保这些线程已经终止或完成。
注:在Servlet的生命周期中,仅执行一次init()和destroy()方法。
工作原理:
- [1] 首先简单解释一下Servlet接收和响应客户请求的过程:客户发送一个请求,Servlet调用service()方法对请求进行响应。通过源代码看出,service()方法中对请求的方式进行了匹配,选择调用doGet, doPost等方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中没有doGet(),doPost()这些方法,HttpServlet中定义了这些方法,但是都返回error信息,所以每次定义一个Servlet时,都必须实现doGet()或doPost()这些方法。
- [2] 每一个自定义的Servlet都必须实现Servlet接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet生命周期,分别是init(), service(), destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet, 实现了Servlet接口。HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以定义Servlet时只需继承HttpServlet即可。
- [3] Servlet接口和GenericServlet不特定于任何协议,HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest、响应ServletResponse 强转为HttpRequest 和 HttpResponse。
Servlet容器
主要任务:管理Servlet的生命周期。
Servlet 与 Servlet 容器相互依存 ,彼此又相互独立发展,接口是连接Servlet和Servlet容器的关键,从技术角度来说是为了解耦,通过标准化接口来相互协作。
创建Servlet对象:
- [1] Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,并将ServletConfig对象作为参数来调用Servlet对象的init()方法。
- [2] Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet对象的service()方法。
在 Web 应用程序中,一个 Servlet 在一个时刻可能被多个用户同时访问。这时 Web 容器将为每个用户创建一个线程来执行 Servlet。如果 Servlet 不涉及共享资源的问题,不必关心多线程问题。但如果 Servlet 需要共享资源,需要保证 Servlet 是线程安全的。
参考:
http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html
http://www.ibm.com/developerworks/cn/java/j-lo-servlet/
与 Applet 比较
Web
Web容器:管理和部署Web应用,更多的是跟基于HTTP的请求打交道。
区别于应用服务器:可以部署EJB应用,可以实现容器管理的事务,更多的跟数据库、其它服务打交道。
关于 Servlet 和 Web的更多相关文章
- Java Servlet与Web容器之间的关系
自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...
- servlet和web容器之间的关系
Java是一种动态加载和运行的语言.也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下,可以在程序运行期 间任何时候加载这个类,并创建和使用该类的对象.Servlet ...
- Servlet中Web.xml的配置详解
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码. DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用 ...
- Servlet中web.xml 以及 <url-pattern>总结
web.xml中添加Servlet配置信息 使用Eclipse创建Servlet,会自动的在WEB-INF下的web.xml中声明,但是有的时候需要我们手动的写入配置信息,以下就是Servlet在we ...
- 支持JSP和Servlet的Web服务器
支持JSP和Servlet的Web服务器 1.Tomcat 服务器 目前非常流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型.轻量级的支持JSP和Servle ...
- 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器
转自:https://blog.csdn.net/tjiyu/article/details/53148174 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服 ...
- Eclipse创建第一个Servlet(Dynamic Web Project方式)、第一个Web Fragment Project(web容器向jar中寻找class文件)
创建第一个Servlet(Dynamic Web Project方式) 注意:无论是以注解的方式还是xml的方式配置一个servlet,servlet的url-pattern一定要以一个"/ ...
- Servlet中Web.xml的配置详解(一)
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...
- Servlet 工程 web.xml 中的 servlet 和 servlet-mapping 标签
本文转载自 陈蒙的博客 最近在学习JavaEE轻量级框架,对于servlet-mapping中的url-partten标签以及网页访问时的执行顺序不是很清楚,搜索了很多遍终于找到了这篇博文(搜索也是个 ...
随机推荐
- [ZigBee] 7、ZigBee之UART剖析(ONLY串口发送)
综述:USART0和USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI 模式.两个USART具有同样的功能,可以设置在单独的I/O 引脚. 1.UART 模式 UART 模式 ...
- 在ThoughtWorks工作这几年我学到了什么?
不知不觉,从2012年5月1日加入ThoughtWorks到现在,已经3年有余了.时间过得很快,这三年多我干了很多事情,但仔细想想也没有什么特别值得一提的.在一个公司呆久了总觉得很多事情是理所当然的, ...
- Spring-Context之三:使用XML和Groovy DSL配置Bean
在第一讲中显示了如何使用注解配置bean,其实这是Spring3引进的特性,Spring2使用的是XML的方式来配置Bean,那时候漫天的XML文件使得Spring有着配置地狱的称号.Spring也一 ...
- ASP.net的文件扩展名
尽管ASP.NET中采用的是事件响应模式,使程序开发人员和最终用户感觉与WinForm程序非常接近,但是它毕竟还是Web应用程序.而Web应用程序的特点,就是基于浏览器与服务器的请求与响应的执行方式. ...
- Atitit J2EE平台相关规范--39个 3.J2SE平台相关规范--42个
Atitit J2EE平台相关规范--39个 3.J2SE平台相关规范--42个 2.J2EE平台相关规范--39个5 XML Parsing Specification16 J2EE Conne ...
- Atitit.java图片图像处理attilax总结
Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...
- Java集合框架的总结
本篇文章先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析.当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进 ...
- iOS-数据持久化-偏好设置
一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用都有个NSUserDefaults实例,通过它来存取偏 ...
- hibernate(七) hibernate中查询方式详解
序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数 ...
- CSS技能汇总,研究及实践
最近一直在研究CSS,因为发现实践中大部分时间都在写CSS,且自己感觉写的很烂,虽然以前看的很多,但却很少有去实践过,更别提研究了,现在发现根本就不是你懂你就会,很多都是你用着用着才真的会了的,于是现 ...