编码格式
web.xml配置
<!-- 中文编码 -->
<filter>
<filter-name>chinesefiter</filter-name>
<filter-class>com.eduask.control.filter.ChineseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>chinesefiter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
实现Filter
public class ChineseFilter implements Filter{
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
chain.doFilter(req, resp);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
过滤敏感词
1、敏感词设置
public class WordUtil {
// 过滤单词的工具,有增删改要过滤的内容的功能 单例
private static List list = new ArrayList();
// 初始化的单词
static {
list.add("fuck");
}
public static List getWords() {
return list;
}
//增加敏感词
public static void addWords(String name) {
list.add(name);
}
//移除敏感词
public static void remove(String name) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i) == "b") {
list.remove(i--);
}
}
}
//修改敏感词
}
2、设置到servlet,重写里面的方法
public class MyFilterForWord extends HttpServletRequestWrapper{
//包装类
public MyFilterForWord(HttpServletRequest request) {
super(request);
}
//重新getParameter方法
public String getParameter(String name){
String words=super.getParameter(name);
//之前的e
System.out.println("过滤前的内容:"+words);
List<String> list=WordUtil.getWords();
for(String l:list){
words=words.replace(l, "**");
}
System.out.println();
return words;
}
}
3、web.xml设置
<!-- 过滤敏感词 -->
<filter>
<filter-name>sensitive</filter-name>
<filter-class>com.eduask.control.filter.SensitiveWordsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sensitive</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
实现Filter
public class SensitiveWordsFilter implements Filter{
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
//将req转为http
HttpServletRequest hreq=(HttpServletRequest) req;
MyFilterForWord myfilter=new MyFilterForWord(hreq);
// 设置过滤后的req
chain.doFilter(myfilter, resp);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
中文编码过滤
<!-- 编码过滤器 -->
<filter>
<filter-name>setCharacterEncoding</filter-name>
<filter-class>com.edusak.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
//
public class EncodingFilter implements Filter {
private String encoding;
private Map<String,String> params=new HashMap<String,String>();
@Override
public void init(FilterConfig config) throws ServletException {
//初始化
encoding=config.getInitParameter("encoding");
for(Enumeration e=config.getInitParameterNames();e.hasMoreElements();){
String name=(String) e.nextElement();
String value=config.getInitParameter(name);
params.put(name, value);
}
}
@Override
public void destroy() {
System.out.println("end do the coding filter");
params=null;
encoding=null;
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding(encoding);
chain.doFilter(req, resp);
}
}