Servlet过滤器的使用

第一种 没有注解的 过滤web层的utf-8编码

package com.hxf.Filter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// 编写 过滤器第一步 实现Fillter接口
// 前端<meta charset="UTF-8"> 如果乱码 UTF-8要改成GBK
public class BianMaFilter implements javax.servlet.Filter {
    // 以下是过滤器的生命周期
    // 1 初始化方法
    public void init(javax.servlet.FilterConfig config) throws javax.servlet.ServletException {
        System.out.println("我是过滤器,我诞生了");
    }
    // 2 过滤的方法
    public void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse resp, javax.servlet.FilterChain chain) throws javax.servlet.ServletException, IOException {
        System.out.println("过滤发生在我这里");
        // 让http的req和resp 等于 javax.servlet.ServletRequest 的req和resp
            
        // 如果写第一二行代码了就不用写第三行了
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;// 让json也变成utf-8
        // 让json也变成utf-8
        // response.setContentType("application/json;charset=utf-8");

        // 过滤 编码
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("utf-8");

        chain.doFilter(req, resp);//chain 链条的意思 这段代码的 意思相当于 放行
    }
    // 3 销毁的方法
    public void destroy() {
        System.out.println("我是过滤器,我的任务完成了");
    }

}

xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <filter>
        <filter-name>BianMaFilter</filter-name>
        <filter-class>com.hxf.Filter.BianMaFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>BianMaFilter</filter-name>
        <!-- /*代表所有的连接 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

第二种 有注解 过滤后台管理登录界面

package com.hxf.Filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter(filterName = "LoginFilter",value = {"/*"}) // 多个的话 要加大括号
public class LoginFilter implements Filter {
    public void destroy() {
    }
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        // 让http的req和resp 等于 javax.servlet.ServletRequest 的req和resp
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        // 过滤编码
package com.hxf.Filter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// 编写 过滤器第一步 实现Fillter接口
// 前端<meta charset="UTF-8"> 如果乱码 UTF-8要改成GBK
public class BianMaFilter implements javax.servlet.Filter {
    // 以下是过滤器的生命周期
    // 1 初始化方法
    public void init(javax.servlet.FilterConfig config) throws javax.servlet.ServletException {
        System.out.println("我是过滤器,我诞生了");
    }
    // 2 过滤的方法
    public void doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse resp, javax.servlet.FilterChain chain) throws javax.servlet.ServletException, IOException {
        System.out.println("过滤发生在我这里");
        // 让http的req和resp 等于 javax.servlet.ServletRequest 的req和resp
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        // 过滤 编码
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("utf-8");

        chain.doFilter(req, resp);//chain 链条的意思 这段代码的 意思相当于 放行
    }
    // 3 销毁的方法
    public void destroy() {
        System.out.println("我是过滤器,我的任务完成了");
    }

}


        // 注意session在登录浏览器的时候就有 只不过是默认的
        // 谁在登陆成功时的session就过去 不成功session就拦截
        HttpSession session = request.getSession();
        // 以下 前面是实体类
        // AdminUser adminUser = session.getAttribute("adminUser");//引号里写你session中的东西

        // 特殊的。。。路径是前端page层转发的/admin/login 还有ajax的方法/admin/loginFun
        // String requestURI = request.getRequestURI();//获取路径
        // if (requestURI.equals('/admin/login')){
        //      chain.doFilter(req, resp);
        //      return;
        // }
        // 放行vue jquery bootstrap 和验证码
//         if (requestURI.equals('/admin/loginFun') || requestURI.equals('/vue.js') ||requestURI.equals('/jquery.js')||requestURI.equals('/yanzhengma')||requestURI.equals('/bootstrap.js')){
        //      chain.doFilter(req, resp);
        //      return;
        // }

        //if (null == adminUser){
        //            // 没有存登录后这个用户的session
        //            // 不让他进去
        //            Map map = new HashMap();
        //            map.put("code",400);
        //            map.put("msg","您似乎没有登录,请登陆后再访问");
        //          String s = JSON.toJSONString(map);//需要json 的 jar包
        //          response.getWriter().print(s);
        //        }

        chain.doFilter(req, resp);
    }

    public void init(FilterConfig config) throws ServletException {

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值