先对文章问题进行说明:我从网上弄了一个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%20}/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>
这样的话,拦截器就只会拦截登录相关的页面,注册的页面就可以正常访问了!