1. 程式人生 > >servlet實現的三種方式對比

servlet實現的三種方式對比

第一種:

  實現Servlet 介面

第二種:

  繼承GenericServlet

第三種

  繼承HttpServlet (開發中使用)

通過檢視api文件發現他們三個(servlet 和GenericServlet和HttpServlet)的關係是 

    Servlet是一個介面,其中含有很多方法如:init(),service(),destory()方法。

    GenericServlet是一個實現了Servlet介面的實現類,他可以使用Servlet中的方法。

    HttpServlet是GenericServlet的實現類(兒子),也就是說間接的實現了Servlet介面,

      他可以使用Servlet的所有方法,和GenericServlet的所有的方法(GenericServlet中沒有私有方法,私有方法是繼承不來的),

      除此之外,HttpServlet還自己有了許多方法,如:doGet, doPost, doDelete, doPut, doTrace等方法對應處理http協議裡的命令的請求響應過程。

      所以,HttpServlet中擁有最多的方法,想用誰的什麼方法就用什麼方法(Servlet介面和GenericServlet的方法),所以我們使用的時候是繼承這個

      HttpServlet方法來使用Servlet。

第一種:實現Servlet 介面

複製程式碼
package com.chensi;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class ServletDemo2 implements Servlet { @Override public void destroy() { // TODO Auto-generated method stub System.out.println("這裡是destory方法"); } @Override
public ServletConfig getServletConfig() { System.out.println("getServletconfig"); return null; } @Override public String getServletInfo() { System.out.println("getServletInfo"); return null; } @Override public void init(ServletConfig arg0) throws ServletException { System.out.println("這裡是 init 例項化。。"); } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("這裡是 service方法"); res.getWriter().write("hello twice servelt222"); } }
複製程式碼

第二種:繼承GenericServlet類

複製程式碼
package com.chensi;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class ServletDemo extends GenericServlet{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("這裡是service 方法");
    }

}
複製程式碼

第三種:繼承HttpServlet類

複製程式碼
package com.chensi;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class ServletDemo extends GenericServlet{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("這裡是service 方法");
    }

}
複製程式碼

web.xml  的配置 :

複製程式碼
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ServletDemo2</display-name>
  <servlet>
      <servlet-name>servletDemo3</servlet-name>
      <servlet-class>com.chensi.ServletDemo3</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>servletDemo3</servlet-name>
      <url-pattern>/demo3</url-pattern>
  </servlet-mapping>
  
 <servlet>
     <servlet-name>servletDemo2</servlet-name>
     <servlet-class>com.chensi.ServletDemo2</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>servletDemo2</servlet-name>
     <url-pattern>/demo2</url-pattern>
 </servlet-mapping>
<servlet>
    <servlet-name>servletDemo</servlet-name>
    <servlet-class>com.chensi.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servletDemo</servlet-name>
    <url-pattern>/demo</url-pattern>
</servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>