12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package com.iamberry.app.api.filters;
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.annotation.WebFilter;
- import javax.servlet.http.HttpServletRequest;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.iamberry.app.api.util.AppVersion;
- /**
- * 版本控制器,当filter获取到了版本以后,通过req向下传递,可以通过req.getAttribute("v")获取,如果为空,表示请求的APP版本在1.2.5以前。 <br>
- * 系统本身并没有版本控制机制,而是通过Client 和 Server的互相约定,达到版本控制的功能。
- * @company 深圳爱贝源科技有限公司
- * @website www.iamberry.com
- * @author 献
- * @tel 18271840547
- * @date 2016年12月13日
- */
- @WebFilter(value = "/*")
- public class VersionFilter implements Filter {
- private static Logger log = LoggerFactory.getLogger(VersionFilter.class);
-
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- }
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException {
-
- HttpServletRequest req = (HttpServletRequest) request;
-
- // 解析App版本
- AppVersion v = AppVersion.parseUserAgent(req.getHeader("User-Agent") == null ? "" : req.getHeader("User-Agent"));
- req.setAttribute("v", v);
-
- // 日志
- log.info("【" + req.getRequestURI() + "】 " + v);
-
- // 向下转发
- chain.doFilter(req, response);
- }
- @Override
- public void destroy() {
- }
- }
|