非常简单的配置:
第一步创建一个
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.annotation.WebFilter;
/**
* 使用注解标注过滤器
*@WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器
* 属性filterName声明过滤器的名称,可选
* 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)
*@qq179061434
*/
@WebFilter(urlPatterns="/*")
public classMyFilterimplementsFilter {
@Override
public voiddestroy() {
System.out.println("过滤器销毁");
}
@Override
public voiddoFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throwsIOException, ServletException {
System.out.println("执行过滤操作");
chain.doFilter(request, response);
}
@Override
public voidinit(FilterConfig config)throwsServletException {
System.out.println("过滤器初始化");
}
}
第二步在启动类加个注解就ok,@ServletComponentScan 这个注解相当于要求启动时候扫描注解,这样过滤器注解才会扫描。如图:
chain.doFilter(request, response);作用是跳转你的项目接口路径。
以下是request获取要的方法:经常用的是request.getParameter
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式
getContentLength():返回请求的Body的长度实例
getInputStream():返回请求的输入流,用于获得请求中的数据getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关SessiongetServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
案例,需要先把importjavax.servlet.ServletRequest转化成importjavax.servlet.http.HttpServletRequest,在去调用head方法: