zoukankan      html  css  js  c++  java
  • servlet的开发流程介绍

    servlet的开发部署流程

    1.在%TOMCAT_HOME%/webapps下WEB-INF的文件夹,写一个文件web.xml(该网站的配置信息),建立一个classes的子文件夹,也可以从别的目录ROOT下拷贝。下面是web.xml配置文件:
    <servlet>
    <!—给servlet取名,可以随意取名-->
    <servlet-name>hello</servlet-name>
    <!—指明servlet的路径,就是servlet的包+类名-->
    <servlet-class>com.test.Hello</servlet-class>
    </servlet>
    <servlet-mapping>
    <!—给servlet取名,可以随意取名-->
    <servlet-name>hello</servlet-name>
    <!—浏览器中输入的url,可以随意取名-->
    <url-pattern>/hello<url-pattern>
    </servlet-mapping>
    2.开发servlet(引入Tomcat文件夹下lib文件夹里的servlet-api.jar)
    3.部署你的servlet
    4.启动Tomcat,访问你的servlet,在浏览器的地址栏中输入:http://127.0.0.1:8080/myWebSite/hello回车就可以看到servlet的输出

    servlet的生命周期

    servlet部署在容器里(我们使用的是Tomcat,也可是别的,比如jboss,weblogic。。。),它的生命周期由容器来管理。
    servlet的生命周期分为以下几个阶段:
    1.装载servlet,由相应的容器来完成
    2.创建一个servlet实例
    3.调用servlet的init()方法,该方法只会在第一次访问servlet时被调用一次
    4.服务:调用servlet的service()方法,一般业务逻辑在这里处理,该方法在访问该servlet时,会被调用
    5.销毁:调用servlet的destroy()方法,销毁该servlet实例,该方法在以下情况被调用:
    a)tomcat关闭
    b)reload该webapps
    c)重新启动电脑
     

    开发servlet的方法

    三种方法:
    1.实现servlet接口
    该接口定义了5个方法
    2.继承GenericServlet
    通过GenericServlet去开发servlet,只需要重写service方法,相对来说要简单一些。
    3.继承HttpServlet
    通过HttpServlet去开发servlet,需要重写doGet、doPost方法,这是目前用的最多的一种方法。

    首先明确,Servlet并不是专门用于处理Http请求的。然后再说三种方式的联系和区别。
    1)原生Servlet接口
    package javax.servlet;  
    import java.io.IOException;  
      
    public interface Servlet {  
      
        public void init(ServletConfig config) throws ServletException;  
          
        public ServletConfig getServletConfig();  
          
        public void service(ServletRequest req, ServletResponse res)  
        throws ServletException, IOException;  
          
        public String getServletInfo();  
      
        public void destroy();  
    }
    
    

    可以看到Servlet接口是定义在javax.servlet包中,该接口定义了5个方法。
    init() :在Servlet实例化之后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求之前可以完成一些初始化工作,比如:建立数据库的连接,获取配置信息。
    service():容器调用service()方法来处理客户端的请求。
    destroy():当容器检测到一个Servlet对象应该从服务器中被移除的时候,容器会调用该对象的destroy方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久化存储设备中,例如:将内存中的数据保存到数据库中,关闭数据库的连接。

    2)GenericServlet
    为什么会出现GenericServlet?如果我们直接通过实现Servlet接口来编写一个Servlet类,就需要实现Servlet接口中定义的5种方法,为了简化Servlet的编写,在javax.servlet包中,给我们提供了一个抽象的类GenericServlet,它提供了除service()方法外的其他4种方法的简单实现。GenericServlet类定义了一个通用的,不依赖具体协议的Servlet。
     
    3)HttpServlet
    由于大多数网络应用中,都是浏览器通过HTTP协议去访问服务器资源,而我们编写的Servlet也主要是应用于HTTP协议的请求和响应,为了快速开发应用于HTTP协议的Servlet,Sun公司在javax.servlet.http包中给我们提供了一个抽象的类HttpServlet,他继承自GenericServlet类,用于创建适合Web站点的HTTP Servlet。
  • 相关阅读:
    C# 枚举常用工具方法
    AppBox_v3.0
    DDD:四色原型中Role的 “六” 种实现方式和PHP的Swoole扩展
    MySql主从配置实践及其优势浅谈
    ActionInvoker
    【Oracle】-【体系结构】-【DBWR】-DBWR进程相关理解
    Linux MySQL单实例源码编译安装5.6
    窗口嵌入到另一个窗口(VC和QT都有)
    Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具,需要将C:/MySQL/lib目录下的libmySQL.dll文件复制到我们Qt Creator安装目录下的qt/bin目录中)good
    在Linux下使用iconv转换字符串编码
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/5693143.html
Copyright © 2011-2022 走看看