| 屬性 | 類型 | 對應 web.xml |
|---|---|---|
| filterName | String | <filter-name> |
| value / urlPatterns | String[] | <url-pattern> (二選一) |
| servletNames | String[] | <servlet-name> 在 filter-mapping 中 |
| dispatcherTypes | DispatcherType[] | ASYNC, ERROR, FORWARD, INCLUDE, REQUEST |
| initParams | WebInitParam[] | <init-param> |
| asyncSupported | boolean | <async-supported> |
@WebFilter(servletNames={"SimpleServlet"}, filterName="SimpleFilter")
public class LessThanSixFilter implements Filter { ... }
等同 web.xml:
<filter><filter-name>SimpleFilter</filter-name><filter-class>...</filter-class></filter>
<filter-mapping><filter-name>SimpleFilter</filter-name><servlet-name>SimpleServlet</servlet-name></filter-mapping>
標註類別為監聽器,需實作至少一個介面:ServletContextListener、ServletRequestListener、HttpSessionListener 等六種。
@WebListener("Demo Listener")
public class SimpleListener implements ServletContextListener { ... }
等同 <listener><listener-class>...</listener-class></listener>。
標註於 Servlet,聲明處理 multipart/form-data 請求。
| 屬性 | 類型 | 說明 |
|---|---|---|
| fileSizeThreshold | int | 超過此大小寫入臨時檔案 |
| location | String | 臨時檔案儲存路徑 |
| maxFileSize | long | 單檔最大位元組 (-1 無限制) |
| maxRequestSize | long | 整個請求最大位元組 (-1 無限制) |
將 Servlet/Filter/Listener 定義打包在 JAR 的 META-INF/web-fragment.xml,放入 WEB-INF/lib/ 即自動生效,無需修改主應用。
<web-fragment xmlns="https://java.sun.com/xml/ns/javaee"
version="3.0" metadata-complete="true">
<servlet>
<servlet-name>fragment</servlet-name>
<servlet-class>footmark.servlet.FragmentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fragment</servlet-name>
<url-pattern>/fragment</url-pattern>
</servlet-mapping>
</web-fragment>
<name> 標識片段,<ordering> 定義相對順序:
<name>FragmentA</name>
<ordering>
<after><name>FragmentB</name><name>FragmentC</name></after>
<before><others/></before>
</ordering>
<after>:必須在列出片段之後解析。<before>:必須在列出片段之前解析。<others/>:除自身外所有其他片段 (優先級低於具名)。