Filter过滤器
1、简介:
Filter也称之为过滤器,它是Servlet技术中最实用的技术,是实现Filter接口的Java类,
WEB开发人员通过Filter技术,对web服务器管理的所有web资源,
它主要用于对用户请求进行预处理,也可以对HttpServletResponse 进行后处理。
使用Filter 的完整流程:Filter
对用户请求进行预处理,接着将请求交给Servlet 进行处理并生成响应,最后Filter 再对服务器响应进行后处理。
作用:
过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应,就如生活中过滤水一样,
**但是当服务器返回给浏览器的时候也是需要过滤的。
简单流程:
Web浏览器——Web服务器——过滤器——web资源 Jsp Servlet html 然后返回来web资源 Jsp Servlet html——过滤器——Web服务器——Web浏览器
当浏览器发送请求给服务器的时候,先执行过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器之前,也会途径过滤器。
相关代码:
> @WebFilter("/*")
> public class CheckLoginFilter implements Filter {
>
> @Override
> public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws
> IOException, ServletException {
> System.out.println("CheckLoginFilter.doFilter");
判断条件
> if("/login".equals(servletPath)){
> filterChain.doFilter(servletRequest,servletResponse);
> return; }
>
> HttpSession session = request.getSession(); String account = (String)
> session.getAttribute("account");
>
> if (account != null) {
> filterChain.doFilter(servletRequest,servletResponse); }else{
> ((HttpServletResponse)servletResponse).sendRedirect(request.getContextPath()+"/login");
> }
放行:
filterChain.doFilter(servletRequest,servletResponse);
前端处理数据库乱码:
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");