Javascript 设置HTML5会话存储<;关键、价值>;使用JSP
我有一个名为authenticate.jsp的文件:Javascript 设置HTML5会话存储<;关键、价值>;使用JSP,javascript,html,jsp,Javascript,Html,Jsp,我有一个名为authenticate.jsp的文件: <%@page import=" java.sql.*, java.util.*,java.io.*" %> <% Connection con = null; Statement stmt = null; ResultSet fireman = null; try {
<%@page import=" java.sql.*, java.util.*,java.io.*" %>
<%
Connection con = null;
Statement stmt = null;
ResultSet fireman = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String connectionString = "jdbc:mysql://localhost:3306/firedept?"
+ "user=xxx&password=xxx";
con = DriverManager.getConnection(connectionString);
stmt = con.createStatement();
fireman = stmt.executeQuery("SELECT username,password,first,last,user_type FROM fireman");
String user = request.getParameter("user");
String pass = request.getParameter("pass");
while (fireman.next())
{
if (user.equals(fireman.getString("username")) && pass.equals(fireman.getString("password")))
{
String first = fireman.getString("first");
String last = fireman.getString("last");
String user_type = fireman.getString("user_type");
session.setAttribute("fname", fireman.getString("first"));
%>
<script type="text/javascript">
sessionStorage.setItem("first", "<%=first%>" )
sessionStorage.setItem("last", "<%=last%>" )
sessionStorage.setItem("user_type", "<%=user_type%>" )
</script>
<%
response.sendRedirect("home.jsp"); // remember to change to jsp
break;
}
}
response.sendRedirect("login.jsp"); // remember to change to jsp
}
catch (Exception ex) {
out.write(ex.getMessage());
}
finally {
stmt.close();
con.close();
}
%>
sessionStorage.setItem(“第一个”,“第一个”)
sessionStorage.setItem(“最后一个”,“”)
sessionStorage.setItem(“用户类型”,“”)
另一个文件是header.jspf文件,它通过
您已登录:
document.getElementById(“login_tag”).innerHTML=“您的登录身份是:”+sessionStorage.getItem(“first”);
当我试图从头中的sessionStorage获取“first”值时,它只返回null,这里有什么问题?这是同一个项目,文件位于Apache服务器上运行的同一文件夹中。
谢谢:)。我没有从jsp页面设置存储,而是将用户表单发送到jsp页面并尝试在那里设置存储,我只是发送了一个JSON,并使用jsp页面的响应在登录html页面中设置存储,效果很好。您能显示使用生成的最终html吗?您使用的是
script
标记,因此希望页面中执行的所有内容都按正确的顺序执行。如果您想确保是这样,那么您可能希望在浏览器加载完内容后运行所有javascript,如下所示:好的,我已使用Chromes debugger进行了检查,当我尝试在身份验证JSP文件中设置值时,sessionStorage为空,但是,当在不同的JSP文件中设置sessionStorage时,它可以正常工作。我将注意到,用户看不到Authenticate.jsp文件,它只是处理表单信息并将用户重定向到另一个页面。在jsp页面中使用业务逻辑,尤其是数据库连接详细信息是一种非常糟糕的做法。
<div class="logged" id="login_tag">You are logged in : </div>
<script>
document.getElementById("login_tag").innerHTML = "You are logged in as : "+sessionStorage.getItem("first");
</script>