【问题标题】:jsp session implicit object is throwing null pointer exception when calling it from servlet从servlet调用jsp会话隐式对象时抛出空指针异常
【发布时间】:2015-06-24 13:35:22
【问题描述】:

我正在使用 jsp 和 servlet 开发应用程序,在 jsp 中使用会话隐式对象时遇到问题。 我正在做的是在 servlet 的会话对象中设置某些属性,然后将响应转发到 jsp 页面。现在我想在我的 jsp 页面中访问这些会话属性,但是这样做会引发空指针异常。 这是我的代码:-

这是我的servlet,

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter pw=response.getWriter();
    con=Connector.myCon();
    u=request.getParameter("userName");
    p=request.getParameter("password");
    HttpSession session=request.getSession();
    session.setAttribute("userName",u); 
    session.setAttribute("userType",userType);
    RequestDispatcher rd=request.getRequestDispatcher("Home.jsp");
    rd.forward(request, response);
    }

这是我的jsp

<%
    session=request.getSession();
    String s = (String) application.getAttribute("name");
    System.out.println(s);
    String userName = (String)session.getAttribute("userName");
    if (userName == null) {
        //request.setAttribute("Error", "Session has ended.  Please logenter code herein.");
        RequestDispatcher rd = request
                .getRequestDispatcher("index.hmtl");
        rd.include(request, response);
        out.println("Session has ended.  Please login.");
    } 
    else 
    {
        String userType = (String)session.getAttribute("userType");
        System.out.println(userType);
        if(userType.equals("student")) 
        {}
    }%> 

我在使用它时遇到空指针异常。 帮帮我。

【问题讨论】:

    标签: jsp servlets


    【解决方案1】:

    这样改,

    <%
    String s = (String) application.getAttribute("name");
    System.out.println(s);
    String userName = (String)session.getAttribute("userName");
    if (userName == null) {
        //request.setAttribute("Error", "Session has ended.  Please logenter code herein.");
        RequestDispatcher rd = request
                .getRequestDispatcher("index.hmtl");
        rd.include(request, response);
        out.println("Session has ended.  Please login.");
    } 
    else 
    {
        String userType = (String)session.getAttribute("userType");
        System.out.println(userType);
        if(userType.equals("student")) 
        {}
    }%> 
    

    【讨论】:

    • 我还写了什么。您重新发布了相同的 jsp 代码,删除了最上面的行。
    • 没错。您可以直接访问会话属性,而无需从jsp中的请求中获取会话
    • 我知道,但是我已经使用 servlets 会话对象设置了会话属性,在你所说的和我已经做过的两种情况下,我都得到了空指针异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多