我已经有了我的表单,并且在我的 java web 项目“JSP”中连接到了 oracle 10g 数据库,它已经在工作,它允许我与注册用户一起进入和退出,但我有一个问题:
当我关闭会话时,它会将我重定向到登录以再次登录,但它不会使会话无效,如果我返回到以前的页面,它会向我显示它们并且我不希望它显示它们,因为会话应该有已经完成了,我不知道如何根据我的代码使其无效,这将允许破坏会话,但是出了点问题,我将在这里留下我的代码。太感谢了。这是 login.jsp 的代码
<% operaciones op = new operaciones();
if (request.getParameter("btnIngresar") !=null){
String user_name=request.getParameter("txtUser");
String nombre=request.getParameter("txtNombre");
HttpSession sesion = request.getSession();
switch(op.logear(user_name ,nombre)){
case 1:
sesion.setAttribute("user_name", user_name);
sesion.setAttribute("nivel", "1");
response.sendRedirect("inicio.jsp");
out.print("<a href=''><h5>Bienvenido "+user_name+" </h5></a>");
break;
case 2:
sesion.setAttribute("user_name", user_name);
sesion.setAttribute("nivel", "2");
response.sendRedirect("user.jsp");
out.print("<a href='edicion.html?cerrar=false' ><h5>Bienvenido "+user_name+" </h5></a>");
break;
default:
out.write("<center></center>");
out.write("<center>El usuario no existe o contraseña invalida, intente de nuevo</center>");
break;
}
if (request.getParameter("cerrar")!=null){
session.invalidate();
}
}
%>
这是我的 logout.jsp 中的一个
<% HttpSession sesion = request.getSession();
String user_name;
String nivel;
if (sesion.getAttribute("user_name")!=null && sesion.getAttribute("nivel")!=null){
user_name=sesion.getAttribute("user_name").toString();
nivel=sesion.getAttribute("nivel").toString();
out.print("<a href='login.jsp?cerrar=true' ><h5>Cerrar sesion "+user_name+" </h5></a>");
}else{
out.print("<script>location.replace('login.jsp');</script>");
}
%>
最后这是我在 operations.java 中的 loguar 函数
public int logear (String us, String nom) throws SQLException{
Connection conn;
PreparedStatement pst;
ResultSet rs;
int cont=0;
int nivel=0;
String sql ="select nivel from users where user_name='"+us+"' and nombre='"+nom+"'";
try{
Class.forName(this.driver);
conn = DriverManager.getConnection(this.url, this.uss, this.contra);
pst= conn.prepareStatement(sql);
rs= pst.executeQuery();
while (rs.next()){
nivel = rs.getInt(1);
}
conn.close();
} catch (ClassNotFoundException e) {
}
回报水平;
}
}
您必须使用 HttpSesion 类的 invalidate 方法使 HTTPServletRequest 中的会话无效。
这将删除所有存储的会话信息,例如您在登录时存储的用户信息。