首先interceptor这种方法只能拦截.do后缀的,因为springmvc 的servlet在配置中只拦截.do后缀的,而springmvc的interceptor配置在springmvc中
1 在springmvc.xml中配置
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/buyer/buyCart.do"/>
<mvc:mapping path="/buyer/showAllCollectionProducts.do"/>
<mvc:mapping path="/buyer/collectProductById.do"/>
<bean class="com.ssh.interceptor.BuyerInterceptor"/>
</mvc:interceptor>
这种方式之拦截三个do
还有一种
排除法,看哪个方便
<mvc:interceptor>
<!-- 进行拦截:/**表示拦截所有controller -->
<mvc:mapping path="/**" />
<!-- 不进行拦截 -->
<mvc:exclude-mapping path="/index.do"/>
<bean class="com.bybo.aca.web.interceptor.Login"/>
</mvc:interceptor>
</mvc:interceptors>
2对配置的哪个bean进行编写
package com.ssh.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.ssh.po.Buyer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class BuyerInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Buyer buyer = (Buyer)session.getAttribute("buyer");
if( buyer == null ){
System.out.println("买家需要登录");
request.getRequestDispatcher("/views/login.jsp").forward(request, response);
return false;
}
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}