springMVC登陸攔截器

Intercepter類
package com.china.bill.java.Intercepter;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.sf.json.JSONObject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.china.bill.java.entity.User;
/**  
 * 在業務處理器處理請求之前被調用  
 * 如果返回false  
 *     從當前的攔截器往回執行所有攔截器的afterCompletion(),再退出攔截器鏈 
 * 如果返回true  
 *    執行下一個攔截器,直到所有的攔截器都執行完畢  
 *    再執行被攔截的Controller  
 *    然後進入攔截器鏈,  
 *    從最後一個攔截器往回執行所有的postHandle()  
 *    接着再從最後一個攔截器往回執行所有的afterCompletion()  
 */    
public class LoginHandlerIntercepter implements HandlerInterceptor {

	private static Logger log = LoggerFactory.getLogger(LoginHandlerIntercepter.class);
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		// TODO Auto-generated method stub

	}

	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {
		// TODO Auto-generated method stub

	}

	public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
			Object arg2) throws Exception {
		// 獲得請求的url
		String url = request.getRequestURL().toString();
		
		// 獲得session
		HttpSession session = request.getSession();
		User user = (User) session.getAttribute("user");
		log.info("===========================");
		log.debug("url = {}", url);
		log.info("===========================");
		
		if (user == null) 
		{
			if (checkUrl(url)) 
			{
				if (checkAjax(request)) 
				{
					Map map = new HashMap();
					map.put("logOut", "logOut");
					JSONObject json = JSONObject.fromObject(map);
					response.getWriter().print(json.toString());
				}
				else 
				{
					response.sendRedirect("/bills");
					log.debug("需要攔截的非ajax請求");
					//request.getRequestDispatcher("/").forward(request,response);
				}
				return false;
			}
			else 
			{
				return true;
			}
		} 
		else
		{
			return true;
		}
		
		/*if (url.contains(".") || url.contains("user"))
		{
			return true;
		}
		else 
		{
			if (user != null) 
			{
				log.info("===========================");
				log.debug("accountName = {}", user.getAccountName());
				log.info("===========================");
				return true;
			} else 
			{
				response.sendRedirect("/bills/");
				//request.getRequestDispatcher("/").forward(request,response);
				return false;
			}
		}*/
	}
	
	/**
	 * 判斷是否是要攔截的請求
	 * @param url
	 * @return true 是需要攔截的
	 */
	private boolean checkUrl(String url) 
	{
		if (!url.contains(".js") && !url.contains(".css") && !url.contains("user")) 
		{
			log.debug("======該請求需要被攔截======");
			return true;
		}
		else 
		{
			return false;
		}
	}
	/**
	 * 判斷是否是ajax請求
	 * @return true 是ajax請求
	 */
	private boolean checkAjax(HttpServletRequest request) 
	{
		if (request.getHeader("x-requested-with") != null && 
			 request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) 
		{
			log.debug("======該請求是ajax請求======");
			return true;
		} 
		else 
		{
			return false;
		}
	}

}
springMVC配置文件
  
 
js
// 判斷是否被攔截
			if (data.logOut) 
			{
				window.location.href = "/bills";
			}
<?xml version="1.0" encoding="UTF-8"?>
log4jConfigLocationclasspath:conf/log4j.propertieslog4jRefreshInterval60000  
            org.springframework.web.util.Log4jConfigListener  
        contextConfigLocationclasspath:conf/applicationContext-*.xmlorg.springframework.web.context.ContextLoaderListenerspringorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:conf/springmvc.xmlspring/spring requestorg.springframework.web.context.request.RequestContextListenerCharacterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingutf-8CharacterEncodingFilter/*index.jsp404/error404.jsp500/error500.jsp
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=debug, stdout

								
								 
								
							
							
							

function dealTable(data) 
{
	var str = "";
	var str1 = "";
	var str2 = "";
	// 判斷是否被攔截
	if (data.logOut) 
	{
		window.location.href = "/bills";
	}
	// 判斷是否返回數據
	if (data.bills) 
	{
		for ( var i = 0; i < data.bills.length; i++) 
		{
			if (i%2 == 0) 
			{
				str1 = ""+data.bills[i].tittle+""+data.bills[i].price+""+data.bills[i].billtype.name+""+data.bills[i].billTime+""
				+data.bills[i].explains+" ";
			}
			else
			{
				str2 = ""+data.bills[i].tittle+""+data.bills[i].price+""+data.bills[i].billtype.name+""+data.bills[i].billTime+""+
				data.bills[i].explains+" ";
			}
			//$(""+data.result.id+""+data.result.name+"");
			//str += ""+data.result[i].id+""+data.result[i].name+"刪除";
			str = str + str1 + str2;
			str1 = "";
			str2 = "";
		}
	}
	$("#bills_tbody").html(str);
}


// 綁定刪除
	$("#bills_tbody").off("click").on("click", "a[trash='trash']", function()
	{
		var id = $(this).attr("id");
		deleteBill(id);
	});
	
	
	// jquery實現動態綁定  分頁
	$("#page").off("click").on("click","li[page = 'page']",function()
	{
		//alert("click");
		currentPage = $(this).attr("pageNo");
		findForAjax(currentPage,userId);
	});
	
	
	// 頁碼展示
function dealPage(data) 
{
	var str = "";
	for ( var i = 1; i <= data.totalPage; i++) 
	{
		var strRed = "";
		var strOther = "";
		//str += "
"+i+""; if (i == data.currentPage) { strRed = ""+i+""; } else { strOther = ""+i+""; } str = str + strRed + strOther; } var str1 = ""; var str2 = ""+data.totalCount+""; var str3 = ""; var str4 = ""; var str5 = ""; if (data.totalPage > 0) { str4 = ""; str5 = ""; } var strAll = str1 + str2 + str3 + str4 + str + str5; $("#page").html(strAll); }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章