在web.xml中的配置
<!-- 配置处理特殊字符的拦截器 -->
<filter>
<filter-name>HRRecruitFilter</filter-name>
<filter-class>com.suning.zphr.web.hrrecruit.filter.HRRecruitFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HRRecruitFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter的写法
public class HRRecruitFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HRRecruitFilterRequest wrapRequest = new HRRecruitFilterRequest(req,
request.getParameterMap());
chain.doFilter(wrapRequest, response);
}
@Override
public void destroy() {
}
}
request的包装类的方法重写,这样的目的在于等request再次使用的时候便可以,直接使用被重写的方法
public class HRRecruitFilterRequest extends HttpServletRequestWrapper {
@SuppressWarnings("rawtypes")
private Map params;
@SuppressWarnings("rawtypes")
public HRRecruitFilterRequest(HttpServletRequest request, Map newParams) {
super(request);
this.params = newParams;
}
@SuppressWarnings("rawtypes")
public Map getParameterMap() {
return params;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public Enumeration<?> getParameterNames() {
Vector l = new Vector(params.keySet());
return l.elements();
}
public String[] getParameterValues(String name) {
Object v = params.get(name);
if (v == null) {
return null;
} else if (v instanceof String[]) {
String[] value = (String[]) v;
for (int i = 0; i < value.length; i++) {
value[i] = replaceTemp(value[i]);
}
return value;
} else if (v instanceof String) {
String value = (String) v;
value = replaceTemp(value);
return new String[] { value };
} else {
return new String[] { v.toString() };
}
}
public String getParameter(String name) {
Object v = params.get(name);
if (v == null) {
return null;
} else if (v instanceof String[]) {
String[] strArr = (String[]) v;
if (strArr.length > 0) {
String value = strArr[0];
value = replaceTemp(value);
return value;
} else {
return null;
}
} else if (v instanceof String) {
String value = (String) v;
value = replaceTemp(value);
return value;
} else {
return v.toString();
}
}
/**
* 提取replace公共方法
*
* @param
* @return
*/
private String replaceTemp(String value) {
value = value
.replaceAll(HRRecruitFilterConstants.HUAN_HANG_WIN,
HRRecruitFilterConstants.KONG_CHUAN)
.replaceAll(HRRecruitFilterConstants.HUAN_HANG_MAC,
HRRecruitFilterConstants.KONG_CHUAN)
.replaceAll(HRRecruitFilterConstants.HUAN_HANG_LINUX,
HRRecruitFilterConstants.KONG_CHUAN);
return value;
}
}
夹带一点正则表达式的写法
public class HRRecruitFilterConstants {
public static final String HUAN_HANG_WIN="\r\n";
public static final String HUAN_HANG_MAC="\r";
public static final String HUAN_HANG_LINUX="\n";
public static final String KONG_CHUAN="";
}