用过滤器做好错误记录

 package Doudya.Page.Listener;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.FilterChain;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.io.IOException;
import javax.servlet.ServletException;


public class EncodingFilter implements Filter{
 protected FilterConfig fc;
 private String eds = "utf-8";
 public void init(FilterConfig fc) throws ServletException{
  this.fc = fc;
  this.eds = fc.getInitParameter("encoding");
 }
 public void doFilter(final ServletRequest sq,final ServletResponse sp,FilterChain nfc) throws IOException,ServletException{
   HttpServletResponse hsp = (HttpServletResponse)sp;
   HttpServletRequest hsq = (HttpServletRequest)sq;
   HttpSession hs = hsq.getSession();

try{

   hsp.setCharacterEncoding(eds);
   hsp.getWriter().println("<!-- 本页已经设置编码为/"" + eds + "/" -->");
   nfc.doFilter(sq,sp);

}catch(Exception e){/***这里很可能会捕捉到所有页面上的错误***/}
 }
 public void setFilterConfig(final FilterConfig fc){
  this.fc = fc;
 }
 public void destroy(){
  this.fc = null;
 }
}

/***********************************************************************************************/

       上面是一个简单的过滤器,它可以在每个jsp文件的上方加上一行字,也可以把页面上的所有错误忽略掉。哈哈。其实就是那个空的catch。这是我自己程序中出现Bug的地方啦。因为我要调试一个错误,可是每一次都会跳转到固定的错误页/error.jsp上而error.jsp的exception却是空的,我很疑惑。(原来的catch不是空的,现在我把它去掉了,为了大家看得更清楚。)。

        那么,我发这篇文章的目的就出来了。     我想,大家尽可以利用这个Bug来做点什么了。我们可以利用它把所有页面上的错误都收集起来,以便修复,这可比在每一页上都加入错误处理要方便得多。还可以利用我写注释的方法为每一个页面都写上一些东西,即使别人加了新的页面,他的页面上也会带上你加的东西,好玩不???

       反正我觉得很好玩。不过这样会使验证码的Servlet出现问题,因为它会先写上一些字然后再设置contentType然后就乱套了,图片就不能用了。所以配置这个过滤器最好避开验证码的Servlet。在我这里设置的是*.jsp。我想,如果把htm也加进去会很吓人。如果你想做动态htm倒可以考虑一下。过滤器是可以为htm文件写上一个头的。

     总之,JSP的过滤器是很好玩的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值