麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

Spring mvc Interceptor 解決Session超時配置流程

2019-11-14 09:19:15
字體:
供稿:網(wǎng)友

最近公司內(nèi)部框架中對session超時這一功能未實現(xiàn),由于采用iframe結(jié)構(gòu),Session超時后,當點擊左側(cè)系統(tǒng)菜單時,會在iframe的右側(cè)再次彈出登陸框。

該問題是由于沒有設(shè)置攔截器造成。

添加攔截器思路:當Session超時后,用戶點擊menu時,需要用Interceptor進行前項攔截,并判斷此時session中是否還存在用戶信息,如果不存在,將其指定登陸主頁面。

如下代碼:

1)首先在applicationContext-mvc.xml中加入mvc:interceptor標簽。

[html] view plain copy        <!-- session timeout interceptor -->  <mvc:interceptors>      <mvc:interceptor>          <mvc:mapping path="/*/*" />          <bean class="com.lenovo.lstp.mam.interceptor.SessionTimeoutInterceptor" >              <PRoperty name="allowUrls">                    <list>                      <value>/login/login.do</value>                      <value>/common/language.do</value>                    </list>                </property>            </bean>      </mvc:interceptor>  </mvc:interceptors>    <!-- exception handler -->     <bean id="handlerExceptionResolver"      class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" >      <property name="exceptionMappings">          <props>              <prop key="com.lenovo.lstp.mam.exception.SessionTimeoutException">/blank</prop>          </props>      </property>     </bean>  上述代碼中首先要在系統(tǒng)內(nèi)部包中創(chuàng)建一個名為SessionTimeoutInterceptor的攔截器,并指定允許的訪問的url為list中集合。

當用戶從此地址登陸后,無需進行攔截。

SessionTimeoutException中為當攔截生效后,會throw出該異常。

并進入blank.jsp頁面。

2)第二步則要進行攔截器SessionTimeoutInterceptor創(chuàng)建,代碼如下:

[java] view plain copy/**      * Session超時,攔截訪問      *       */      public boolean preHandle(HttpServletRequest request,              HttpServletResponse response, Object handler) throws Exception {          String requestUrl = request.getRequestURI();                    for(String url : allowUrls) {              if(requestUrl.endsWith(url)) {                  return true;              }          }                    String session = (String) WebUtils.getSessionAttribute(request,                  "username");          if(session != null) {              return true;          }else {              throw new SessionTimeoutException();          }                }  除了被允許的Url,其他任何Url,只要沒有檢查到Session的存在,則會拋出SessionTimeoutException,用于去指向登陸頁面,SessionTimeoutException中則無需寫入任何操作。

3)由于iframe布局會造成登陸框內(nèi)嵌問題,因此可以通過以下方式實現(xiàn),代碼如下:

[javascript] view plain copyvar session = "${user}";  if("" == session){      top.location = "transfer.jsp";  }  if (null == session) {   top.location = "transfer.jsp";  }  在blank.jsp中引入一個中轉(zhuǎn)頁transfer.jsp。這個頁面用于進行post跳轉(zhuǎn),再次去請求login.do。

top.location為指定在主頁面展示,而不是在內(nèi)嵌的頁面展示。

4)第四步則需要進行二次login.do的請求,代碼如下:

[plain] view plain copy<script type="text/Javascript">  $(document).ready(function(){      document.transfer.submit();  });  </script>      <body>  <form name="transfer" action="login/login.do" method="post"></form>    </body>  當進入該頁面,會自動提交login.do請求,但是之前由于頁面允許了login.do的進入,該操作可以在loginControll中進行判斷。

代碼如下:

[java] view plain copy/* After session timeout, check dto's username, and return login.jsp. */          if(dto.getUsername() == null) {               ModelAndView mv = new ModelAndView("login");              return mv;          }            在login方法中引入該判斷 ,對二次訪問該Controll的信息進行判斷,如果用戶名沒有的話,則自動跳回login.jsp頁面重新輸入。

此時,已大功告成,如果登陸頁面有其他鏈接,可以在allowurl去進行配置。

以上轉(zhuǎn)載自http://blog.csdn.net/fly2749/article/details/8702855


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲国产高清一区 | 欧美日韩在线视频一区 | 中文有码一区二区 | 国产一区二区三区视频在线 | 久久久久久久一区二区 | av免费在线免费观看 | 杏美月av| 中文字幕在线播放一区 | 一区二区三区黄色 | 亚洲字幕av| 国产精品69久久 | 日本黄色不卡视频 | 国产精品剧情一区二区三区 | 欧美18—19sex性护士中国 | 综合在线一区 | 黄色一级片免费在线观看 | 国产精品刺激对白麻豆99 | 国产精品色综合 | 黄网站免费入口 | 欧美另类综合 | 日韩色视频在线观看 | 国产高清成人久久 | 国产亚洲精品久久久久5区 综合激情网 | 视频久久免费 | 羞羞视频免费观看入口 | 天天干干| 黄色aaa视频| 黄污视频在线看 | 亚洲精品无码不卡在线播放he | 色视频在线播放 | 免费在线观看国产精品 | 国产91九色 | 亚洲一区二区三区高清视频 | 一区二区三区日韩电影 | 久久久久久久91 | 国产精品久久久久久久久粉嫩 | 日本黄色不卡视频 | 亚洲第一色婷婷 | 九九热欧美 | 久久久一区二区三区精品 | 一区二区三区无码高清视频 |