package cn.lnu.web.filter; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; 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.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; //�������дʻ�Ĺ����� public class wordsFilter implements Filter { private List<String> banWords = new ArrayList();//ȡ����ÿһ�������൱��һ��������ʽ private List<String> auditWords = new ArrayList(); private List<String> replaceWords = new ArrayList(); public void init(FilterConfig filterConfig) throws ServletException { try{ String path = wordsFilter.class.getClassLoader().getResource("cn/lnu/words").getPath(); File files[] = new File(path).listFiles(); for(File file : files){ if(!file.getName().endsWith(".txt")){ continue; } BufferedReader br = new BufferedReader(new FileReader(file)); String line = null; while((line=br.readLine())!=null){ String s[] = line.split("\\|"); if(s.length!=2){ continue; } if(s[1].trim().equals("1")){ banWords.add(s[0].trim()); } if(s[1].trim().equals("2")){ auditWords.add(s[0].trim()); } if(s[1].trim().equals("3")){ replaceWords.add(s[0].trim()); } } } System.out.println("haha"); }catch (Exception e) { throw new RuntimeException(e); } } //���������µ������е���������û�����дʻ� public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletRequest request=(HttpServletRequest) req; HttpServletResponse response=(HttpServletResponse) resp; //����ύ�������Ƿ��н��ô� Enumeration e=request.getParameterNames(); while(e.hasMoreElements()){ String name=(String) e.nextElement(); String data=request.getParameter(name); String regdata=data.replaceAll(" +", "");//����������еĴ��ڵ�һ�������ո��滻Ϊ"",��ȥ���ո� for(String regex:banWords){ Pattern pattern=Pattern.compile(regex);//���ַ���ʽ��������ʽ����Ϊ�����ʽ��������ʽ Matcher match=pattern.matcher(regdata);//�����������ʽ����ȥƥ���ַ���data if(match.find()){//����ַ���data�д��ڿ��Ա�pattern�������ƥ����Ӵ���find�����ͷ���true�����򷵻�false request.setAttribute("message", "�����а����Ƿ��ʻ㣬��������ύ"); request.getRequestDispatcher("/message.jsp").forward(request, response); return; } } } //�����˴ʣ�������˴ʣ�������������ԭ�е�request��û�и������ܣ���Ҫ��ǿ֮���ٷ��� //����滻�ʣ�Ҳ�Ƿ��У�Ҳ��Ҫ��ǿrequest chain.doFilter(new MyRequest(request), response); } class MyRequest extends HttpServletRequestWrapper{ private HttpServletRequest request; public MyRequest(HttpServletRequest request){ super(request); this.request=request; } @Override public String getParameter(String name) {//ʹ�÷���֮��servletDemo1�л�������Ǹ���֮������� // TODO Auto-generated method stub String data=request.getParameter("resume");//�����Ȼ��û�и���֮ǰ������ //��������������û����˴ʣ��еĻ����������� if(data==null){ return null; } for(String regex:auditWords){ Pattern pattern=Pattern.compile(regex);//java���Pattern�������һ��������ʽ Matcher m=pattern.matcher(data);//����һ����ʾƥ������ƥ���� if(m.find()){//��ʾ�����д�����˴ʻ㣬����˵�����ǡ�����һ�ѷ�����ǹ����Ҫ�缦�𣿡�,���������ǹ����˴� String value=m.group();//��ʾ�ҵ��ͻ����ύ��������ƥ��������ʽ�����ݣ����Ƿ�����ǹ �� //��ԭʼ�����滻�ɸ�������,Ȼ����data�ٽ�ÿ���滻���֮������ݼ�ס data=data.replaceAll(regex, "<font color='red'>"+value+"</font>"); } } //����Ƿ����滻�� for(String regex:replaceWords){ Pattern pattern=Pattern.compile(regex);//java���Pattern�������һ��������ʽ Matcher m=pattern.matcher(data);//����һ����ʾƥ������ƥ���� if(m.find()){//��ʾ�����д����滻 //���������滻�ʵ�������****�滻�� data=data.replaceAll(regex, "****"); } } //����һ�ѷ�����ǹ����Ҫ�缦��****�𣿣���ǿ֮��Ľ���ǣ�������ǹ�͵缦����˴ʸ����ɺ�ɫ���Ĵ󽢶��滻�ʣ��滻��**** return data; } } public void destroy() { // TODO Auto-generated method stub } }