登录超时给出提示跳到登录页面(ajax、导入、导出)
一、一般页面登录超时验证,可以用过滤器filter,如下:
packagecom.lg.filter; importjava.io.IOException; importjavax.servlet.Filter; importjavax.servlet.FilterChain; importjavax.servlet.FilterConfig; importjavax.servlet.ServletException; importjavax.servlet.ServletRequest; importjavax.servlet.ServletResponse; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importcom.lg.func.MyFunc; publicclassLoginFilterimplementsFilter{ publicvoiddestroy(){ } publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse, FilterChainchain)throwsServletException,IOException{ HttpServletRequestrequest1=(HttpServletRequest)request; HttpServletResponseresponse1=(HttpServletResponse)response; chain.doFilter(request,response);//放行。让其走到下个链或目标资源中 Stringurl=request1.getServletPath(); System.out.println("Demo1过滤前"+url); MyFuncmyFunc=newMyFunc(request1,response1); System.out.println("Demo1过滤前"+url.startsWith("/index/")); if(myFunc.checkLogin2()&&!url.startsWith("/index/")){ response1.sendRedirect("/index_login.html"); } System.out.println("Demo1过滤后"); } publicvoidinit(FilterConfigarg0)throwsServletException{ //TODOAuto-generatedmethodstub System.out.println("===========init========过滤后"); } }
web.xml配置
<filter> <filter-name>Demo1Filter</filter-name> <filter-class>com.lg.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>Demo1Filter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
二、ajax提交
提交页面,我的页面提示弹出框架用的asyncBox,可以改成其他的跳转
$.ajax({ type:"post", url:"a.jsp", async:false,//同步 data:{"name":"fdgh"} success:function(msg){ //checkLogin2(msg)判断是否登录超时,超时返回false,跳到登录页面 if(checkLogin2(msg)){ varobj=eval('('+msg+')'); if(obj.result.indexOf("suc")>-1){ alert("成功"); }else{ alert("失败"); } } }); //是否登录超时,超时返回false,跳到登录页面 functioncheckLogin2(msg){ if(msg!=null&&msg.length>0){ if(msg.indexOf("DOCTYPE")>-1){ checkLogin(); returnfalse; } } returntrue; } functioncheckLogin(){ if(window.top!=window.self){ top.asyncbox.alert('登录超时,请重新登录','提示',function(action){ top.location.href='/login.jsp'; }); }else{ asyncbox.alert('登录超时,请重新登录','提示',function(action){ window.location.href='/login.jsp'; }); } }
后台:
1.处理数据前
if(checkLogin())return; //检查登录,session过期,或者未登录,自动跳转 publicbooleancheckLogin()throwsIOException{ booleanresult=false; Stringhtml=""; NativeObjectu=SessionMng.getCurrentUser(request);//检验是否登录超时 if(u==null){ html="<!DOCTYPEHTMLPUBLIC'-//W3C//DTDHTML4.01Transitional//EN''http://www.w3.org/TR/html4/loose.dtd'>\n"+ "<scripttype='text/javascript'src='/admin/js/jquery.min.js'></script>\n"+ "<scripttype='text/javascript'src='/admin/js/common.js'></script>\n"+ "<scripttype='text/javascript'src='/admin/js/dialog/asyncbox.js'></script>\n"+ "<scriptlanguage=javascript>checkLogin();</script>\n"; response.getWriter().println(html); result=true; } returnresult; }
三、异步导入excel
用AjaxUpload.js导入excel功能
前端提交页面参考上面的;
后台处理页面:
if(!isLogin()){ response.getWriter().print("DOCTYPE"); return; } //是否登录 publicbooleanisLogin(){ NativeObjectu=SessionMng.getCurrentUser(request); if(u!=null){ returntrue; }else{ returnfalse; } }
四。用window.open导出excel文件
后台同二
前端导出页面
functionexport_excel(){ $.ajax({ type:"post", url:"/admin/inc/checkLogin.jsp", async:false,//同步 success:function(msg){ if(checkLogin2(msg)){ window.open("perfm_excel.jsp?"+$('#Form1').serialize()); } } }); login.jsp <%@pagecontentType="text/html;charset=utf-8"%> <% //========================当前登陆用户信息======================================== if(checkLogin())return; %>
以上内容给大家介绍了登录超时给出提示跳到登录页面(ajax、导入、导出)的相关知识,希望对大家有所帮助!