我必须开发一个web应用程序,其中登录页面中的用户输入值被多个jsp页面使用--我为.So使用的会话在注册为用户时工作得很好,重新启动计算机后登录again.But时,它显示session.getAttribute().What中的null值可能是问题吗?
以下是login.jsp中的代码
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/vaishnavi","root","atreyasa");
name=request.getParameter("username");
password=request.getParameter("password");
st=con.createStatement();
st1=con.createStatement();
rs=st.executeQuery("select * from admins where username='"+name+"' and password='"+password+"'");
rs1=st1.executeQuery("select * from admins where username='"+name+"' and password!='"+password+"'");
if(rs!=null&&rs.next()){
session.setAttribute("username",name);
response.sendRedirect("http://127.0.0.1:8080/Project_programs/home.jsp");
}
else if(rs1!=null&&rs.next()){
out.println("Enter correct password");
}
else{
response.sendRedirect("http://127.0.0.1:8080/Project_programs/register.jsp");
}
}
catch(Exception e){
out.println(e);
}访问Home.jsp ()的Home.jsp
out.println("<h1 align=center>Welcome "+session.getAttribute("username")+"</h1>");发布于 2017-04-13 21:20:41
正如您注意到的,在重新启动计算机后,session将被擦除。这是由于session属性的临时性质造成的。它存储在内存中,所以当您重新启动计算机时,它将被擦除。
这里的解决方案是使用cookies。Cookies是存储在客户端计算机上的小块数据,这些数据与客户端提出的每一个请求一起发送。因此,当用户请求页面时,您可以检查他是否有cookie,如果他有,则可以从cookie中读取数据并登录他,而不需要他再次输入凭据。
使用servlet设置cookie需要三个步骤:
(1)创建Cookie对象:使用Cookie名称和cookie值调用cookie构造函数,这两个构造函数都是字符串。
Cookie cookie = new Cookie("key","value");请记住,名称和值都不应包含空格或以下任何字符: =,“/?@:;
(2)设置最大年龄:使用setMaxAge指定cookie有效的时间(以秒为单位)。接下来会设置一个24小时的曲奇。
cookie.setMaxAge(60*60*24);(3)将Cookie发送到header :使用response.addCookie在header中添加Cookie,如下所示:
response.addCookie(cookie);它在客户端收到响应时将cookie存储在计算机上。
您可以在https://www.tutorialspoint.com/servlets/servlets-cookies-handling.htm上阅读关于cookie的更详细的教程。
最好,乔文。
发布于 2017-04-13 18:33:20
您可以使用此代码创建会话。
CreateSession(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
session.setAttribute("useremail", user_useremail);
}https://stackoverflow.com/questions/43397655
复制相似问题