请教下 我用过滤器写个验证登陆,除了登陆页面,没有出侧无法浏览~~ 关键代码如下:
这边session获取的usarname是null,可总是抛异常java.lang.NullPointerException 怎么解决啊、?????
-----------------------------------------------------
if (session.getAttribute("username")==null&&
!requestpath.endsWith(loginpage)&&
!requestpath.endsWith(proLogin)){
System.out.println("session的值:"+session.getAttribute("username")); 
//跳转到登录页面 request.setAttribute("tip", "您还尚未登录"); request.getRequestDispatcher(loginpage).forward(request, response);//登陆界面 
/* ((HttpServletResponse)response).sendRedirect("top.jsp");
//登陆处理页面 */ 

这边session获取的usarname是null,可总是抛异常java.lang.NullPointerException 怎么解决啊、????? 
这边session获取的usarname是null,可总是抛异常java.lang.NullPointerException 怎么解决啊、?????package com.dong.filter;import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.jstl.core.Config;public class Logfilter implements Filter {
private FilterConfig config;

//初始化
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
this.config=config;
}
//实现销毁方法
public void destroy() {
this.config=null;
} //过滤的核心方法
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("我的过滤器");
request.setCharacterEncoding("gbk");

//获取参数配置
String loginpage= config.getInitParameter("loginpage");
String proLogin= config.getInitParameter("proLogin");

//将请求转化为HttpServletRequest请求
HttpServletRequest requ=(HttpServletRequest)request;
//获取请求页面路径
String requestpath=requ.getServletPath();

//session为空,说明没有登录
//请求的页面不是登陆页面,也不是登录处理页面
HttpSession session=((HttpServletRequest)request).getSession();
if (session.getAttribute("username")==null&&
!requestpath.endsWith(loginpage)&&
!requestpath.endsWith(proLogin)){

System.out.println("session的值:"+session.getAttribute("username"));

//跳转到登录页面
request.setAttribute("tip", "您还尚未登录");
request.getRequestDispatcher(loginpage).forward(request, response);
/* ((HttpServletResponse)response).sendRedirect("top.jsp");
*/ }
else{

chain.doFilter(request,response);
System.out.println("完成");
}
}

}

解决方案 »

  1.   

    requestpath 是 null 不?
      

  2.   

    requestpath!=null&&!requestpath.endsWith(loginpage)&&!requestpath.endsWith(proLogin))
      

  3.   

    requestpath为null吧, 用之前判断一下是否为null
      

  4.   

    requestpath 是 null 不?
      

  5.   

    恩  ,判断了requestpath,空异常解决了,又有新毛病了  ··· ·
    为什么提示我等待什么实例销毁呢?这到底是怎么回事 啊?
    Waiting for 1 instance(s) to be deallocated
      

  6.   

    写这个方法吗 session.setAttribute("username","")
      

  7.   

    这个session没问题啊,就是不知到怎么运行不过啊
      

  8.   

    在通过多次数据库的查询操作之后,继续查询得不到返回结果。这个时候,TOMCAT依然正常运行,但是不能查询数据库。。 
    经过检查是由于对数据库的查询之后,没有对Session进行释放做成的。 
    主要是Spring 下的 HibernateDaoSupport 类的 getSession() 导致的连接泄露。 解放方法: Java代码 
    Session s=getSession();  
    ...........  
    数据库操作  
    .............  
    s.close();  自己百度一下 能查到些线索 然后看看有没有相似的地方
    别认为给分 这里的就该去帮你百度这里的分算个P啊帮你的人是希望你能成长
      

  9.   

    老生常谈的话题nullpointException的出现必然是null对象调用了方法lz自己debug一下查下哪个对象是空
      

  10.   

    首先看看哪一行报错,
    再看看requestpath是不是为null
      

  11.   

    [code=Java]
    if (session.getAttribute("username")==null&&
                   !requestpath.endsWith(loginpage)&&
                   !requestpath.endsWith(proLogin)){
      //前面的条件应该没错
       // 估计是requestpath有问题, 或者loginpage proLogin有问题.
      //....
    }code]
      

  12.   

    if (null == session.getAttribute("username") ||
    !requestpath.endsWith(loginpage) ||
    !requestpath.endsWith(proLogin)){System.out.println("session的值:"+session.getAttribute("username"));//跳转到登录页面
    request.setAttribute("tip", "您还尚未登录");
    request.getRequestDispatcher(loginpage).forward(request, response);
    /* ((HttpServletResponse)response).sendRedirect("top.jsp"); 
    */ }