filter是什么
是一个过滤器类,Filter对用户请求进行预处理,接着将请求交给dispatcher servlet(分端控制器)进行预处理并生成响应,最后Filter再对服务器响应进行后处理。
客户端请求消息和controller请求消息做比对(controller是标准)
filter开发
步骤:
- 初始化-从webapplicationcontext中获取controller里面的消息,让它作为过滤标准
- 增加@webfilter注解,让其类成为过滤器类;引入filter类
- 对filter类进行开发-->复写3个方法-->得出过滤器的第一步是初始化
- 怎么获取过滤标准-->增加@Resource注解,引入webapplicationcontext类-使用bean方法-引入RequestMappingHandlerMapping类--在方法中引入请求方法,请求地址RequestMappingInfo,HandlerMethod--->对内容进行循环最终得到可打印数据--得到标准---但这个标准是原本HandlerMapping类自带的,只是拿出这个标准和客户端请求消息对比
- 获取客户端的请求消息
- 因为入参得到的方法少,先上转到子类httpservlerequest,使用子类的方法
- 按照需要找方法:getRequestURI接口地址、getMethod接口方法,getParameterMap请求参数,得到后再循环遍历打印出来
- 过滤
</
- 过滤成功
- 获取请求的URL对应的方法为controllerMethod
- 如果map里包含客户端请求的url(reqUrl),并且controllerMethod方法和客户端方法reqMethod相等时就判断过滤成功,继续执行chain.doFilter(request, response)。
- 过滤失败
- request.getRequestDispatcher(""):获取当前请求的请求分派器,参数为空字符串表示获取当前请求的分派器。
- forward(request, response):使用获取到的请求分派器将当前请求转发到另一个资源,参数包括当前请求对象和响应对象。