⑴ web.xml中的過濾器可否動態配置
直接使用spring的過濾器就可以定義好對應filter和filter-mapping之後即可自動進行過濾,典型的回就是編碼過答濾器。
<filter>
<filter-name>CharacterEncodingFilter</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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
備註:
這個是固定寫法,代碼中的「*」表示所有內容都必須經過此過濾器,也可以自定義類型。
也可以自動與過濾器,之後只需要繼承自Filter 即可。
⑵ jsp中的中文亂碼過濾器如何寫,在web.xml里如何配置有沒勞永逸的決絕方案
寫在jsp文件中 只對post有效. request.setCharacterEncoding("gbk");該代碼一般放在最前面. 上面這行代碼只能getParameter()前設置,否則此代碼無效.
⑶ 如何配置Filter過濾器處理JSP中文亂碼
注意問題:在學慣用selvert的過濾器filter處理中文亂碼時,在filter配置初始化時用了utf-8處理中文亂碼,而在提交的jsp頁面中卻用了gbk。雖然兩種都可以出來中文亂碼,但是卻造成了處理亂碼的格式不一致。所以編譯出錯。
解決方法:所有地方都用utf-8或gbk
//過濾器類
CharactorFilter.jsp
package cn.com.Filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharactorFilter implements Filter { //繼承Filter類
//字元編碼
String encoding=null;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(encoding!=null){
//設置request字元編碼
request.setCharacterEncoding(encoding);
//設置response字元編碼
response.setContentType("text/html;charset="+encoding);
}
//傳遞給下一個過濾器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
//獲取初始化參數
encoding=filterConfig.getInitParameter("encoding");
}
public void destroy() {
// TODO Auto-generated method stub
encoding=null;
}
}
web.xml
<filter> <!--注意這里是filter,不要配置成servlet-->
<filter-name>CharactorFilter</filter-name> <!--過濾器名稱-->
<filter-class>cn.com.Filter.CharactorFilter</filter-class> <!--過濾器的完整類名-->
<init-param> <!--初始化參數-->
<param-name>encoding</param-name> <!--參數名稱-->
<param-value>utf-8</param-value> <!--參數值-->
</init-param>
</filter>
<filter-mapping> <!--過濾器映射-->
<filter-name>CharactorFilter</filter-name><!--過濾器名稱-->
<url-pattern>/*</url-pattern><!--URL映射,給所有頁面處理亂碼-->
</filter-mapping>
⑷ 在web.xml中,配置過濾器出現的問題
你把順序寫錯了,它是根據上面的dtd規范來的,你把滑鼠移上錯誤那裡去看,它有每個標簽的先後順序,看那filter和filter-mapping是寫在servlet前面的,明白問題所在了么
⑸ web.xml 配置過濾器 問題
伙計,別這樣寫了,出錯的原因不在過濾器本身,而是在xml文件上,xml文件不支持通配符版,所以你可以把<url-pattern>的值權改為"*",默認全都過濾,然後在過濾器裡面寫一個正則表達式:
String str = "[\\w]{1,}\\.jsp$";來判斷是否是jsp頁面,如果是就不執行doFilter()方法,這樣過濾才算靈活,獲取請求的文件名不用我說了吧?相信你會的
⑹ Java XML 配置過濾器錯誤
<?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" version="2.5"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>//這里填你過濾器的路徑com.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
⑺ 在web.xml中加入過濾器
在web.xml中加入過濾器,參考代碼如下:
<filter>
<filter-name>authority</filter-name> //過濾器的名稱,可以自行修改
<filter-class>com.topcheer.filter.AuthorityFilter</filter-class>
<init-param> //初始化的參數
<param-name>NotRequiredAuthorityURL</param-name>
<param-value>/downloadImageControl.action,/initLogin.action,/default.jsp,/logout.jsp,/invalidation.jsp,/login.action,/default.action</param-value>
</init-param> //初始化的參數
<init-param> //初始化的參數
<param-name>invalidURL</param-name> //過濾器要過濾的對象,可自行設置
<param-value>/invalidation.jsp</param-value>
</init-param>
</filter>
<filter-mapping> //過濾器映射
<filter-name>authority</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping> //過濾器映射
<filter-mapping> //過濾器映射
<filter-name>authority</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
⑻ 為什麼我項目創建了過濾器web。XML配置也沒問題,還存在中文亂碼的問題
<?xml version="1.0" encoding="UTF-8"?>
你的xml,指定編碼沒。第一行。
⑼ 懂java進,為什麼我在web.xml中配置過濾器,然後就找不到路徑了,都是404錯誤
因為你的filter可能配置錯誤,導致tomcat無法啟動你的web應用,於是就404了,對於filter錯誤是最麻煩的,因為每次錯誤都基本不太一樣。需要仔細檢查
⑽ web-xml文件配置過濾器就報404或者直接進不了網頁
載入你配抄置的類出錯了吧
找不到類的說
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
... 30 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/RequestContext
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.(Class.java:2389)