美文网首页
详解Servlet

详解Servlet

作者: DerrickWang | 来源:发表于2018-06-19 17:41 被阅读0次
  • Server + Applet
  • Servlet接口(拿到一套规范 我们第一时间 关注接口)
//javax.servlet.Servlet
public interface Servlet{
    public void init(ServletConfig config) throws ServletException;
    public ServletConfig getServletConfig();
    //service方法用于具体处理一个请求
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
    public String getServletInfo();
    public void destroy();
}

以上 我们可以看到ServletConfig需要了解一哈
init方法被调用时会接收到一个ServletConfig类型的参数,是容器传进去的。顾名思义,就是Servlet的配置
比如web.xml中

    <!-- spring config -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-config.xml</param-value>
    </context-param>

<!-- spring character encoding -->
    <filter>
        <filter-name>Character Encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

这里面init-param标签配置的参数就保存在ServletConfig里面
Spring MVC的Servlet指定配置文件位置的contextConfigLocation也保存于此

  • init方法
    Tomcat里面init方法是在org.apache.catalina.core.StandardWrapper里面的initServlet方法中调用的,ServletConfig传入的是StandardWrapper(里面封装着Servlet)自身的门面类StandardWrapperFacade(https://www.jianshu.com/p/8cda90bdf90b)。其实这也很好理解,Servlet是通过xml文件配置的,在解析xml时就会把配置参数给设置进去,这样StandardWrapper本身就包含配置项了,当然,并不是所有StandardWrapper的内容都是和Config相关的,所以就用了其门面列。
    ServletConfig接口定义
package javax.servlet;

import java.util.Enumeration;

public interface ServletConfig {
    String getServletName();

    ServletContext getServletContext();

    String getInitParameter(String var1);

    Enumeration getInitParameterNames();
}

其中getServletContext()返回的代表这个应用本身(ServletContext其实就是tomcat中context的门面类ApplicationContextFacade)既然ServletContext代表应用本身,那么ServletContext里面设置的参数就可以被当前应用的所有Servlet共享了。平时项目中参数可以保存在Session中,也可以保存在Application中,而后者很多时候就保存在了ServletContext中。
我们可以这么理解,ServletConfig是Servlet级的,而ServletContext是Context级的(也就是Application)。当然ServletContext的功能要强大很多,并不只是保存一下配置参数,不然干脆叫ServletContextConfig好咯

  • GenericServlet

相关文章

  • Java Servlet API

    Servlet 支持的版本 Servlet 3.0 新特性详解 Servlet 3.0 新特性概述Servlet ...

  • Servlet详解

    一、Servlet中的线程安全问题 二、Servlet的配置对象: 三、ServletContext详解 插入:S...

  • javaweb学习总结(一)servlet开发

    一、ServletConfig详解 1.1 配置Servlet初始化参数 在Servlet的配置文件中,可以使用一...

  • 详解Servlet

    Server + Applet Servlet接口(拿到一套规范 我们第一时间 关注接口) 以上 我们可以看到Se...

  • servlet详解

    servlet简介 servlet是在java EE平台中用于接收和响应终端用户的请求。它是所有web应用程序的核...

  • Servlet详解

    Servlet 简介 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套...

  • 详解servlet

    什么是Servlet Servlet是Server+Applet的缩写,表示一个服务应用。其实Servlet就是一...

  • Servlet详解

    如果网页显示的内容在服务器的数据库中,除了负责显示的HTML标记之外,必须还要有完成这些业务功能的代码存在。这种网...

  • Servlet 的常见错误总结

    Servlet 的常见错误总结 HTTP状态码详解 404错误:资源未找到原因一:在请求地址中的servlet的别...

  • Servlet中涉及到的Filter和Listener

    Servlet中的过滤器和监听器详解 过滤器 Filter 并不是一个标准的Servlet ,它不能处理用户请求,...

网友评论

      本文标题:详解Servlet

      本文链接:https://www.haomeiwen.com/subject/ddczeftx.html