阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Servlet概述

114次阅读
没有评论

共计 2600 个字符,预计需要花费 7 分钟才能阅读完成。

一、什么是 Servlet

​ Servlet 是 JavaWeb 的 三大组件之一,它属于动态资源。Servlet 的作用是处理请求,服务器会把接收到的请求交给 Servlet 来处理,在 Servlet 中通常需要:

  • ​ 接收请求数据;
  • ​ 处理请求;
  • ​ 完成响应。

例如客户端发出登录请求,或者输出注册请求,这些请求都应该由 Servlet 来完成处理!Servlet 需要我们自己来编写,每个 Servlet 必须实现 javax.servlet.Servlet 接口。

二、实现 Servlet 的方式

实现 Servlet 有三种方式:

​ 1、实现 javax.servlet.Servlet 接口;

​ 2、继承 javax.servlet.GenericServlet 类;

​ 3、继承 javax.servlet.http.HttpServlet 类;

通常我们会去继承 HttpServlet 类来完成我们的 Servlet,但学习 Servlet 还要从 javax.servlet.Servlet 接口开始学习。

了解 Servlet 接口

Servlet.java

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(); }

了解 GenericServlet 类

GenericServlet 是 Servlet 接口的实现类,我们可以通过继承 GenericServlet 来编写自己的 Servlet。

GenericServlet.java

public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable {private static final long serialVersionUID = 1L; private transient ServletConfig config; public GenericServlet() {} @Override public void destroy() {} @Override public String getInitParameter(String name) {return getServletConfig().getInitParameter(name); } @Override public Enumeration<String> getInitParameterNames() {return getServletConfig().getInitParameterNames(); } @Override public ServletConfig getServletConfig() {return config; } @Override public ServletContext getServletContext() {return getServletConfig().getServletContext(); } @Override public String getServletInfo() {return ""; } @Override public void init (ServletConfig config) throws ServletException {this.config = config; this.init();} public void init () throws ServletException {} public void log(String msg) {getServletContext().log(getServletName() + ":" + msg); } public void log(String message, Throwable t) {getServletContext().log(getServletName() + ":" + message, t); } @Override public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; @Override public String getServletName() {return config.getServletName();} }

了解 HttpServlet 类

​ HttpServlet 类是 GenericServlet 的子类,它提供了对 HTTP 请求的特殊支持,所以通常我们都会通过继承 HttpServlet 来完成自定义的 Servlet。

HttpServlet.java

public abstract class HttpServlet extends GenericServlet {protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {……} @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { HttpServletRequest request; HttpServletResponse response; try {request = (HttpServletRequest) req; response = (HttpServletResponse) res; } catch (ClassCastException e) {throw new ServletException("non-HTTP request or response"); } service(request, response); } …… }

注意:

Servlet 中的方法大多数不由我们来调用,而是由 Tomcat 来调用。并且 Servlet 的对象也不由我们来创建,由 Tomcat 来创建!

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-06发表,共计2600字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中