注销操作应用(监控session的创建和注销),(MVC)提交表单以后重新再次提交,SQL的Datetime在固定的格式显示

本文讨论了如何在MVC应用中监听HTTP Session的创建和注销,实现自动注销功能并处理数据库操作。同时,针对表单提交后防止重复提交的问题,提出了解决方案。另外,还介绍了如何在SQL的Datetime字段中设定固定格式的日期显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注销操作应用(监控session的创建和注销)

在写登录的时候考虑到session在长时间的不活动以后自动注销,而我又需要在每次注销之前对数据库库中的值进行修改,于是用到了HttpSessionListener这个接口,监听session的创建和注销
我需要做的是在session注销时能跳转到我需要做的地址,然后跳回首页
在sessionDestroyed中获账号传递标志值

 @Override
    public void sessionDestroyed(HttpSessionEvent se){
        HttpSession session=se.getSession();
        Login user_session =(Login) session.getAttribute("USER_SESSION");
        if (user_session!=null){//因为我跳转前的地址是在注销账号的地址,避免死循环
            String id=user_session.getUserId();
            System.out.println("id:"+id);
            session.getServletContext().setAttribute("QUIT",id);//账号也是标志值
        }

在拦截器中根据QUIT的值进行拦截,一定要对remove标志值,在跳转目标地址时也会进行拦截一次

 String quitsignal=(String)session.getServletContext().getAttribute("QUIT");
        if(quitsignal!=null){
        Login login=new Login();
        login.setUserId(quitsignal);
        session.setAttribute("USER_SESSION",login);
        session.getServletContext().removeAttribute("QUIT");
        request.getRequestDispatcher("/login/quit.action").forward(request, response);
        System.out.println(request.getContextPath()+"/login/quit.action");
        return false;
    }

之后在Controller需要session.removeAttribute(“USER_SESSION”)和session.invalidate();(???,写太多了有点记不清了),对应sessionDestroyed中 if (user_session!=null)
在web.xml
配置监视器

 <listener>
    <listener-class>com.sessionlistener.SessionListner</listener-class>
  </listener>

设置session的周期

<session-config>
    <session-timeout>1</session-timeout>
  </session-config>

(MVC)提交表单以后重新再次提交

登录操作
在MVC中提交表单以后,return "next"之后的地址页面没有改变,虽然区分了地址的method,但是可以发现在return之后的页面仍然是POST,在刷新以后出现了表单有新内容需要重新刷新,之后传method变为GET,在尝试了以后,可以使用return “redirect:/login”;,重定向地址

SQL的Datetime在固定的格式显示

在mysql中设置的类型为Datetime的显示形式为
在这里插入图片描述
从数据库中查询出以后给Date的其实是全时间,如果想要以固定的格式显示
在POJO中加上String dateString
之后一个一个时间进行转化在赋值
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值