使用過濾器,將非法字眼用*代替
javaweb佈局檔案:
步驟:
1.建立提交文字的jsp頁面
2.建立過濾器對提交的文字進行過濾(藍色文字為主要編寫程式碼,綠色程式碼建立過濾器後自動生成)
/**
* Servlet Filter implementation class EoorFilter
*/
/*採用註解攔截所有請求*/
@WebFilter(urlPatterns="/*")
public class EoorFilter implements Filter {
/*定義一個集合,用於存放不文明的文字*/
private List<String> list;
/**
* Default constructor.
*/
public EoorFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
/*對文字亂碼進行處理*/
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
/*定義一個動態代理*/
HttpServletRequest proxy=(HttpServletRequest)Proxy.newProxyInstance(req.getClass().getClassLoader(),
new Class[] {HttpServletRequest.class}, new InvocationHandler() {@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
String methodName=method.getName();
if("getParameter".equals(methodName)) {
/*獲取提交的文字文字*/
String value=req.getParameter(args[0].toString());
/*獲取提交方法是get還是post*/
String methodSubmit=req.getMethod();
/*如果提交方法是get方法,則對文字亂碼進行處理*/
if("GET".equals(methodSubmit)) {
value=new String(value.getBytes("ISO-8859-1"),"utf-8");
}
/*將不文明的字眼用*代替*/
for(String str:list) {
if(value.contains(str)) {
value=value.replace(str, "*");
}
}
return value;
}else {
Object invoke = method.invoke(req, args);
return invoke;
}
}
});
chain.doFilter(proxy, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
/*給集合新增不文明的文字*/
list=new ArrayList<String>();
list.add("媽");
list.add("蛋");
list.add("姐");
}
}
3.建立servlet將提交的文字傳送到另一頁面
4.建立接收過濾後文本的jsp頁面