Servlet详解

Servlet是什么:

Servlet是Server+Applet的缩写,表示一个服务器应用。Servlet是一套规范,按照这个规范编写代码就可以直接在Java服务器上运行。

Servlet接口:

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

1、init方法在容器启动时被容器调用(当load-on-startup设置为负数或者不设置时,会在第一次Servlet用到时才被调用)只会调用一次。init方法调用回接受一个ServletConfig类型的参数,是容器传进去的。Servlet-Config指的是Servlet的配置。在web.xml中定义Servlet时通过init-param标签配置的参数就是通过ServletConfig保存的。

2、getServletConfig用于获取ServletConfig。

3、service方法用于处理一个请求。

4、getServletInfo获取一些Servlet相关信息,如作者、版权信息等,这个方法需要自己实现,该接口默认返回空字符串;

5、destroy用于在Servlet销毁(关闭服务器)时释放一些资源,只会被调用一次。

ServletConfig接口:

public interface ServletConfig {
  public String getServletName();
  public ServletContext getServletContext();
  public String getInitParameter(String name);
  public Enumeration<String> getInitParameterNames();
}

1、getServletName方法用于获取Servlet的名字,也就是在web.xml中定义的servlet-name;

2、getInitParameter方法获取init-param配置的参数。

3、getInitParameterNames方法用于获取所有的init-param的名字集合。

4、getServletContext返回值是ServletContext代表是应用本身,既然代表应用本身,那么ServletContext中的设置的参数,可以被当前应用的所有Servlet共享。我们经常把参数保存在Session作用域里,或者Application作用域里(保存在了ServletContext中)getServletContext().setAttribute("name","value");。ServletConfig是Servlet级的,而ServletContext是Context级别的。ServletContext功能很强大,并不仅仅保存参数。在web.xml使用context-param配置的参数配置到了ServletContext,使用init-param配置到了ServletConfig。

5、同时使用context-param标签和setAttribute配置了同名参数并不会覆盖和影响。它们是两套数据,是互不干扰的。

GenericServlet类

GenericServlet是Servlet的默认实现,主要做了三件事。实现了ServletConfig接口,可以直接调用ServletConfig里的方法、提供了无参的init方法、提供了log方法。

GenericServlet实现了ServletConfig接口,为方便调用,并做了部分封装。如获取ServletContext可以直接调用GenericServlet的getServletContext方法,不需要getServletConfig().getServletContext();

HttpServlet类

1、HttpServlet是用Http协议实现的Servlet的基类,写Servlet时直接继承HttpServlet即可,无需从头实现Servlet接口。SpringMVC中的Dispather就是继承了HttpServlet。HttpServlet是跟协议相关的。主要关心是如何处理请求的。所以HttpServlet类主要重写了service方法。具体逻辑是:先将Servlet中的Request和Response转化为了HttpServletRequest和HttpServletResponse然后根据Http请求的类型不同将请求路由到不同的处理方法。

2、方法主要包含:doXXX的结构,doGet、doPost、doPut、doDelete

3、HttpServlet主要将不同的请求方式,路由到不同的处理方法,但SpringMVC中底层由将所有请求合并到统一的一个方法中进行处理。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值