❶ 如何配置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>
❷ 如何只過濾URL不過濾內容
你的問復題好像是只需要制Filter處理jsp的請求,只要改web.xml里Filter配置就可以。url-pattern別給/*,給/.jsp,如果需要過濾多種文件請求,可以再增加filter-mapping,每個的url-pattern對應一種文件。
<filter-mapping>
<filter-name></filter-name>
<url-pattern></url-pattern>
</filter-mapping>
❸ 在filter中,我要過濾所有JSP和action,但登錄頁login.jsp和login.action不能過濾,這樣的話怎麼配置
把login.jsp換一個後綴嘛,比如login.htm
❹ Java:現在Filter把所有請求都攔截了,怎麼使Filter不過濾login.jsp頁面呢
對於這種,抄我說兩種方法:
1、將你所有的JSP頁面單獨放在一個文件夾里(假如jspPage),jspPage文件夾里可根據類別分若乾子文件夾,再把相對應的JSP放在子文件夾里;
JS、CSS及圖片等分別放在外面的文件夾里(與文件夾jspPage並列)
再:<url-pattern>/jspPage/*</url-pattern>就行了
一般用的就是這種
2、在過濾的JAVA文件中,在doFilter方法里進行判斷,將後綴名為.css、.js等直接設置為通過就行了,這種較為復雜,在一些特殊情況下才用到,一般不
❺ filter 怎麼過濾指定目錄的jsp頁面
單獨寫個Filter類,實現Filter介面,在類裡面過濾掉含指定目錄的字元串,如果含有目錄字元串則拋出異常,最後在web.xml中將這個Filter類配置到<filter>標簽里即可
❻ java web中的filter許可權過濾問題
是login.jsp被嵌入到自iframe里吧?三種解決方案:
首頁菜單欄就做許可權控制,沒有許可權的菜單不展示
需要許可權的菜單點擊時先ajax請求後台判斷許可權,許可權通過了再載入頁面到iframe,否則頁面重定向到登錄頁
登錄頁加入js判斷該頁面是否處於iframe中,如果是則重寫parent.location到登錄頁
❼ 急!如何讓過濾器不過濾頁面中引用的CSS或JS頁面
對於這種,我說兩種方法:
1、將你所有的JSP頁面單獨放在一個文件夾里專(假如jspPage),jspPage文件夾里可根據屬類別分若乾子文件夾,再把相對應的JSP放在子文件夾里;
JS、CSS及圖片等分別放在外面的文件夾里(與文件夾jspPage並列)
再:<url-pattern>/jspPage/*</url-pattern>就行了
一般用的就是這種
2、在過濾的JAVA文件中,在doFilter方法里進行判斷,將後綴名為.css、.js等直接設置為通過就行了,這種較為復雜,在一些特殊情況下才用到,一般不推薦
❽ JSP中使用Filter的問題
你的filter裡面應該指定一下重定向!
就是session裡面沒有值的時候定向到哪個頁面!
你都是返回空!
❾ filter過濾器配置如何不過濾一些頁面
直接添加多個文件映射啊,為每個需要進行過濾的文件都寫個映射標簽
❿ java過濾器不過濾某個貨某一些路徑
首先在web.xml 配置 參數
<param-name>noLoginPaths</param-name> 參數名可自取
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.imooc.filter.LoginFilter</filter-class>
<init-param>
<param-name>noLoginPaths</param-name>
<param-value>login.jsp;fail.jsp;LoginServlet</param-value>
</init-param>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
然後在 Filter 中,創建一個FilterConfig 的引用, 這個引用在init中初始化,並且能夠通過它獲取<init-param>中的key和value ,
StringnoLoginPaths=config.getInitParameter("noLoginPaths");
然後通過判斷用戶請求的url 是否符合 noLoginPaths 中設置的不過濾選項,如果如何,就調用do.filter放行
關鍵代碼 :
if(noLoginPaths!=null){
String[]strArray=noLoginPaths.split(";");
for(inti=0;i<strArray.length;i++){
if(strArray[i]==null||"".equals(strArray[i]))continue;
if(request.getRequestURI().indexOf(strArray[i])!=-1){
arg2.doFilter(arg0,arg1);
return;
}
}
}
完整代碼:
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
{
privateFilterConfigconfig;
@Override
publicvoiddestroy(){
}
@Override
publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)throwsIOException,ServletException{
HttpServletRequestrequest=(HttpServletRequest)arg0;
HttpServletResponseresponse=(HttpServletResponse)arg1;
HttpSessionsession=request.getSession();
StringnoLoginPaths=config.getInitParameter("noLoginPaths");
Stringcharset=config.getInitParameter("charset");
if(charset==null){
charset="UTF-8";
}
request.setCharacterEncoding(charset);
if(noLoginPaths!=null){
String[]strArray=noLoginPaths.split(";");
for(inti=0;i<strArray.length;i++){
if(strArray[i]==null||"".equals(strArray[i]))continue;
if(request.getRequestURI().indexOf(strArray[i])!=-1){
arg2.doFilter(arg0,arg1);
return;
}
}
}
if(session.getAttribute("username")!=null){
arg2.doFilter(arg0,arg1);
}else{
response.sendRedirect("login.jsp");
}
}
@Override
publicvoidinit(FilterConfigarg0)throwsServletException{
config=arg0;
}
}