Filter 中空指針錯誤


Filter 是過濾器,凡是通過servlet  JSP 的請求需要filter 進行過濾或者攔截操作,保證數據的合法或者邏輯正確性

但是寫第一個filter 配置完成后,發現jsp 文件進不去了,直接是500服務器錯誤,指示空指針錯誤

最后發現了不是jsp 文件寫錯,而是filter 中沒有判空

比如我在登陸成功前提下在session 域中添加了一個字段值,但是沒有登陸的情況下session 沒有該字段值,取該值判斷應該先判斷非空,在進行操作,就不會產生空指針錯誤了

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        response.setContentType("text/html;charset=utf-8");

        String contextPath = request.getContextPath();
        String requestURI = request.getRequestURI();

        HttpSession session = request.getSession(false);
        //思路,放行首頁和登陸頁||登陸后所有頁面
        //放行首頁和登陸頁
        if (requestURI.equals("/index.jsp")||requestURI.equals("/")||requestURI.equals("/login.jsp")||requestURI.equals("/person")
        ){
            chain.doFilter(req,resp);
            return;
        }
        //放行登陸后狀態
        if (session!=null){
            String checked = (String) session.getAttribute("checked");// null 問題
            if (checked!=null){
                chain.doFilter(req,resp);
                return;
            }
}
        //不放行,返回首頁,要求登陸
        response.getWriter().println("請先登陸");
        response.setHeader("Refresh","2;url="+contextPath+"/login.jsp");




    }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM