如何使用Spring MVC处理会话以保留登录信息

时间:2017-12-04 07:31:32

标签: spring hibernate jsp session

我想使用Hibernate使用Spring MVC创建登录表单。

我发现我需要使用'session'来保存登录信息。

所以,我在'Controller.java','。jsp'中使用它。

但似乎没有用。

以下是我的代码。 Controller.java:

@Controller
public class PassengerController {

    @Autowired
    private PassengerService passengerService;

    public void setPassengerService(PassengerService passengerService) {
        this.passengerService = passengerService;
    }

    @RequestMapping(value = "/login")
    public String login(HttpSession session, HttpServletRequest request) {

        String id = request.getParameter("idInput");
        String pw = request.getParameter("pwInput");

        // check DB 
        // if it is right, add session.
        session.setAttribute("id", id);
        session.setAttribute("pw", pw);

        return "flightschedule";
    }

    @RequestMapping(value = "/logout") 
    public String logout(HttpSession session) {
        session.invalidate();
        return "flightschedule";
    }

} 

以下是flightschedule.jsp的一部分:

<c:if test="${sessionScope.loginId eq null}">
    <!-- Not login: show login button  -->
    <div class="loginArea">
        <form action="${loginAction}">     <!-- // URL '/login' -->
            <input type="text" name="idInput" placeholder="ID" class="loginInput"> 
            <input type="password" name="pwInput" placeholder="PASSWORD" class="loginInput"> 
            <input id="loginButton" type="submit" value="login">
        </form>
    </div>
</c:if>

<c:if test="${sessionScope.loginId ne null}">
    <!-- already login: show logout button -->
    <div class="loginArea">
        <form action="${logoutAction}">  <!-- // URL '/logout' -->
            <input type="button" name="idInput" id="loginInfo" value="Welcome ${sessionScope.loginId}"> 
            <input id="logoutButton" type="submit" value="LOGOUT">
        </form>
    </div>
</c:if>

我打算当session.id存在时,显示注销按钮,当session.id不存在时,显示登录按钮。

我不想使用拦截器或弹簧安全等。

我认为他们对我的小项目太复杂了。

而且,我的所有页面都有登录/注销表单。我没有使用单独的页面登录。

所以我不想使用拦截器。我只是想检查一些jsp页面中是否存在会话密钥。根据它的存在,我想改变页面的视图。

上面的代码部分工作。登录时,会显示“Welcome userId”。

但是,当我点击页面的徽标(然后转到第一页)时,它仍会显示“登录”按钮。它必须显示'注销'按钮,因为session.loginId存在!

你有解决方案吗?

1 个答案:

答案 0 :(得分:2)

在登录方法中输入

 // check DB 
    // if it is right, add session.
    session.setAttribute("id", id);
    session.setAttribute("pw", pw);

但是在JSP检查sessionScope.loginId上,看起来应该检查名为id的属性。