方法:
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws ServletException, IOException {
request = (HttpServletRequest) req;
response = (HttpServletResponse) resp;
request.getHeader("token");
chain.doFilter(req, resp);
}
package cn.org.emcs.materialapi.social.filter;
import cn.org.emcs.materialapi.cloud.ICommonControllerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//@Component:(在启动类启动类前加ServletComponentScan("扫描路径"),后才能得到iniParams中的值,如果用Component的话,就会得不到值)
@Slf4j
@WebFilter(filterName = "SocialMaterialFilter",
urlPatterns = "/*",/*通配符(*)表示对所有的web资源进行拦截*/
initParams = {
@WebInitParam(name = "charset",value = "utf-8")/*这里可以放一些初始化的参数*/
})
public class SocialMaterialFilter implements Filter {
// 注入Feign接口调用userbase的数据查询方法
@Autowired
ICommonControllerService commonControllerService;
private String filterName;
private String charset;
private HttpServletRequest request;
private HttpServletResponse response;
public void destroy() {
/*销毁时调用*/
// log.info(filterName+"销毁");
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws ServletException, IOException {
/*过滤方法,主要对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/
// log.info(filterName+"doFilter()");
req.setCharacterEncoding(charset);
resp.setCharacterEncoding(charset);
request = (HttpServletRequest) req;
response = (HttpServletResponse) resp;
StringBuffer urlPathBuffer = request.getRequestURL();
String token = request.getHeader("token");
log.info("过滤token==="+token);
// log.info("访问路径为:"+urlPathBuffer.toString());
String urlPathAll = urlPathBuffer.toString();
int index3;
index3 = urlPathAll.indexOf("/");
for(int i=0;i<=1;i++){ //得到地三个“/”位置的值
index3++;
index3 = urlPathAll.indexOf("/", index3);
}
log.info("index3=="+index3);
/*根据第三个字符拆分后面的路劲,得到path*/
String urlPath = urlPathAll.substring(index3);
// log.info("urlPath====:"+urlPath);
// if("http://127.0.0.1:8083/help1/getUser1".equals(urlPath.toString())){
// log.info("该路径已被拦截!");
// }else {
// chain.doFilter(req, resp);
// }
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
/*初始化方法 接受一个FiterConfig类型的参数 该参数是对Filter的一些配置*/
filterName = config.getFilterName();
charset = config.getInitParameter("charset");
// log.info("初始化Filter-------filterName"+filterName);
// log.info("过滤器名称:"+filterName);
// log.info("字符集编码:"+charset);
}
}