filter和JSON

Posted 小王子jvm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了filter和JSON相关的知识,希望对你有一定的参考价值。

Filter(过滤器)

web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。

1、Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器

2、Filter 过滤器它是 JavaEE 的规范。也就是接口

3、Filter 过滤器它的作用是:拦截请求,过滤响应。

例如登录拦截:

Filter 过滤器的使用步骤:

1、编写一个类去实现 Filter 接口

2、实现过滤方法 doFilter()

3、到 web.xml 中去配置 Filter 的拦截路径(或者使用注解配置),@WebFilter("/*") 访问所有资源之前,都会执行该过滤器

@WebFilter("/*")//访问所有资源之前,都会执行该过滤器
public class FilterDemo1 implements Filter 
    @Override
    public void init(FilterConfig filterConfig) throws ServletException 

    

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException 
        System.out.println("filterDemo1被执行了....");
        //放行
        filterChain.doFilter(servletRequest,servletResponse);

    

    @Override
    public void destroy() 

    

过滤器细节

过滤器执行流程

  • 执行过滤器
  • 执行放行后的资源
  • 回来执行过滤器放行代码下边的代码

过滤器生命周期方法

  • init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
  • doFilter:每一次请求被拦截资源时,会执行。执行多次
  • destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。

用于释放资源,过滤器配置详解,拦截路径配置:

  • 具体资源路径: /index.jsp 只有访问index.jsp资源时,过滤器才会被执行
  • 拦截目录: /user/* 访问/user下的所有资源时,过滤器都会被执行
  • 后缀名拦截: *.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行
  • 拦截所有资源:/* 访问所有资源时,过滤器都会被执行

拦截方式配置:资源被访问的方式

  • 注解配置:

    设置dispatcherTypes属性

    REQUEST默认值。浏览器直接请求资源
    FORWARD转发访问资源
    INCLUDE包含访问资源
    ERROR错误跳转资源
    ASYNC异步访问资源
  • web.xml配置

    设置标签即可

过滤器链(配置多个过滤器)

  • 执行顺序:如果有两个过滤器:过滤器1和过滤器2

    1. 过滤器1
    2. 过滤器2
    3. 资源执行
    4. 过滤器2
    5. 过滤器1
  • 过滤器先后顺序问题:

    1. 注解配置:按照类名的字符串比较规则比较,值小的先执行

    如: AFilter 和 BFilter,AFilter就先执行了。
    2. web.xml配置: 谁定义在上边,谁先执行

JSON

json 是由键值对组成,并且由花括号(大括号)包围。每个键由引号引起来,键和值之间使用冒号进行分隔, 多组键值对之间进行逗号进行分隔。

json 定义示例:

var jsonObj = 
    "key1":12,
    "key2":"abc",
    "key3":true,
    "key4":[11,"arr",false],
    "key5":
        "key5_1" : 551,
        "key5_2" : "key5_2_value"
    ,
    "key6":[
        "key6_1_1":6611,
        "key6_1_2":"key6_1_2_value"
    ,
        "key6_2_1":6621,
        "key6_2_2":"key6_2_2_value"
    ]
;

json 本身是一个对象。 json 中的 key 我们可以理解为是对象中的一个属性。 json 中的 key 访问就跟访问对象的属性一样: json 对象.key

json 的两个常用方法

json 的存在有两种形式。

  • 对象的形式存在,我们叫它 json 对象。

  • 字符串的形式存在,我们叫它 json 字符串。

一般我们要操作 json 中的数据的时候,需要 json 对象的格式。 一般我们要在客户端和服务器之间进行数据交换的时候,使用 json 字符串。

JSON 在 java 中的使用

javaBean 和 json 的互转:(导入jackson的相关jar包,这个是使用GSON包)

@Test
public void test1()
    Person person = new Person(1,"哥好帅!");
    // 创建 Gson 对象实例,包中组件
    Gson gson = new Gson();
    // toJson 方法可以把 java 对象转换成为 json 字符串
    String personJsonString = gson.toJson(person);
    System.out.println(personJsonString);
    // fromJson 把 json 字符串转换回 Java 对象
    // 第一个参数是 json 字符串
    // 第二个参数是转换回去的 Java 对象类型
    Person person1 = gson.fromJson(personJsonString, Person.class);
    System.out.println(person1);

也可以使用jackson:

//Java对象转为JSON字符串
@Test
public void test1() throws Exception 
    //1.创建Person对象
    Person p  = new Person();
    p.setName("张三");
    p.setAge(23);
    p.setGender("男");

    //2.创建Jackson的核心对象  ObjectMapper
    ObjectMapper mapper = new ObjectMapper();
    //3.转换
    /*  转换方法:
         writeValue(参数1,obj):
         参数1:
          File:将obj对象转换为JSON字符串,并保存到指定的文件中
          Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
          OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
          writeValueAsString(obj):将对象转为json字符串
    */
    String json = mapper.writeValueAsString(p);
    //"name":"张三","age":23,"gender":"男"
    System.out.println(json);//"name":"张三","age":23,"gender":"男"


//JSON字符串转为Java对象
@Test
public void test5() throws Exception 
    //1.初始化JSON字符串
    String json = "\\"gender\\":\\"男\\",\\"name\\":\\"张三\\",\\"age\\":23";

    //2.创建ObjectMapper对象
    ObjectMapper mapper = new ObjectMapper();
    //3.转换为Java对象 Person对象
    Person person = mapper.readValue(json, Person.class);

    System.out.println(person);

以上是关于filter和JSON的主要内容,如果未能解决你的问题,请参考以下文章

具有haskell中的多参数函数的延迟过滤器

filter和JSON

如何在js里面处理后台传来的json,并显示在页面上

使用 Rxjs map 和 filter 一起从 json 中选择国家和州

2022-06-12 spring security 配置json登录filter

Logstash Filter(三)Json