会话处理在JSP页面中不起作用?

时间:2018-08-18 17:05:34

标签: java jsp

当我提交I​​ndex.jsp中存在的表单时,它将转到Home.jsp页面,如果注销,它还将重定向到Index.jsp页面。但是,当我尝试不登录而访问Home.jsp页面时,显示错误。理想情况下,它应该重定向到Index .jsp页面,因为会话位于


Home.jsp

<%@page import="com.bean.UsersBean"%>
<%@page import="com.util.DAO"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script
    src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="JS/General.js"></script>
<script
    src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script
    src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>

<link rel="stylesheet"
    href="https://use.fontawesome.com/releases/v5.1.1/css/all.css"
    integrity="sha384-O8whS3fhG2OnA5Kas0Y9l3cfpmYjapjI0E4theH4iuMD+pLhbf6JI0jIMfYcK3yZ"
    crossorigin="anonymous">
<link rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet"
    href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<link rel="stylesheet" href="CSS/General.css" content="text/css">

<title>Insert title here</title>
</head>
<body style="background-color: grey">
<%@include file="sessionManagement.jsp"%>
    <%
            String email =session.getAttribute("email").toString();
            String password =session.getAttribute("pwd").toString();
            System.out.println(email + " JSP");
            System.out.println(password + " JSP");
            UsersBean obj = DAO.login(email, password);
            //System.out.println(obj.getProfile()); 
    %>

此后,我已使用此 obj 在页面中显示用户的一些详细信息。


sessionManagement.jsp页面代码

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<% if(session==null && session.getAttribute("email")==null)
        response.sendRedirect("Index.jsp");

    %>  
</body>

1 个答案:

答案 0 :(得分:2)

jsp页面中的if语句有问题。

if(session == null && session.getAttribute("email") == null)

根据您的if语句,如果session为null,并且页面在会话为null时正在检查属性,并且在任何地方都没有提及变量session,则页面将被重定向在sessionManagement.jsp中。

  

要记住的另一件事是,在jsp页面中,HttpSession永远不会是null


替换您的if语句。

if(request.getSession().getAttribute("email") == null){
    response.sendRedirect("index.jsp");
    return;
}