【发布时间】:2014-08-24 14:52:45
【问题描述】:
我有一个简单的登录表单,在 jsp 中,单击该表单时会检查用户并通过设置一个名为 loggedIn 的会话变量来登录。
在我最初提交登录表单后,它似乎设置了会话变量,因为它显示“您已登录”。文本。但是,如果我在使用正确的登录详细信息提交登录表单后重新加载页面,它会再次显示登录表单!
我对@987654322@ 会话的检查是否正确?
这里是servlet代码:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="com.servlet.explore.*, java.util.*, java.io.*" %>
<%
boolean isValid = false;
if(request.getParameter("loginSubmit") != null){
String username = request.getParameter("username").trim();
String password = request.getParameter("password").trim();
// insert hashed password and username
LoginController cc = new LoginController();
password = cc.hashPassword(password);
// check details are valid
isValid = cc.checkUser(username, password);
// if login details are valid set the session variable loggedIn to true
if(isValid){
session.setAttribute("loggedIn", "true");
}
}
这是 HTML 页面:
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Admin</title>
<link rel="stylesheet" href="css/main.css" type="text/css">
</head>
<body>
<%
// is the user logged in?
if(session.getAttribute("loggedIn") != null){
out.println("You are logged in.");
}else{
out.println("<form class=\"boxShadow\" id=\"loginForm\" name=\"loginForm\" action=\"admin.jsp\" method=\"POST\">"+
"<p>You must login to view this page</p>"+
"<input type=\"text\" name=\"username\" placeholder=\"username\" required>"+
"<input type=\"password\" name=\"password\" placeholder=\"username\" required>"+
"<input type=\"text\" name=\"botCatcher\" class=\"botCatcher\" placeholder=\"username\">"+
"<input type=\"submit\" name=\"loginSubmit\" value=\"submit\" id=\"loginSubmit\">"+
"</form>");
}
%>
</body>
</html>
当我使用本地 Tomcat 服务器通过 eclipse 运行 jsp 时,不会出现此问题。仅当我在远程 Tomcat 服务器上发布应用程序时。
编辑:添加了一些日志 catalina.out
2014 年 7 月 3 日下午 4:01:43 org.apache.catalina.startup.HostConfig deployWAR INFO:部署 Web 应用程序存档 /usr/local/apache-tomcat-7.0.47/webapps/chrissepham.war 2014 年 7 月 3 日 下午 4:15:32 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE:Web 应用程序 [/chrissepham] 注册 JDBC 驱动 [com.mysql.jdbc.Driver] 但未能 当 Web 应用程序停止时取消注册。为了防止一个 内存泄漏,JDBC驱动被强制注销。 7月03日, 2014 下午 4:15:32 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE:Web 应用程序 [/chrismepham] 似乎已经启动了一个名为 [Abandoned connection cleanup thread] 但未能阻止它。这很可能会创建一个 内存泄漏。 2014 年 7 月 3 日下午 4:15:33 org.apache.catalina.startup.HostConfig deleteRedeployResources 信息: 取消部署上下文 [/chrissepham] 2014 年 7 月 3 日下午 4:16:36 org.apache.catalina.startup.HostConfig deployWAR 信息:部署网络 申请档案 /usr/local/apache-tomcat-7.0.47/webapps/chrissepham.war 2014 年 7 月 3 日 下午 4:28:11 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE:Web 应用程序 [/chrissepham] 注册 JDBC 驱动 [com.mysql.jdbc.Driver] 但未能 当 Web 应用程序停止时取消注册。为了防止一个 内存泄漏,JDBC驱动被强制注销。 7月03日, 2014 下午 4:28:11 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE:Web 应用程序 [/chrismepham] 似乎已经启动了一个名为 [Abandoned connection cleanup thread] 但未能阻止它。这很可能会创建一个 内存泄漏。 2014 年 7 月 3 日下午 4:28:12 org.apache.catalina.startup.HostConfig deleteRedeployResources 信息: 取消部署上下文 [/chrismepham] 2014 年 7 月 3 日下午 4:28:50 org.apache.catalina.startup.HostConfig deployWAR 信息:部署网络 申请档案 /usr/local/apache-tomcat-7.0.47/webapps/chrissepham.war
【问题讨论】:
-
您的浏览器cookie启用了吗?
-
远程 Tomcat 服务器的日志会很有用,你能把它添加到问题中吗?
-
我添加了 catalina.out 日志。我还创建了一个测试网络应用程序,它似乎可以很好地设置会话变量。是否有一些设置或我可能在 Eclipse 中设置的东西会停止此应用程序上的会话?
标签: java forms jsp session login