springMVC登陆拦截器

来源:互联网 发布:sql查询表字段长度 编辑:程序博客网 时间:2024/04/30 01:15
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 {// 获得请求的urlString url = request.getRequestURL().toString();// 获得sessionHttpSession 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";}
                            log4jConfigLocation          classpath:conf/log4j.properties                            log4jRefreshInterval          60000                                    org.springframework.web.util.Log4jConfigListener                            contextConfigLocation  classpath:conf/applicationContext-*.xml      org.springframework.web.context.ContextLoaderListener        spring  org.springframework.web.servlet.DispatcherServlet      contextConfigLocation  classpath:conf/springmvc.xml        spring      /                spring request        org.springframework.web.context.request.RequestContextListener             CharacterEncodingFilter  org.springframework.web.filter.CharacterEncodingFilter    encoding  utf-8        CharacterEncodingFilter  /*          index.jsp          404  /error404.jsp        500  /error500.jsp    
### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=d\:mylog.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.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);}