web.xml之servlet與filter配置
阿新 • • 發佈:2020-12-02
servlet配置
一個完整的servlet配置分為兩塊,< servlet >塊和< servlet-mapping >塊< servlet >
<servlet> <servlet-name>NameIsServletTest</servlet-name> <!-- 該servlet標識名,與servlet-mapping中的標識名對應 組成配對 --> <servlet-class>com.qq.web.servlet.ServletTest</servlet-class> <!-- 該servlet全類名 --> <init-param> <!-- 初始化引數 --> <param-name>paramName</param-name> <!-- 初始化引數 鍵--> <param-value>paramValue</param-value> <!-- 初始化引數 值--> </init-param> <init-param> <!-- 初始化引數 可配置多個--> <param-name>paramName2</param-name> <param-value>paramValue2</param-value> </init-param> </servlet>
< servlet-mapping >
<servlet-mapping>
<servlet-name>NameIsServletTest</servlet-name> <!-- 與上面<servlet>下的<servlet-name>一致組成配對 -->
<url-pattern>/test</url-pattern> <!-- 該servlet路由配置 -->
</servlet-mapping>
InitParameter獲取初始化引數
Enumeration<String> en1 = getInitParameterNames(); // getInitParameterNames()獲取初始化引數的key列舉 while (en1.hasMoreElements()) { String key = en1.nextElement(); System.out.println("en1-----value:"+getInitParameter(key)); // getInitParameter(key)通過key獲取初始化引數的值 } // 其實和上面是一樣的 Enumeration<String> en2 = getServletConfig().getInitParameterNames(); // 使用getServletConfig().getInitParameterNames()獲取初始化引數的key列舉 while (en2.hasMoreElements()) { String key2 = en2.nextElement(); System.out.println("en2-----value:"+getInitParameter(key2)); }
filter配置
同servlet完整的filter配置也分為兩塊,< filter >與< filter-mapping >< filter >
<filter>
<filter-name>FilterTest</filter-name> <!-- filter標識名 -->
<filter-class>com.qq.web.filter.FilterTest</filter-class> <!--filter全類名-->
<init-param> <!--初始化引數-->
<param-name>filterName</param-name>
<param-value>filterValue</param-value>
</init-param>
</filter>
< filter-mapping >
<filter-mapping>
<filter-name>FilterTest</filter-name> <!-- 標識名與上面的相同組成配對 -->
<url-pattern>/*</url-pattern> <!-- 匹配要過濾的請求url -->
<!--
/* , /login/* 模糊匹配 前面對上了就ok
/index ,/login 全路徑匹配 全部對上才行
*.html ,*.js 副檔名匹配,後面對上就ok,注意前面不能與 /
如果一個url能匹配上多個過濾器
過濾器都在xml中配置的話 按配置的前後順序執行
過濾器都在註解上配置的 按過濾器類名的字母排序執行
都有的話 先執行xml中配置的再執行註解配置的
-->
<!-- 過濾器攔截的請求型別 -->
<dispatcher>REQUEST</dispatcher> <!-- http請求 不寫預設時這個 -->
<dispatcher>FORWARD</dispatcher> <!-- 請求轉發 -->
<dispatcher>INCLUDE</dispatcher> <!-- jsp包含 -->
<dispatcher>ERROR</dispatcher> <!-- err時跳轉 -->
</filter-mapping>
filter獲取初始化引數
public void init(FilterConfig config) throws ServletException { // 在過濾器的init方法中用config獲取初始化引數
Enumeration<String> filterEn1 = config.getInitParameterNames();
while (filterEn1.hasMoreElements()){
System.out.println(config.getInitParameter(filterEn1.nextElement()));
}
}
上下文初始化引數
<context-param> <!-- 只能有一對鍵值用作應用的Servlet上下文初始化引數,引數名在整個Web應用中必須是惟一的,任意的Servlet和jsp都可以隨時隨地訪問它 -->
<param-name>contextName</param-name>
<param-value>contextValue</param-value>
</context-param>
// 獲取上下文初始化引數
Enumeration<String> contextEn = getServletContext().getInitParameterNames(); // 全域性的資源都在getServletContext()這裡
while (contextEn.hasMoreElements()) {
System.out.println("context-----value:"+getServletContext().getInitParameter(contextEn.nextElement()));
}