表单提交后Jsp没有设置会话变量

时间:2014-07-03 13:01:58

标签: java forms jsp session login

我在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

1 个答案:

答案 0 :(得分:0)

以下是一些要检查的内容(您可以尝试添加日志..大量日志)

  1. 浏览器是否缓存HTML输出并再次显示相同的内容? (单击浏览器重新加载时,服务器日志不会有新行)
  2. JSP在部署时被编译为servlet ..所以如果重新部署不正确,旧的servlet可能正在运行。尝试重新启动远程tomcat或使用管理控制台停止并启动应用程序。
  3. ATB ..