先對文章問題進行說明:我從網上弄了一個web項目,但是登錄頁面沒有注冊的功能!索性自己編寫注冊的功能!
代碼並沒有錯誤,但是點擊的時候並沒有跳到注冊頁面,而是一直在登錄界面上跳轉。郁悶了很久才發現是被攔截器攔截住了!(還是對別人的項目不了解所至)
下面來對問題做深入的講解!
一開始我的登陸了頁面只有登錄的按鈕,並沒有注冊按鈕
於是我在登錄頁面上填寫了注冊的按鈕(注冊按鈕不是鏈接!)
Login.jsp
1 <center> 2 <h1>用戶登錄</h1> 3 <form action="${pageContext.request.contextPath }/login.action"> 4 <table> 5 <tr><td>用戶賬號:<input type="text" name="usercode" /></td></tr> 6 <tr><td>用戶密碼 :<input type="password" name="password" /></td></tr> 7 <tr> 8 <td><input type="submit" value="登陸"/> 9 <a href="${pageContext.request.contextPath }/registerUser.action">注冊</a></td> 10 </tr> 11 </table> 12 </form> 13 </center>
通過點擊注冊按鈕,觸發controller的接口,來完成跳轉!
Controller類的接口
1 2 @RequestMapping("/registerUser") 3 public String register(){ 4 return "register"; 5 } 6
然后通過該方法去訪問register.jsp頁面來完成頁面的跳轉。jsp頁面也是存在的
流程就是上面的流程!可是不知道為什么我的注冊按鈕就是不能用!代碼也不報錯!找了好久也沒找到問題所在。無意中想到了攔截器!
對!肯定是攔截器把所有的頁面都攔截了,只要是沒有登錄,所有的頁面都給你攔截掉!所以導致我連注冊頁面都點不開!
攔截器的代碼如下:
1 <!--攔截器 --> 2 <mvc:interceptors> 3 <mvc:interceptor> 4 <mvc:mapping path="/**" /> 6 <bean class="cn.itcast.ssm.controller.interceptor.LoginInterceptor"></bean> 7 </mvc:interceptor> 8 </mvc:interceptors>
從代碼中可以看出攔截器確實把所有的頁面都攔截了!
問題找到了就方便多了!
下面來解決這個問題!
去網上百度了如何讓攔截器不攔截特定的URL,網上給出了一種辦法:
1 <!--攔截器 --> 2 <mvc:interceptors> 3 <mvc:interceptor> 4 <mvc:mapping path="/" /> 5 <mvc:mapping path="/login/**" /> 6 <bean class="cn.itcast.ssm.controller.interceptor.LoginInterceptor"></bean> 7 </mvc:interceptor> 8 </mvc:interceptors>
這樣的話,攔截器就只會攔截登錄相關的頁面,注冊的頁面就可以正常訪問了!