在我的login.jsp中,我使用了以下代码。我创建了一个会话,并打算传递用户将插入的用户名和电子邮件。
<%
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","");
Statement st=con.createStatement();
%>
hai
<%
String username=request.getParameter("username");
String email=request.getParameter("email");
String password=request.getParameter("password");
ResultSet rs=st.executeQuery("Select * from user3");
HttpSession sess = request.getSession();
sess.setAttribute("username","username");
sess.setAttribute("email","email");
while(rs.next())
{
String username=rs.getString(1);
String email1=rs.getString(2);
String password1=rs.getString(3);
if((email1.equals(email)) && (password1.equals(password)))
{
response.sendRedirect("book.html");
}
else
{
response.sendRedirect("register.html");
}
}
}
catch(Exception e)
{
}
%>
在另一个jsp页面中,我需要访问这些值,即用户名和电子邮件,以便可以将其插入数据库中。
<body>
<%
HttpSession sess = request.getSession(false);
String username=sess.getAttribute("username").toString();
String email=sess.getAttribute("email").toString();
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "");
Statement st=conn.createStatement();
int i=st.executeUpdate("insert into busA(username,email)values('"+username+"','"+email+"')");
out.println("Data is successfully inserted!");
}
catch(Exception e)
{
System.out.print(e);
e.printStackTrace();
}
%>
这是我当前的代码,但是没有按我想要的值插入数据库。
答案 0 :(得分:0)
在第一个jsp中,您将会话变量的值设置为字符串,而不是传递用户名和密码变量。
所以不是:
sess.setAttribute("username","username");
sess.setAttribute("email","email");
尝试
sess.setAttribute("username",username);
sess.setAttribute("email",email);
这个问题也可能与不保持会话有效有关,tomcat中会话的默认行为是使用具有键JSESSIONID的cookie,您可以使用浏览器开发工具检查该cookie是否已设置并通过第二个jsp发送。呼叫
您可以在代码内使用
request.getSession().getId()
查看两个呼叫之间的会话是否相同。