SpringMVC_Config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- MVC注解驱动,引入3个类request,response,json -->
<mvc:annotation-driven/>
<!-- 配置扫描器,使得@Controller注解生效 -->
<context:component-scan base-package="com.jt.web.controller" />
<!-- 定义视图解析器 -->
<!-- prefix="/WEB-INF/jsp/", suffix=".jsp", viewname="test" -> "/WEB-INF/jsp/test.jsp" -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/views/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
<!-- 处理静态资源被“/”所拦截的问题 -->
<mvc:default-servlet-handler />
<!--定义拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/cart/**"/>
<bean class="com.jt.web.interceptor.CartInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
拦截器
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.dubbo.common.utils.StringUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.feifan.common.service.HttpClientService;
import com.feifan.common.util.CookieUtils;
import com.feifan.web.pojo.User;
import com.feifan.web.thread.UserThreadLocal;
public class CartInterceptor implements HandlerInterceptor{
@Autowired
private HttpClientService httpClientService;
private static final ObjectMapper objectMapper = new ObjectMapper();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String ticket = CookieUtils.getCookieValue(request, "JT_TICKET");
if(StringUtils.isNotEmpty(ticket)){
String JSONData = httpClientService.doGet("http://sso.feifan.com/user/query/"+ticket);
if(StringUtils.isNotEmpty(JSONData)){
JsonNode jsonNode = objectMapper.readTree(JSONData);
String userJSON = jsonNode.get("data").asText();
if(StringUtils.isNotEmpty(userJSON) && !"null".equals(userJSON)){
User user = objectMapper.readValue(userJSON, User.class);
UserThreadLocal.setUser(user);
return true;
}
}
}
response.sendRedirect("/user/login.html");
UserThreadLocal.setUser(null);
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
}