0

由于 NPE,我在 Filter 类中遇到了困难。我知道这意味着什么,我检查了 null 的可能性,但没有奏效。如果你能帮助我,请问是什么原因?这是我的代码..

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

    HttpServletRequest req = (HttpServletRequest) request;
    HttpSession session = req.getSession();
    RequestDispatcher rd = null;


    if (session != null) {

        Person user = (Person) session.getAttribute("person");
        String personType=user.getType();  **<----- EXCEPTION HERE**

让我告诉你我项目的这一部分......我有一个与 servlet、jsp、MysqlDB、过滤器和 java 类相关的 web 应用程序......我想用我的过滤器检查所有 jsp 的安全性,它检查登录用户的用户类型是 USER、ADMIN 或 MANAGER。在我的代码上方,我检查了是否有任何会话(会话!= null),如果没有再次将用户重定向到登录页面......那么我怎样才能在这里避免NPE?感谢回复

此代码与用户是否为管理员以及是否为管理员以及继续...第一个范围是 if(session!=null).. 因此,如果它为假,则过滤将用户重定向到 login.jsp。如果你愿意,我可以发布代码。

4

1 回答 1

3

原因是user对象是null。即使session.getAttribute("person")回报,演员也能工作null

你需要null检查一下user

Person user = (Person) session.getAttribute("person");
if(user != null) {
    String personType=user.getType(); 
}
于 2013-08-20T10:26:51.693 回答