编程开发 > JSP > 文章内容

jsp复习资料(22)

2017-1-22编辑:ljnbset

Servlet概述
    8.1.1 什么是Servlet
    Servlet是与JSP一样运行在服务器端的一种JAVA应用程序,它接收来自客户端的请求,并将结果返回给客户端,但它比JSP优点突出。

    8.1.2 Servlet的优点
    与CGI相比,Servlet优点包括:
    1) 功能强大:许多CGI程序难做的任务在servlet中可轻松完成;
    2) 执行效率高:servlet以线程方式处理请求,可以做到“一次加载多次使用”;
    3) 开发难度低:servlet有很多例程,可以完成许多功能;
    4) 可移植性好:servlet是用java编写的,具有java跨平台的特性;
    5) 性能更强:servlet比CGI有更多选择,比如缓存计算结果、保持数据库连接等。


    8.1.3 Servlet的用途
    Servlet有几个用途:
    1).Servlet可以接收浏览器端发送的数据,并将结果返回给客户端。
    2).Servlet能并发处理多个请求,诸如在线会议的同步请求支持系统。
    3).Servlet可以转送请求给其他服务器和Servlet,这就允许在镜像同样内容的几个服务器间平衡负载。
    4).Servlet可用以定义彼此之间共同工作的激活代理,每个代理者是一个Servlet,代理与被代理者间可传送数据。

    8.1.4 Servlet与JSP的区别
    Servlet与JSP的区别在于:
    1).编程方式不同,Servlet是严格按照Java语言的编程标准,而JSP则遵循脚本语言的编制标准。
    2).Servlet必须在编译以后才能执行,而JSP不需要另外进行编译。
    3).运行速度不同,这体现在JSP第一次运行时要先编译成字节码,而Servlet在运行前已编译成字节码了。

    8.1.5 Servlet的方法
    Servlet执行javax.Servlet.Servlet接口,但你编写Servlet时不需要自己编程去实现这些接口,最通用开发Servlet的办法是使用javax.Servlet.http.HttpServlet类。一般地,HttpServlet指定的类编写的Servlet可以多线程地并发运行service()方法。HttpServlet中加入一些方法来协助HTTP基本请求,HttpServlet类中的方法service()自动地调用这些方法,包括有:
    .doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
 用以处理HTTP的GET请求。可重载此方法,并支持HEAD方法。该操作时安全的,无副作用。
    .doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
 用以处理HTTP的POST请求。它不能立即取得资源,对安全性高要求的用户有一些副作用。
    .doPut(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
 用以处理HTTP的PUT请求。此PUT操作模拟通过FTP发送一个文件。对安全性高要求的用户有一些副作用。
    .doDelete(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
 用以处理HTTP的DELETE请求。此操作允许客户端请求一个从server移出的URL。对安全性高要求的用户有一些副作用。
    .doHead(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
 用以处理HTTP的HEAD请求。默认情况下它会在GET方法执行时运行,但不返回数据到客户端,只返回header。是安全的。
    .doOptions(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
 用以处理HTTP的OPTIONS请求。此方法自动地决定支持什么HTTP方法。
    .doTrace(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException;
 用以处理HTTP的TRACE请求。缺省时产生一个包含所有在trace请求中的header的信息应答。

    8.1.6 Servlet的生命周期
    Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。分三个阶段:
    Servlet初始化阶段:调用init()方法
    响应客户请求阶段:调用service()方法
    结束阶段:调用destroy()方法

    1.Servlet 生命周期:Servlet 加载--->初始化--->服务--->销毁。

    2.init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。

    3.service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的doGet()或doPost()或DoPut()。

    4.destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

    8.1.7 Servlet的类和接口
    1. ServletInputStream类
    ServletInputStream类是一个抽象类,它提供了从客户机请求读取二进制数据的一个输入流,对于一些协议,例如HTTP、POST和PUT,可有那个此对象读取和发送数据。
    public int readLine(byte b[], int off, int len) throws IOExecption

    2. ServletOutputStream类
    ServletOutputStream类是一个抽象类,它提供了一个输出流,用于向客户发送数据,包含的方法有:
    public void print(数据类型) throws IOExecption
    public void println(数据类型) throws IOExecption
   
    3. ServletConfig类
    public abstract ServletContext getServletContext()
    public abstract String getInitParameter(String name)
    public abstract Enumeration getInitParameterNames()

    4. HttpServletRequest类(参见request的方法)

jsp复习资料(20)

热点推荐

登录注册
触屏版电脑版网站地图