案例分析
京东的某些功能,必须登录才能访问
没有登录,必须登录 订单 ,地址
案例实现
LoginInterceptor
//1:判断一下路径,如果访问的是order address..判断是否登录 未登录强制到登入页面
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("LoginInterceptor preHandle------------------------");
User user = (User) request.getSession().getAttribute("user");
if(user == null){
String address = request.getRequestURI();
System.out.println("address = "+address);
if(address.contains("order")||address.contains("address")){
String contextPath=request.getContextPath();
response.sendRedirect(contextPath+"/login.jsp");
//强制到登录页面
return false;
}
}
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("LoginInterceptor postHandle------------------------");
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("LoginInterceptor afterCompletion------------------------");
}
}
springmvc.xml
<!--拦截器使用第二步:配置拦截器-->
<mvc:interceptors>
<!--用于测试的拦截器-->
<mvc:interceptor>
<!--拦截路径的配置-->
<mvc:mapping path="/**"/>
<bean id="interceptor1" class="com.wzx.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
测试OrderController
@Controller
@RequestMapping("/order")
public class OrderController {
@RequestMapping(path = "/query.action",method = {
RequestMethod.GET,RequestMethod.POST})
public String query(Integer id){
System.out.println("你访问了我的订单功能 ");
return "order";
}
}
地址
http://localhost:8080/web03/order/query.action?id=1