package com.jingdu.common;
創(chuàng)新互聯(lián)主營名山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā),名山h5小程序制作搭建,名山網(wǎng)站營銷推廣歡迎名山等地區(qū)企業(yè)咨詢
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IllegalCharacterFilter implements Filter {
private String[] characterParams = null;
private boolean OK=true;
public void init(FilterConfig config) throws ServletException {
// if(config.getInitParameter("characterParams").length()1)
// OK=false;
// else
// this.characterParams = config.getInitParameter("characterParams").split(",");
System.out.println("初始化");
}
@SuppressWarnings("unchecked")
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest servletrequest = (HttpServletRequest) request;
HttpServletResponse servletresponse = (HttpServletResponse) response;
String param = "";
String paramValue = "";
//設(shè)置請求編碼格式
servletresponse.setContentType("text/html");
servletresponse.setCharacterEncoding("UTF-8");
servletrequest.setCharacterEncoding("UTF-8");
java.util.Enumeration params = request.getParameterNames();
//循環(huán)讀取參數(shù)
while (params.hasMoreElements()){
param = (String) params.nextElement(); //獲取請求中的參數(shù)
String[] values = servletrequest.getParameterValues(param);//獲得每個參數(shù)對應(yīng)的值
for (int i = 0; i values.length; i++) {
paramValue = values[i];
//轉(zhuǎn)換目標(biāo)字符變成對象字符,可以多個。后期擴展特殊字符庫用于管理
paramValue = paramValue.replaceAll("'","");
paramValue = paramValue.replaceAll("@","");
paramValue = paramValue.replaceAll("胡錦濤","***");
//這里還可以增加,如領(lǐng)導(dǎo)人 自動轉(zhuǎn)義成****,可以從數(shù)據(jù)庫中讀取非法關(guān)鍵字。
values[i] = paramValue;
}
//把轉(zhuǎn)義后的參數(shù)重新放回request中
request.setAttribute(param, paramValue);
}
//繼續(xù)向下 執(zhí)行請求,如果有其他過濾器則執(zhí)行過濾器
arg2.doFilter(request, response);
}
public void destroy() {
// TODO Auto-generated method stub
}
}
很容易,首先建立一個字符串?dāng)?shù)組,也就是你需要過濾掉的html標(biāo)簽String[] filterArrays = new String[]{"html","/html","table","/table".....一系列有關(guān)html標(biāo)簽的東西}
當(dāng)你得到一個html代碼的字符串時你可以循環(huán)遍歷上面的數(shù)組,然后調(diào)用String自帶的方法replaceAll();
我給你簡單的示范一下啊
String str = "dfgdgdfgdgd";//需要過濾的帶有HTML標(biāo)簽的代碼字符串
for(int i=0;ifilterArrays.length;i++){
if(str.indexOf(filterArrays[i])!=0){
str = str.replaceAll(filterArrays[i],"");//將html標(biāo)簽替換成了空格
}
}
這樣就搞定了,主要是你需要在filterArrays中增加你需要過濾的字符串,當(dāng)然還會有更好的辦法,可以不用增加這樣的數(shù)組,因為出現(xiàn)""必然會有"",或者"/"這樣的標(biāo)簽,但是這樣做可能會將一些無關(guān)的也過濾掉了,總之兩種方法都可以,第一種呢我都給你寫了例子!祝你成功啊
弄過濾器,要實現(xiàn)filter接口,下面我寫一個小例子
主要是用過濾器處理中文編碼,至于你要用來做什么,你再自己寫。。。比如權(quán)限控制,登錄驗證,之類
//下面這是一個類。。。。
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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EncodingFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GBK");//處理編碼
response.setCharacterEncoding("GBK");//處理編碼
chain.doFilter(request, response);//讓過濾器執(zhí)行下一個請求
}
public void destroy() {}
public void init(FilterConfig arg0) throws ServletException {}
}
//下面這個是在web.xml下的配置
filter
filter-nameencoding/filter-name
filter-class
剛剛創(chuàng)建的那個實現(xiàn)filter接口的類的位置
例如:com.temp.filter.EncodingFilter
/filter-class
/filter
filter-mapping
filter-nameencoding/filter-name
url-pattern*.jsp這個是以jsp為后綴的文件都攔截下來/url-pattern
/filter-mapping
可以寫多個的filter-mapping來配置你所要攔截的東西
恩,有點嘮叨,希望可以幫助到你
public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) throws IOException, ServletException {
if (null != encoding) {
HttpServletRequest request = (HttpServletRequest)srequest;
HttpServletResponse response = (HttpServletResponse)sresponse;
// 對請求進行編碼設(shè)置
request.setCharacterEncoding(encoding); //把請求用指定的方法編碼
response.setContentType("text/html");
response.setCharacterEncoding(encoding); //把返回響應(yīng)指定 編碼方式
System.out.println("------------過濾編碼-------------" + encoding);
}
// 把處理權(quán)限交給下一個過濾器
chain.doFilter(srequest, sresponse);
}//這是核心方法
正好項目中有用到
看到Servlet,可以明確這是個web項目。
所以你需要新建一個web工程,然后在web.xml中配置該過濾器。
因為你遺漏了重要的一步。正確的方法如下:
if(encoding!=null){
//設(shè)置request字符編碼
request.setCharacterEncoding(encoding);
//設(shè)置response字符編碼
response.setContentType("text/html;charset="+encoding);
response.setCharacterEncoding(encoding);
}
//傳遞給下一個過濾器
chain.doFilter(request,?response);