servlet實現的三種方式對比
阿新 • • 發佈:2019-02-02
第一種:
實現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方法"); } @Overridepublic 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>