java - 会话处理在 JSP 页面中不起作用?
问题描述
当我提交 Index.jsp 中存在的表单时,它会转到 Home.jsp 页面,如果注销它也会重定向到 Index.jsp 页面。但是当我尝试在没有登录的情况下访问 Home.jsp 页面时显示错误。理想情况下,它应该重定向到 Index .jsp 页面,因为会话在
主页.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>
解决方案
您的 jsp 页面中的 if 语句有问题。
if(session == null && session.getAttribute("email") == null)
根据您的 if 语句,如果session
为空,则页面将被重定向,并且您在会话为空时检查属性,并且您没有session
在sessionManagement.jsp
.
要记住的另一件事是,在 jsp 页面中
HttpSession
永远不会是null
.
替换你的 if 语句。
if(request.getSession().getAttribute("email") == null){
response.sendRedirect("index.jsp");
return;
}