JSP退出或注销时对session等的操作

退出和注销按钮都是放在top的窗口中,用

注销页面:

<td align="center" width="5%"><a href="main/exit.jsp?id=1" 注销</a></td>

<td align="center" width="5%"><a href="main/exit.jsp?id=2" 退出</a></td>

处理页面:

   <body>
     <%
       if(session.getAttribute("username")==null||session.getAttribute("username")==""){
         response.sendRedirect("../login/login.jsp");
         return;
      }
       else {
          if(request.getParameter("id").equals("1")){
            session.invalidate();
            out.println("<script language='javascript'>alert('确定要注销吗?');"+"window.top.location.href='../login/login.jsp';</script>");
          }
        // out.println("<script language='javascript'>alert('确定要退出吗?');"+"window.location.href='../login/login.jsp';</script>");
        else{
         session.invalidate();
        out.print("<script language='javascript'>top.close();</script>");
             }
       }
      %>
</body>

这种方法只退出top的框架,左右框架都没退出,查点资料,原理方法很简单:

解决方法1:

只要在注销页面和退出加个target="_top"就可以了

          <td align="center" width="5%"><a href="main/exit.jsp?id=1" target="_top">注销</a></td>
         <td align="center" width="5%"><a href="main/exit.jsp?id=2" targer="_top">退出</a></td>

这样它会先在另一个窗口跳出脚本提示!

而退出整个系统脚本上有点问题

<body>
     <%
       if(session.getAttribute("username")==null||session.getAttribute("username")==""){
         response.sendRedirect("../login/login.jsp");
         return;
      }
       else {
          if(request.getParameter("id").equals("1")){
            session.invalidate();
            out.println("<script language='javascript'>alert('确定要注销吗?');"+"window.top.location.href='../login/login.jsp';</script>");
          }
        // out.println("<script language='javascript'>alert('确定要退出吗?');"+"window.location.href='../login/login.jsp';</script>");
        else{
         session.invalidate();
             %>
       
         <script language="javascript">  
          top.opener=null;    //不过这个我暂时还不知道什么意思,应该是刷新原来的页面
          top.close();  
     </script>
        
      <%    
       }
       }
      %>
</body>

解决方法2:

   刚问了一个网友,他给我提供的一种脚本的方法,不用提交到其他页面处理,只在本页面,很不错的 !!!

  JSP退出或注销时对session等的操作 <script language="javascript">
       function exit(){
       window.open('../login/login.jsp','_top')
         }
      </script>

<input type="button" value="退出" οnclick="exit();" />

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的基于JSP实现用户登录、注册、注销退出的示例代码: 登录页面 login.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <h1>Login</h1> <form method="post" action="login.do"> <label>Username:</label><input type="text" name="username"><br> <label>Password:</label><input type="password" name="password"><br> <input type="submit" value="Login"> </form> <a href="register.jsp">Register</a> </body> </html> ``` 注册页面 register.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register</title> </head> <body> <h1>Register</h1> <form method="post" action="register.do"> <label>Username:</label><input type="text" name="username"><br> <label>Password:</label><input type="password" name="password"><br> <input type="submit" value="Register"> </form> <a href="login.jsp">Login</a> </body> </html> ``` 登录、注册、注销退出的Java代码 LoginServlet.java: ```java import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/login.do") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Map<String, String> userDatabase = new HashMap<>(); static { userDatabase.put("user1", "password1"); userDatabase.put("user2", "password2"); userDatabase.put("user3", "password3"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (userDatabase.containsKey(username) && userDatabase.get(username).equals(password)) { HttpSession session = request.getSession(); session.setAttribute("username", username); response.sendRedirect("home.jsp"); } else { response.sendRedirect("login.jsp"); } } } @WebServlet("/register.do") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (!username.isEmpty() && !password.isEmpty()) { LoginServlet.userDatabase.put(username, password); response.sendRedirect("login.jsp"); } else { response.sendRedirect("register.jsp"); } } } @WebServlet("/logout.do") public class LogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getSession().invalidate(); response.sendRedirect("login.jsp"); } } @WebServlet("/home.jsp") public class HomeServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if (session != null && session.getAttribute("username") != null) { request.getRequestDispatcher("home.jsp").forward(request, response); } else { response.sendRedirect("login.jsp"); } } } ``` 其中,LoginServlet实现了用户登录功能,RegisterServlet实现了用户注册功能,LogoutServlet实现了用户注销功能,HomeServlet实现了用户登录后的主页。登录成功后,会将用户名保存到HttpSession中,注销将HttpSession失效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值