要求:
代碼中配置的url路徑為http://127.0.0.1/api/associates/queryAssociatesInfo
現在要求http://127.0.0.1/associates/queryAssociatesInfo也可以同樣訪問同一個conroller下面的method,並且要求參數全部跟隨
代碼:
package com.shitou.huishi.framework.filter; 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.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; /** * 修改請求路由,當進入url為/a/b時,將其url修改為/api/a/b * Created by qhong on 2018/5/16 13:27 **/ public class UrlFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest)request; HttpServletResponseWrapper httpResponse = new HttpServletResponseWrapper((HttpServletResponse) response); System.out.println(httpRequest.getRequestURI()); String path=httpRequest.getRequestURI(); if(path.indexOf("/api/")<0){ path="/api"+path; System.out.println(path); httpRequest.getRequestDispatcher(path).forward(request,response); } else { chain.doFilter(request,response); } return; } }
這個類必須繼承Filter類,這個是Servlet的規范。有了過濾器類以后,以前的web項目可以在web.xml中進行配置,但是spring boot項目並沒有web.xml這個文件,那怎么配置?在Spring boot中,我們需要FilterRegistrationBean來完成配置。
其實現過程如下:
package com.shitou.huishi.framework.filter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Created by qhong on 2018/5/16 15:28 **/ @Configuration public class FilterConfig { @Bean public FilterRegistrationBean registFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new UrlFilter()); registration.addUrlPatterns("/*"); registration.setName("UrlFilter"); registration.setOrder(1); return registration; } }
