继承HttpServletRequestWrapper类后重写了getParameter ,getHeader ,getParameterValues方法,过滤器执行时这几个方法是被谁调用的呢?
具体代码如下:
public class NewXssFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(new NewXssHttpServletRequestWraper(
(HttpServletRequest)request), response);//对request和response进行过滤
}
@Override
public void destroy() {
}
}
继承HttpServletRequestWrapper类的代码:
public class NewXssHttpServletRequestWraper extends HttpServletRequestWrapper {
//构造函数
public NewXssHttpServletRequestWraper(HttpServletRequest request) {
super(request);
}
//重写getParameter
@Override
public String getParameter(String name) {
if(name.equals("packageToken")){
return checkToken(name);
}else{
return clearXss(super.getParameter(name));
}
}
//重写getHeader
@Override
public String getHeader(String name) {
return clearXss(super.getHeader(name));
}
//重写getParameterValues
@Override
public String[] getParameterValues(String name) {
String[] values = super.getParameterValues(name);
if (values == null) {
return null;
}
String[] newValues = new String[values.length];
for (int i = 0; i < values.length; i++) {
newValues[i] = clearXss(values[i]);
}
return newValues;
}
略。。。。
}
DEBUG应该会吧??
会调用你重写的方法,因为你传入的是NewXssHttpServletRequestWraper实例对象