zoukankan      html  css  js  c++  java
  • 登录成功后,跳转到登录前的页面

    由于页面长时间未操作,出现登录超时,用户再次刷新页面,系统会自动跳转到登录页面。当用户重新登录后,怎么才能跳转到原来的页面呢?解决的方法如下:

    /**
         * 获取request请求中的参数
         * @param sb
         * @param req
         * @return
         */
        @SuppressWarnings("all")
        private StringBuffer getRequestParameters(StringBuffer sb, HttpServletRequest req){
            Map map = req.getParameterMap();
            String str = "?";
            if(!map.isEmpty()){
                for(Object key : map.keySet()){
                    String[] values = (String[])map.get(key);
                    for(String value:values){
                        str+=key+"="+value+"&";
                    }
                }
                str = str.substring(0, str.length()-1);
            }        
            return sb.append(str);
        }
        /**
         * 在调用Controller处理方法前,执行是否登录验证操作,
         * 如果没有登录直接跳转到登录页面
         */
        public boolean preHandle(HttpServletRequest req, HttpServletResponse resp,
                Object arg2) throws Exception {
            HttpSession session = req.getSession();
         // 获取管理员账户信息
            CatalogManager user = (CatalogManager)session.getAttribute("userinfo");
            // 如果用户信息为null,则判断当前用户未登录,跳转到登录页面先登录
            if(null == user){
                //获取当前浏览器访问地址
                StringBuffer urlBuff = req.getRequestURL();
                getRequestParameters(urlBuff,req);
                //对要跳转的url经行编码         
                String path = req.getContextPath();
                int port = req.getServerPort();
                String portStr = 80 == port ? "" : (":"+req.getServerPort());
                String basePath = req.getScheme()+"://"+req.getServerName()+portStr+path+"/";
                //对要跳转的url经行编码
                String url = URLEncoder.encode(urlBuff.toString(), HttpHelperCommon.CHARSET_ENCODING);            
                resp.sendRedirect(basePath+"ht/login/toHtLogin.do?url="+url);
                return false;
            } else {
                //如果登录成功,则直接执行下一步操作
                //ActionContext.getContext().getSession().put("userid", user.getId());
                session.setAttribute("userinfo", user);
                session.setAttribute("userid", user.getId());
                session.setAttribute("loginname", user.getUsername());
                return true;
            }
        }
  • 相关阅读:
    进程实际操作篇2
    进程的实际操作篇1
    进程的理论知识
    解决套接字粘包,udp套接字对象的使用和socketserver模块实现并发
    day24-网络知识扫盲,socket的基本使用
    day23-网络编程之互联网基础,tcp/ip协议详细介绍
    day21-多态和多态性,鸭子类型,反射,内置方法,异常处理
    JAVA WEB小测
    JAVA动手动脑
    JAVA课上动手动脑问题2
  • 原文地址:https://www.cnblogs.com/jassy/p/9328528.html
Copyright © 2011-2022 走看看