J2EE学习之Servlet入门教程



J2EE学习之Servlet入门教程。

一、Servlet基础知识
    Servlet是一种独立于操作系统平台和网络传输协议的服务器端的Java应用程序,它用来扩展服务器的功能,可以生成动态的Web页面。最大的用途是通过动态响应客户机请求来扩展服务器功能。Servlet不是从命令行启动的,而是由包含Java虚拟机的Web服务器进行加载。
    Servlet 与 Applet 的异同点。
    相似之处:
    (1)它们不是独立的应用程序,没有main()方法。
    (2)它们不是由用户调用,而是由另外一个应用程序(容器)调用。
    (3)它们都有一个生存周期,包含init()和destroy()方法。
    不同之处:
    (1)Applet运行在客户端,具有丰富的图形界面。
    (2)Servlet运行在服务器端,没有图形界面。
二、Servlet工作原理 :
    Servlet运行在Web服务器上的Web容器里。Web容器负责管理Servlet。它装入并初始化Servlet,管理Servlet的多个实例,并充当请求调度器,将客户端的请求传递到Servlet,并将Servlet的响应返回给客户端。Web容器在 Servlet 的使用期限结束时终结该 Servlet。服务器关闭时,Web容器会从内存中卸载和除去 Servlet.Servlet基本工作流程如下所示。
    (1)客户机将请求发送到服务器。
    (2)服务器上的Web容器实例化(装入)Servlet
    (3)Web容器将请求信息发送到 Servlet。
    (4)Servlet 创建一个响应,并将其返回到Web容器。
    (5)Web容器将响应发回客户机。
    (6)服务器关闭或Servlet空闲时间超过一定限度时,调用destory()方法退出。
    从这里可以看到客户机与Servlet间没有直接的交互。无论客户机对Servlet的请求还是Servlet对客户端的响应,都是通过Web服务器来实现的,这就大大提高了Servlet组件的可移植性.
三、创建HTTP Servlet
    创建一个 HTTP Servlet,通常涉及下列四个步骤:
    (1)扩展 HttpServlet 抽象类
    (2)重载适当的方法。主要是覆盖(重写)doGet() 或doPost()方法。
    (3)如果有 HTTP 请求信息的话,获取该信息。用 HttpServletRequest 对象来检索 HTML 表格所提交的数据或 URL 上的查询字符串。Request对象含有特定的方法以检索客户机提供的信息,有3个可用的方法:getParameterNames(),getParameter(),getParameterValues()。
    (4)生成 HTTP 响应。HttpServletResponse 对象生成响应,并将它返回到发出请求的客户机上。它的方法允许设置Request 标题和Response主体。Response对象还含有 getWriter() 方法以返回一个 PrintWriter 对象。使用 PrintWriter 的 print() 和 println() 方法以编写 Servlet 响应来返回给客户机。或者,直接使用out对象输出有关HTML文档内容。
四、部署Servlet
     部署Servlet主要是使得Web容器能够加载Servlet。
    <servlet>
       <description>登录完毕后跳回上次访问的页面</description>
       <display-name>refreshServlet</display-name>
       <servlet-name>refreshServlet</servlet-name>
       <servlet-class>
           com.pgk.myServlet
       </servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>refreshServlet</servlet-name>
        <url-pattern>/refresh</url-pattern>
    </servlet-mapping>
     以上是我们项目中使用到的一个Servlet定义。红色的标注是必须一样的地方,因为前者是定义名称,后者在映射里是指定义何种请求时调用这个名字的Servlet。在创建了一个Servlet的类之后,只要在web.xml中进行类似的配置即可,配置名称,以及Servlet映射.Servlet还有很多很强大的功能,还有很多需要在实践中慢慢学习掌握。