還在學習中,一個簡單的spring MVC 登入攔截
spring配置如下:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.test.intercept.InterceptDemo">
<property name="allowuri">
<!--允許通過的url-->
<value>/login.html</value>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>
如果有多個允許通過的請求時,可以使用list,用spring注入允許通過的uri這樣更靈活
java代碼如下:
package com.test.intercept;
import com.test.Userinfo;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Created by haocongshun on 2017/2/25.
*/
public class InterceptDemo implements HandlerInterceptor {
private static Logger logger = Logger.getLogger(InterceptDemo.class);
private List<String> allowuri;
/**
* Handler執行之前調用這個方法,一般攔截在此處攔截
* @param httpServletRequest
* @param httpServletResponse
* @param o
* 是否允許通過@return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
String uri = httpServletRequest.getRequestURI();
// if(uri.contains("/login.html")){
// return true;
// }
// 如果你有多可允許通過的uri可以使用list在Spring中配置,更加靈活
for(String auri : allowuri){
if(auri.contains(uri)){
return true;
}
}
//檢驗session中是否有你需要的屬性
Userinfo userinfo = (Userinfo) httpServletRequest.getSession().getAttribute("userinfo");
if(userinfo!=null){
return true;
}
logger.info("被攔截的uri:"+uri);
httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/admin/login.html");
return false;
}
/**
*Handler執行之後,ModelAndView傳回之前調用這個方法
*/
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
/**
* Handler執行完成之後調用這個方法
*/
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
public List getAllowuri() {
return allowuri;
}
public void setAllowuri(List allowuri) {
this.allowuri = allowuri;
}
public static Logger getLogger() {
return logger;
}
public static void setLogger(Logger logger) {
InterceptDemo.logger = logger;
}
}