JSP2.0 学习笔记 (2)

  
Servlet :
   Servlet 能够完全发挥Java API 的威力,包括网络和URL 存取、多线程 (Multi-Thread)、影像处理、RMI (Remote Method Invocation)、分布式服务器组件 (Enterprise Java Bean)、对象序列
化 (Object Serialization) 等。若想写个网络目录查询程序,则可利用JNDI API;想连接数据库,
则可利用 JDBC,有这些强大功能的API 做后盾,相信Servlet 更能够发挥其优势。
 
一开始我们必须导入 (import) javax.servlet.*、javax.servlet.http.*。
javax.servlet.* :存放与HTTP 协议无关的一般性Servlet 类;
javax.servlet.http.* :除了继承javax.servlet.* 之外,并且还增加与HTTP协议有关的功能。
所有 Servlet 都必须实现javax.servlet.Servlet 接口(Interface),但是通常我们都会从
javax.servlet.GenericServlet 或javax.servlet.http.HttpServlet 择一来实现。若写的Servlet
程序和 HTTP 协议无关,那么必须继承GenericServlet 类;若有关,就必须继承HttpServlet 类。
一开始和 Applet 一样,也有init( )的方法。当Servlet 被Container 加载后,
接下来就会先执行 init( )的内容,因此,我们通常利用init( )来执行一些初始化的工作。
 
 
关于在命令行里面转换当前目录的命令:
    C:/Documents and Settings/fxl>cd /d d:/
 
    D:/>
 
关于编译 HelloServlet.java 的方法:
    (1) 将servlet-api.jar 加入至CLASSPATH之中,直接使用javac 来编译HelloServlet.java。
    其中servlet-api.jar 可以在{Tomcat_Install}/common/lib 找到。
    (2) 直接使用Ant 方式编译HelloServlet.java,请参见1-4 节“安装Ant 1.6”。
    编译好HelloServlet.java 之后,再来设定web.xml,如下:
        <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>tw.com.javaworld.CH2.HelloServlet</servlet-class>
        </servlet>
        <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern>
        </servlet-mapping>
 
Servlet的生命周期:
    Container可以在同一个JVM 上执行所有Servlet,所以Servlet
    之间可以有效地共享数据,但是Servlet 本身的私有数据亦受Java 语言机制保护。
     Servlet 从产生到结束的流程如图2-2 所示。
     (1) 产生Servlet,加载到Servlet Engine中,然后调用init( )这个方法来进行初始化工作。
     (2) 以多线程的方式处理来自Client 的请求。
     (3) 调用destroy( )来销毁Servlet,进行垃圾收集 (garbage collection)。
     Servlet 生命周期的定义,包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。
    这个生命周期由javax.servlet.Servlet 接口的init ( )、service( )和destroy( )方法表达。
 
    1. 加载和实例化
           当Container一开始启动,或是客户端发出请求服务时,Container会负责加载和实例化一个Servlet。
    2. 初始化
     Servlet 加载并实例化后,再来Container必须初始化Servlet。初始化的过程主要是读取配置
     信息(例如JDBC连接)或其他须执行的任务。我们可以借助ServletConfig 对象取得Container的
     配置信息. 因此,可以在HelloServlet程序中使
          用ServletConfig 对象的getInitParameter("user")方法来取得browser。
    3. 处理请求
       Servlet 被初始化后,就可以开始处理请求。每一个请求由ServletRequest 对象来接收请求;
       而ServletResponse 对象来响应该请求。
    4. 服务结束
    当Container 没有限定一个加载的Servlet 能保存多长时间,因此,一个Servlet 实例可能只
    在Container 中存活几毫秒,或是其他更长的任意时间。一旦destroy( )方法被调用时,Container
    将移除该Servlet,那么它必须释放所有使用中的任何资源,若Container 需要再使用该Servlet
    时,它必须重新建立新的实例。
 
Servlet 范例程序:
        Sayhi.html
    Sayhi.java
        从Sayhi.java的程序当中,可以发现Servlet是利用HttpServletRequest类的getParameter( )
        方法来取得由网页传来的数据。不过数据通过HTTP协议传输时会被转码,因此在接收时,必须再做转
        码的工作,才能够正确地接收到数据。
        编译Sayhi.java 之后,再来设定web.xml:
            <servlet>
        <servlet-name>Sayhi</servlet-name>
        <servlet-class>tw.com.javaworld.CH2.Sayhi</servlet-class>
        </servlet>
        <servlet-mapping>
        <servlet-name>Sayhi</servlet-name>
        <url-pattern>/CH2/Sayhi</url-pattern>
        </servlet-mapping>
           执行http://localhost:8080/JSPBook/CH2/Sayhi
 
         注意:在Sayhi.java 里面修改了一下,如果要马上看到效果的话,需要把该类编译一下,然后放到classes里面,
           然后再重新启动tomcat 即可。如果没有重新启动的话,打开网页访问,提示连接不到Servlet 或者连接的是
           以前的Servlet。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值