1、什么是Servlet:是Java提供用于开发Web服务器的一个组件,运行在服务器端,是独立的Java类(在Java程序中邪HTML代码),用来生成动态Web页面和传统的CGI(公共网关接口),和其他CGI技术相比,具有更好的可移植性,执行效率高、功能强大、使用方便、可扩展性强、更安全。
2、技术功能: Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应的服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet,之后,Servlet继续运行直到其他客户机发出请求。Servlet的功能涉及范围很广(1)创建并返回一个包含基于客户请求性质的动态内容的完整的HTML页面;(2)创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段);(3)与其他服务器资源(包括数据库和基于Java的应用程序)进行通信;(4)用多个客户机处理连接,接收多个客户机的输入,并将结果传递到多个客户机上,例如,Servlet可以是多参与者的游戏服务器;(5)当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连接保持在打开状态;当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接,可以通过定制协议进行通信;(6)将订制的处理提供给所有服务器的标准程序。
3、技术特点:最大的优势是处理客户端传来的HTTP请求,并返回一个响应,特点是(高效,方便,跨平台,灵活性和可扩展性,共享数据,安全)
4、生命周期:每个Servlet实例的生命中有三种类型的事件,这三种事件分别对应于由Servlet引擎所唤醒的三个方法:
1.init()。当Servlet第一次被装载时,Servlet引擎调用这个Servlet的init()方法,只调用一次。如果某个Sevlet需要特殊的初始化需要。那么Servlet编写人员可以重写该方法来执行初始化任务。这是一个可选的方法。如果某个Servlet不需要初始化,那么默认情况下将调用它父类的init方法。系统保证,在init方法成功完成以前,是不会调用Servlet去处理任何请求的。
2.service()。这是Servlet最重要的方法,是真正处理请求的地方。对于每个请求,Servlet引擎将调用Servlet的service方法,并把Servlet请求对象和Servlet响应对象最为参数传递给它。
3.destroy()。这是相对于init的可选方法,当Servlet即将被卸载时由Servlet引擎来调用,这个方法用来清除并释放在init方法中所分配的资源。
可以分成以下几步:(1)装载Servlet (2)创建一个Servlet实例 (3)调用init()方法 (4)一个客户端请求到达Server (5)创建一个请求对象 (6)创建一个响应对象
(7)激活service方法,传递请求和响应对象作为参数 (8)service方法获得关于请求对象的信息,处理请求 (9)service方法使用响应对象的方法,将响应传回Server,最终到达客户端
(10)对于更多的客户端请求,Server创建新的请求和响应对象,但无需在调用init方法 (11)当Server不在需要Servlet,比如要关闭Server调用destroy
5.servlet工作过程:(1)在客户端对web服务器发出请求 (2)web服务区收到请求后发送给Servlet (3)Servlet容器产生一个实例对象并调用响应的方法对客户端HTTP请求做出处理,然后将
处理的响应结果返回给web服务器 (4)web服务器将Servlet实例对象收到的响应结构发送给客户端
6.Servlet与JSP的区别:JSP本质就是Servlet,是Servlet 的扩展,通过在HTML中下Java代码;Servlet应用逻辑实在Java文件中,而JSP是Java和HTML组合成一个扩展名为.jsp的文件;
JSP侧重于视图,Servlet主要用于逻辑控制。
7.JSP:JSP页面中内置了几个对象,如pageContext、application、config、page、session、out等_jspService()方法,这几个内置对象就是在这里定义的。
JSP文件必须在JSP服务器内运行。JSP文件必须生成Servlet才能执行。每个JSP页面的第一个访问者速度很慢,因为必须等待JSP编译成Servlet。JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面。index.jsp页面中的每个字符都由index.java文件的输出流生成.
servlet是在web服务器上的java程序,它提供服务,由它来传递给你html的格式。Servlet API为Servlet提供了统一的编程接口
Servlet必须部署在Servlet容器,才能响应客户端的请求 对外提供服务。要对外统一接口,由容器来调用。
8.Servlet与表单交互的方法
Servlet使用HttpServlet类中的方法与表单进行交互。在HttpServlet类中有几个未完全实现的方法,你可以自己定义方法的内容,但是必须正确使用方法名称以使HTTP Server把客户请求正确的映射到相应的函数上。
doHeader 用于处理HEADER请求
doGet 用于处理GET请求,也可以自动的支持HEADER请求
doPost 用于处理POST请求
doPut 用于处理PUT请求
doDelete 用于处理DELETE请求
在使用这些方法时必须带两个参数。第一个包含来自客户端的数据HttpServletRequest。第二个参数包含客户端的相应HttpServletResponse。一个HttpServletRequest对象提供请求HTTP头部数据,也允许获取客户端的数据。怎样获取这些数据取决于HTTP请求方法。不管何种HTTP方式,都可以用getParameterValues方法返回特定名称的参数值。HttpServletRequest,HttpServletResponse接口分别继承于ServletRequest和ServletResponse接口,getParameterValues和getWriter方法都是其祖先接口中的方法。
对于HTTP GET请求的方式,getQueryString方法将会返回一个可以用来解剖分析的参数值。