(1)几种Servlet
Servlet
- 需要实现很多方法init、getServletConfig、service、getServletInfo、destroy
- 我们一般只需要service方法 ``` package com.code.web;
import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException;
@WebServlet(urlPatterns = “/demo”) public class HelloServlet implements Servlet {
/*** 被创建的时候,调用1次* @param servletConfig* @throws ServletException*/@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("init");}/*** 获取ServletConfig配置对象*/@Overridepublic ServletConfig getServletConfig() {System.out.println("getServletConfig");return null;}/*** 调用的时候,多次调用多次执行*/@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("service");}@Overridepublic String getServletInfo() {System.out.println("getServletInfo");return null;}/*** 销毁的时候,执行1次*/@Overridepublic void destroy() {System.out.println("destroy");}
}
<a name="BMEVr"></a>#### GenericServlet- GenericServlet只暴露service()
package com.code.web;
import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet; import java.io.IOException;
@WebServlet(“/demo2”) public class Servlet2 extends GenericServlet {
@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("demo2");}
}
<a name="zycfk"></a>#### HttpServlet- 对http协议的一种封装,简化操作
package com.code.web;
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet(“/demo3”) public class Servlet3 extends HttpServlet {
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doGet(req, resp);System.out.println("doGet");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);System.out.println("doPost");}
}
- service方法封装成get、post
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String method = req.getMethod();long lastModified;if (method.equals("GET")) {lastModified = this.getLastModified(req);if (lastModified == -1L) {this.doGet(req, resp);} else {long ifModifiedSince;try {ifModifiedSince = req.getDateHeader("If-Modified-Since");} catch (IllegalArgumentException var9) {ifModifiedSince = -1L;}if (ifModifiedSince < lastModified / 1000L * 1000L) {this.maybeSetLastModified(resp, lastModified);this.doGet(req, resp);} else {resp.setStatus(304);}}} else if (method.equals("HEAD")) {lastModified = this.getLastModified(req);this.maybeSetLastModified(resp, lastModified);this.doHead(req, resp);} else if (method.equals("POST")) {this.doPost(req, resp);} else if (method.equals("PUT")) {this.doPut(req, resp);} else if (method.equals("DELETE")) {this.doDelete(req, resp);} else if (method.equals("OPTIONS")) {this.doOptions(req, resp);} else if (method.equals("TRACE")) {this.doTrace(req, resp);} else {String errMsg = lStrings.getString("http.method_not_implemented");Object[] errArgs = new Object[]{method};errMsg = MessageFormat.format(errMsg, errArgs);resp.sendError(501, errMsg);}}
```
