我在jsp中有一个简单的登录表单,点击它时会检查用户并通过设置名为loggedIn
的会话变量将其登录。
在我最初提交登录表单后似乎设置了会话变量,因为它显示“您已登录”。文本。但是,如果我在提交具有正确登录详细信息的登录表单后重新加载页面,则会再次显示登录表单!
我是否在loggedIn
会话上进行了正确的检查?
这是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/chrismepham.war 2014年7月3日 下午4:15:32 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc严重:Web应用程序[/ chrismepham] 注册了JDBC驱动程序[com.mysql.jdbc.Driver]但未通过 在Web应用程序停止时取消注册它。为了防止 内存泄漏,JDBC驱动程序已被强制取消注册。 7月03日, 2014年4:15:32 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads严重:Web应用程序[/ chrismepham] 似乎已经启动了一个名为[Abandoned connection cleanup 线程]但未能阻止它。这很有可能创造一个 内存泄漏。 2014年7月3日下午4:15:33 org.apache.catalina.startup.HostConfig deleteRedeployResources INFO: 取消部署背景[/ chrismepham] 2014年7月3日下午4:16:36 org.apache.catalina.startup.HostConfig deployWAR INFO:部署Web 应用档案 /usr/local/apache-tomcat-7.0.47/webapps/chrismepham.war 2014年7月3日 下午4:28:11 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc严重:Web应用程序[/ chrismepham] 注册了JDBC驱动程序[com.mysql.jdbc.Driver]但未通过 在Web应用程序停止时取消注册它。为了防止 内存泄漏,JDBC驱动程序已被强制取消注册。 7月03日, 2014年4月28日晚11点org.apache.catalina.loader.WebappClassLoader clearReferencesThreads严重:Web应用程序[/ chrismepham] 似乎已经启动了一个名为[Abandoned connection cleanup 线程]但未能阻止它。这很有可能创造一个 内存泄漏。 2014年7月3日下午4:28:12 org.apache.catalina.startup.HostConfig deleteRedeployResources INFO: 取消部署背景[/ chrismepham] 2014年7月3日下午4:28:50 org.apache.catalina.startup.HostConfig deployWAR INFO:部署Web 应用档案 /usr/local/apache-tomcat-7.0.47/webapps/chrismepham.war
答案 0 :(得分:0)
以下是一些要检查的内容(您可以尝试添加日志..大量日志)
ATB ..