Servlet - upan/cheat-sheet GitHub Wiki

简介

Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

最早支持Servlet标准的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。

官方文档

Servlet 规范&文档

JavaEE 当前版本是7,正在进行8版本的开发。Servlet 是Java EE下的框架,不再JavaSE中。

项目使用

目前项目中使用的是3.1.0版本

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

重要概念和类

核心概念

  • Servlet
  • Filter

常用类:

  • HttpServlet
  • ServetConfig
  • ServletContext
  • Filter
  • FilterConfig
  • FilterChain
  • RequestDispatcher
  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
  • 一些 Listenser 类

Servlet 配置文件

Java Web 项目还需要一个非常重要的配置文件 web.xml ,每个 servlet 都必须在 web.xml 中定义并进行 URL 映射配置.

配置文件元素详解

加载顺序: content-param --> listener --> filter --> servlet ,通过查看3.0版本的xsd可以看到大概有以下一级节点:

  • context-param
    • param-name
    • param-value
  • filter
    • filter-name
    • filter-class :The fully qualified classname of the filter
    • async-supported
    • init-param
      • param-name
      • param-value
  • filter-mapping
    • filter-name
    • url-pattern
    • dispatcher
  • listener
  • servlet
    • servlet-name
    • servlet-class
    • jsp-file
    • init-param
    • load-on-startup
  • servlet-mapping
    • servlet-name
    • url-pattern
  • session-config
  • mime-mapping
  • welcome-file-list
  • error-page
  • jsp-config
  • security-constraint
  • login-config
  • security-role
  • message-destination
  • locale-encoding-mapping-list

,配置示例

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
<web-app>
    <filter>
        <filter-name>helloFilter</filter-name>
        <filter-class>demo.HelloFilter</filter-class>
    </filter>
 
    <filter-mapping>
        <filter-name>helloFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
     
    <servlet>
        <servlet-name>hello_world</servlet-name>
        <servlet-class>demo.HelloServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>hello_world</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
 
</web-app>

参考

⚠️ **GitHub.com Fallback** ⚠️