web项目中基本的初级安全退出操作


案例:在成功登入一个系统后,需要安全退出操作;

退出时同时会销毁 session 对象;且退出前有提示 (是否退出.)


按钮和链接均可实现功能;注意点击的链接不是立即跳出页面;

  • LoginServlet_loginandlogout
//使用注解方式配置servlet
@WebServlet(name = "login",urlPatterns = "/login")
public class LoginServlet_loginandlogout extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //处理 success_and_logout.jsp 中 JS的logout方法中选择了确定退出;

        //获取到session对象; 直接调用强制销毁会话的方法;
        req.getSession().invalidate();
        //重定向到登录页面;
        resp.sendRedirect("login.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置请求编码格式;
        req.setCharacterEncoding("utf-8");
            //获取页面中对应name的值;
            String account = req.getParameter("account");
            String password = req.getParameter("password");

            //创建session对象;
             HttpSession session;

            //由于未连接数据库;这里仅仅是用equals方法进行了判断;
            if (account.equals("张三") && password.equals("123456")) {
                //从请求对象中获取对应的session对象;
                session = req.getSession();
                //将上面获取到的account的值设置给名为 name的属性;(以键值对的形式);
                session.setAttribute("name",account);
                //若符合条件,则重定向到页面LoginSuccess.jsp;
                resp.sendRedirect("success_and_logout.jsp");
            } else {
                //从请求对象中获取对应的session对象;
                session=req.getSession();
                //设置属性名为 errorMsg 的值为 "账号或密码错误!"
                session.setAttribute("errorMsg", "账号或密码错误!");
               //将页面重定向到login.jsp;
                resp.sendRedirect("login.jsp");
            }
       }
}
  • 登录页面login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<div>
    <%--获取到session对象中属性名为 errorMsg 的值 ;若不存在,则返回 null--%>
    <%--此时获取到的session对象和客户端访问服务器的是同一个;(都在同一个浏览器)--%>
<%
    String errorMsg =(String) session.getAttribute("errorMsg");
    out.print(errorMsg+"<br/>");

%>
</div>
<form action="login" method="post">
    账号:<input type="text" name="account"/><br/>
    密码:<input type="password" name="password"/><br/>
    <input type="submit" value="登录"/>
</form>
</body>
</html>
  • 登录成功页面success_and_logout.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录成功</title>
    <script type="text/javascript">
        function logout() {
            var result = confirm("确定退出?");
            //取到的result是布尔值;
            if(result){
             //使用replace方法获取一个url;	可用一个新页面取代当前页面。这里默认请求方式为 get;
             location.replace("login");
            }
        }
    </script>
</head>
<body>
欢迎用户
<%
    out.print(session.getAttribute("name"));
%>

<input type="button" value="安全退出的按钮" onclick="logout()"/><br/>

<%--注意超链接页面指向空的问题;会刷新当前页面;需要处理--%>
<%--javaScript:void(0) 需要触发事件而不需要返回值;不让该a标签发生跳转;--%>
<a href="javaScript:void(0)" onclick="logout()">安全退出链接</a>
</body>
</html>

  • 启动服务器

在这里插入图片描述

  • 输入正确用户名密码后重定向进入success_and_logout.jsp页面;

在这里插入图片描述

  • 点击退出按钮

在这里插入图片描述

  • 重定向到登录页面login.jsp

在这里插入图片描述

  • 再次输入,试用安全退出链接的效果

在这里插入图片描述

  • 重定向到登录页面;

在这里插入图片描述


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智RE0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值