登录超时,给出提示跳到登录页面(ajax、导入、导出)

一、一般页面登录超时验证,可以用过滤器filter,如下:

package com.lg.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lg.func.MyFunc;

public class LoginFilter implements Filter{
    public void destroy() {
    }
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request1=(HttpServletRequest)request;
        HttpServletResponse response1=(HttpServletResponse)response;
        
        chain.doFilter(request, response);//放行。让其走到下个链或目标资源中
        String url=request1.getServletPath();
        System.out.println("Demo1过滤前"+url);
        MyFunc myFunc = new MyFunc(request1,response1);
        System.out.println("Demo1过滤前"+url.startsWith("/index/"));
        if(myFunc.checkLogin2()&&!url.startsWith("/index/")){
            response1.sendRedirect("/index_login.html");
        }
        System.out.println("Demo1过滤后");
        
    }
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
         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)){
        var obj=eval('('+msg+')');
        if(obj.result.indexOf("suc")>-1){
            alert("成功");
        }else{
            alert("失败");
        }
    }
});

//是否登录超时,超时返回false,跳到登录页面
function checkLogin2(msg){
    if(msg!=null&&msg.length>0){
      if(msg.indexOf("DOCTYPE")>-1){
            checkLogin();
            return false;
      }
    }
    return true;
}
function checkLogin(){
    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过期,或者未登录,自动跳转
public boolean checkLogin() throws IOException{
boolean result = false;
String html = "";
NativeObject u = SessionMng.getCurrentUser(request);//检验是否登录超时
if (u == null){
html = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n" +
"<script type='text/javascript' src='/admin/js/jquery.min.js'></script>\n" +
"<script type='text/javascript' src='/admin/js/common.js'></script>\n" +
"<script type='text/javascript' src='/admin/js/dialog/asyncbox.js'></script>\n" +
"<script language=javascript>checkLogin();</script>\n";
response.getWriter().println(html);
result = true;
}
return result;
}

三、异步导入excel

用AjaxUpload.js导入excel功能

前端提交页面参考上面的;

后台处理页面:

 1 if(!isLogin()){
 2 response.getWriter().print("DOCTYPE");
 3 return ;
 4 }
 5 
 6 //是否登录
 7     public boolean isLogin(){
 8         NativeObject u = SessionMng.getCurrentUser(request);
 9         if (u != null){
10             return true;
11         }else{
12             return false;
13         }
14     }

四。用window.open导出excel文件

后台同二

前端导出页面

function export_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

<%@ page  contentType="text/html; charset=utf-8"%>
<%
//========================当前登陆用户信息========================================
    if(checkLogin())return;
%>    

 

你可能感兴趣的:(登录超时,给出提示跳到登录页面(ajax、导入、导出))