`
java虫
  • 浏览: 532665 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Servlet学习笔记

阅读更多
一、什么是servlet
     Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java-enabled Web Server中。Java Servlet可以动态地扩展Server的能力,并采用请求-响应模式提供Web服务。

     Java servlet对于Web服务器就好像Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行.

二、Servlet的特点
    Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。

高效
在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。

方便
Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。

功能强大
在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

可移植性好
Servlet用Java编写,Servlet API具有完善的标准。因此,为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。

节省投资
不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。

三、Servlet的主要功能
Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:
1)客户端发送请求至服务器端;

2)服务器将请求信息发送至Servlet

3)Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求

4)服务器将响应返回给客户端

     Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java Servlet API的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为Faceless Object。

四、JAVA Servlet的优势
1)Servlet可以和其他资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容。如果需要,还可以保存请求-响应过程中的信息。

2)采用Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且Servlet自身将会控制外部用户的访问数量及访问性质

3)Servlet可以是其它服务的客户端程序,例如,它们可以用于分布式的应用系统中,可以从本地硬盘,或者通过网络从远端硬盘激活Servlet。

4)Servlet可被链接(chain)。一个Servlet可以调用另一个或一系列Servlet,即成为它的客户端。

5)采用Servlet Tag技术,可以在HTML页面中动态调用Servlet。

6)Servlet API与协议无关。它并不对传递它的协议有任何假设。

7)像所有的Java程序一样,Servlet拥有面向对象Java语言的所有优势

8)Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet 的Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。

9)一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载。

五、Servlet生命周期
1)装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。

2)Server创建一个Servlet的实例

3)Server调用Servlet的init()方法

4)一个客户端的请求到达Server

5)Server创建一个请求对象

6)Server创建一个响应对象

7)Server激活Servlet的service()方法,传递请求和响应对象作为参数

8)service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息

9)service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法 。

10)对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。

如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次 ,当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。

六、Servlet与GenericServlet,HttpServlet的区别
Servlet并不是只能处理http协议的。
HttpServlet则是专门用来处理http方面的请求和响应的。
javax.servlet.Servlet是一个接口
而avax.servlet.GenericServlet,javax.servlet.HttpServlet是实现Servlet的两个类,如果需要跨协议的servlet就继承GenericServlet;如果需要处理HTTP请求的servlet,就继承HttpServlet

具体关系如下一目了然
public interface Serializable

public interface Servlet 

public interface ServletConfig

public abstract class GenericServlet extends Object 
implements Servlet, ServletConfig, Serializable

public abstract class HttpServlet extends GenericServlet 
implements Serializable


七、ServletRequest与HttpServletRequest
具体关系如下一目了然,ServletResponse与HttpServletServletResponse同理。
public interface ServletRequest

public interface HttpServletRequest extends ServletRequest 

public class ServletRequestWrapper extends Object 
implements ServletRequest

public class HttpServletRequestWrapper extends ServletRequestWrapper 
implements HttpServletRequest


八、JSP是怎么回事
     JSP的优点是将业务逻辑处理和WEB的UI工作分开进行。JSP页面是在普通的网页中插入了一些JSP元素,这些JSP元素将根据不同的请求输出动态文本。

     JSP容器负责将JSP文件翻译成Servlet实现类,翻译动作通常发生在第一次请求到来时,所有的JSP元素都转变成JAVA代码。然后容器再编译并且根据需要调用Servlet实现类。之后的工作其实就和Servlet的工作方式一样,只是不需要你来将业务逻辑和WEB页面的静态html代码混在一起,而是JSP机制。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics