不可小觑的Filter (二)

2014-11-24 10:53:19 · 作者: · 浏览: 1
e="" ||name =" " || age==null){
JOptionPane.showMessageDialog(null,"用户名和年龄输入错误!");
dispatch.forward(request,response);
return ;

}else{
try{

age1=Integer.parseInt(age);
}catch(Excepiton e){

//JOptionPane.showMessageDialog(null,"年龄必须为数字!");
dispatch.forward(request,response);//如果是错误页面就到erroroutput.jsp中
return ;

}
}


//正确的输入,chain会自动查找下一个链,但是下面没有了,所以,就会跳转页面了,action="output.jsp"
chain.doFilter(request,response);


}

}

encodefilter.java:

[java] package servletbean;
public class encodefilter implements Filter{

public void doFilter (ServletRequest request, ServletResponse response,FilterChain chain ) throws IOException ,ServletException{

if (request.getCharacterEncoding()==null){

System.out.println(encoding);
request.setCharacterEncoding(encoding);
}

//到下一个链
chain.doFilter(request,response);
}



public void init(FilterConfig fConfig) throws SevletException {

this.config=fConfig;
encoding =fConfig.getInitParameter("encoding");

}
}

package servletbean;
public class encodefilter implements Filter{

public void doFilter (ServletRequest request, ServletResponse response,FilterChain chain ) throws IOException ,ServletException{

if (request.getCharacterEncoding()==null){

System.out.println(encoding);
request.setCharacterEncoding(encoding);
}

//到下一个链
chain.doFilter(request,response);
}

public void init(FilterConfig fConfig) throws SevletException {

this.config=fConfig;
encoding =fConfig.getInitParameter("encoding");

}
}

input.jsp:

[java
















name
age













web.xml:filter是有顺序的。

[java]





encodefilter
encodefilter
servletbean.encodefilter

encoding
GB2312




encodefilter
/*












myfilter
myfilter
servletbean.myfilter

encoding
GB2312




myfilter
/output.jsp



encodefilter
encodefilter
servletbean.encodefilter

encoding
GB2312


encodefilter
/*





myfilter
myfilter
servletbean.myfilter

encoding
GB2312


myfilter
/output.jsp

一点儿小结:

过滤器可以在请求到达JSP或Servlet之前或响应返回客户端之前添加一些额外的操作。
如果有多个JSP页面和Servlet都需要进行一个相同或相似的操作,我们可以把这个操作抽取到一个Servlet过滤器中,并通过匹配路径截获感兴趣JSP或Servlet。


注:以上部分,源于众多网络资源的整合,并非原创,仅限学习交流。

name
age