d9070f4ad8bd29fc852324fc99e11edb7e7bfea2.svn-base 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.iamberry.app.api.filters;
  2. import java.io.IOException;
  3. import javax.servlet.Filter;
  4. import javax.servlet.FilterChain;
  5. import javax.servlet.FilterConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletRequest;
  8. import javax.servlet.ServletResponse;
  9. import javax.servlet.annotation.WebFilter;
  10. import javax.servlet.http.HttpServletRequest;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import com.iamberry.app.api.util.AppVersion;
  14. /**
  15. * 版本控制器,当filter获取到了版本以后,通过req向下传递,可以通过req.getAttribute("v")获取,如果为空,表示请求的APP版本在1.2.5以前。 <br>
  16. * 系统本身并没有版本控制机制,而是通过Client 和 Server的互相约定,达到版本控制的功能。
  17. * @company 深圳爱贝源科技有限公司
  18. * @website www.iamberry.com
  19. * @author 献
  20. * @tel 18271840547
  21. * @date 2016年12月13日
  22. */
  23. @WebFilter(value = "/*")
  24. public class VersionFilter implements Filter {
  25. private static Logger log = LoggerFactory.getLogger(VersionFilter.class);
  26. @Override
  27. public void init(FilterConfig filterConfig) throws ServletException {
  28. }
  29. @Override
  30. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
  31. throws IOException, ServletException {
  32. HttpServletRequest req = (HttpServletRequest) request;
  33. // 解析App版本
  34. AppVersion v = AppVersion.parseUserAgent(req.getHeader("User-Agent") == null ? "" : req.getHeader("User-Agent"));
  35. req.setAttribute("v", v);
  36. // 日志
  37. log.info("【" + req.getRequestURI() + "】 " + v);
  38. // 向下转发
  39. chain.doFilter(req, response);
  40. }
  41. @Override
  42. public void destroy() {
  43. }
  44. }