1.為什麼要登陸攔截
在未登入之前,我們并不希望使用者可以看見裡面的内容,這時候就要設定攔截器,隻有登陸之後的使用者才可以看見裡面的内容。
2.實作思路
使用攔截器,判斷session裡是否有使用者資訊,若有,則放行,若沒有,則重定向到登陸頁面。
3.springMVC配置
<!--配置攔截器-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/home/**"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/**/*.css"/>
<mvc:exclude-mapping path="/**/*.js"/>
<mvc:exclude-mapping path="/**/*.png"/>
<mvc:exclude-mapping path="/**/*.gif"/>
<mvc:exclude-mapping path="/**/*.jpg"/>
<mvc:exclude-mapping path="/**/*.jpeg"/>
<mvc:exclude-mapping path="/registerUser"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/checkId"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/register"></mvc:exclude-mapping>
<bean class="com.sustly.interceptors.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
配置攔截所有請求,除了登陸注冊頁面以及靜态資源檔案。
4.Interceptor類編寫
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
String id = (String) request.getSession().getAttribute("id");
if(id == null) {
response.sendRedirect("/home/login");
return false;
}else {
return true;
}
}
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}