无法在JSP页面上显示会话属性

时间:2018-10-29 18:22:48

标签: java jsp servlets httpsession

我正在尝试在此jsp页面上显示会话属性:

package org.loja.app.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String login = request.getParameter("login");
        String password = request.getParameter("password");

        if(password.equals("123")) {
          HttpSession session = request.getSession();
          session.setAttribute("login", login);
          request.setAttribute("error", false);
          request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);
        } else {
          request.setAttribute("error", true);
          request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);
        }
    }
}

此页面从该servlet转发:

${sessionScope.login}

当我在浏览器中打开页面时,得到的是文本myApp.controller('ChatControllerGlobal',function($scope,global) { $http({ method: 'POST', url: serverURL+'&act=get_chat', withCredentials: true, }).then(function successCallback(data) { $scope.messages = data.data; $scope.loader = false; $scope.content = true; }); }); ,而不是属性值。

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

从外观上看似乎没有什么错。但是,我尝试了以下几件事:

从顶部删除此标签:

<%@ page session="true" %>

无论如何,默认行为都设置为true。无需再次声明。也许这会使您设置的会话变量无效。

服务器配置

某些服务器具有需要启用会话支持的配置设置。也许这没有打开或已经关闭。

您说<c:out不起作用,但<c:url起作用。如果<c:url有效,但<c:out无效,那么您的.jar jstl文件是否已损坏?但我对此表示高度怀疑。我认为问题在于未设置sessionScope。为什么不尝试直接访问变量呢?不需要sessionScope

尝试:

   <c:out value="${login}"/> | <a href="<c:url value = "/logout"/>">Sair</a>.

也可以在没有JSTL的情况下尝试使用它:

 ${login} | <a href="/logout">Sair</a>.

尝试在jsp中进行设置:

<c:set var="testVar" value="Hello world" scope="session"/>
<c:out value="${testVar}"/>

最后,请确保您确实在设置变量。像这样测试:

    HttpSession session = request.getSession(); //move outside to test it 
          session.setAttribute("login", login);  //move outside to test it 

if(password.equals("123")) {

          request.setAttribute("error", false);
          request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);
        } else {
          request.setAttribute("error", true);
          request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);
        }

请尝试执行这些故障排除步骤,希望它可以帮助您缩小问题范围。