国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

詳解Spring MVC攔截器實現(xiàn)session控制

2019-11-26 13:17:37
字體:
供稿:網(wǎng)友

未登錄,不允許訪問background文件夾內(nèi)的頁面,那如何判斷是否登錄呢?background是關(guān)鍵目錄,每個操作該目錄的人都需要寫在日志表中,如何實現(xiàn)呢?攔截器是實現(xiàn)方案之一。 

(1) 在com.geloin.spring.interceptor包中添加SystemInterceptor,并使其繼承HandlerInterceptor

/**  *  * @author geloin  */ package com.geloin.spring.interceptor;  import java.io.PrintWriter; import java.util.Iterator; import java.util.Map;  import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  import org.springframework.stereotype.Repository; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;  import com.embest.ruisystem.form.SystemLoggerForm; import com.embest.ruisystem.form.SystemUserForm; import com.embest.ruisystem.service.SystemLoggerService; import com.embest.ruisystem.util.Constants; import com.embest.ruisystem.util.DataUtil;  /**  *  * @author geloin  */ @Repository public class SystemInterceptor extends HandlerInterceptorAdapter {    @Resource(name = "systemLoggerService")   private SystemLoggerService systemLoggerService;    /*    * (non-Javadoc)    *    * @see    * org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle    * (javax.servlet.http.HttpServletRequest,    * javax.servlet.http.HttpServletResponse, java.lang.Object)    */   @SuppressWarnings({ "rawtypes", "unchecked" })   @Override   public boolean preHandle(HttpServletRequest request,       HttpServletResponse response, Object handler) throws Exception {      request.setCharacterEncoding("UTF-8");     response.setCharacterEncoding("UTF-8");     response.setContentType("text/html;charset=UTF-8");      // 后臺session控制     String[] noFilters = new String[] { "login.html", "veriCode.html",         "index.html", "logout.html" };     String uri = request.getRequestURI();      if (uri.indexOf("background") != -1) {       boolean beFilter = true;       for (String s : noFilters) {         if (uri.indexOf(s) != -1) {           beFilter = false;           break;         }       }       if (beFilter) {         Object obj = request.getSession().getAttribute(             Constants.LOGINED);         if (null == obj) {            // 未登錄           PrintWriter out = response.getWriter();           StringBuilder builder = new StringBuilder();           builder.append("<script type=/"text/javascript/" charset=/"UTF-8/">");           builder.append("alert(/"頁面過期,請重新登錄/");");           builder.append("window.top.location.href=/"");           builder.append(Constants.basePath);           builder.append("/background/index.html/";</script>");           out.print(builder.toString());           out.close();           return false;         } else {           // 添加日志           String operateContent = Constants.operateContent(uri);           if (null != operateContent) {             String url = uri.substring(uri.indexOf("background"));             String ip = request.getRemoteAddr();             Integer userId = ((SystemUserForm) obj).getId();             SystemLoggerForm form = new SystemLoggerForm();             form.setUserId(userId);             form.setIp(ip);             form.setOperateContent(operateContent);             form.setUrl(url);             this.systemLoggerService.edit(form);           }         }       }     }      Map paramsMap = request.getParameterMap();      for (Iterator<Map.Entry> it = paramsMap.entrySet().iterator(); it         .hasNext();) {       Map.Entry entry = it.next();       Object[] values = (Object[]) entry.getValue();       for (Object obj : values) {         if (!DataUtil.isValueSuccessed(obj)) {           throw new RuntimeException("有非法字符:" + obj);         }       }     }      return super.preHandle(request, response, handler);   }  } 

(2) 修改context-dispatcher.xml,讓spring管理攔截器

<mvc:interceptors>   <bean class="com.geloin.spring.interceptor.SystemInterceptor" /> </mvc:interceptors> 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金川县| 都昌县| 沙田区| 安顺市| 甘孜县| 四川省| 福鼎市| 常熟市| 开平市| 兴安盟| 武山县| 洛隆县| 陵水| 兴义市| 涿鹿县| 通渭县| 井冈山市| 通州市| 当阳市| 成安县| 京山县| 黔东| 高雄县| 三门峡市| 顺义区| 探索| 南丰县| 广西| 榕江县| 陆丰市| 固阳县| 游戏| 元朗区| 平果县| 肇源县| 临安市| 崇左市| 亳州市| 商城县| 涟源市| 府谷县|