栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Filter&Json

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Filter&Json

Filter&Json
  • 一、Filter
    • 1.1 开发步骤
    • 1.2 Filter的执行流程
    • 1.3 过滤器链
  • 二、JSON
    • 2.1 JSON串和Java对象的相互转换
      • 2.1.1 Fastjson (JSON 库)
      • 2.1.2 Fastjson 的使用

一、Filter

Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一

过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

Filter的作用:
而在访问到这些资源之前可以使过滤器拦截来下,也就是说在访问资源之前会先经过 Filter,如下图


过滤器还可以做 统一编码处理、 敏感字符处理 、权限控制…

1.1 开发步骤
  • 定义类,实现 Filter接口,并重写其所有方法

  • 配置Filter拦截资源的路径:在类上定义 @WebFilter 注解。而注解的 value 属性值 /* 表示拦截所有的资源

  • 在doFilter方法中输出一句话,并放行

注意:
上述代码中的 chain.doFilter(request,response); 就是放行,也就是让其访问本该访问的资源。

1.2 Filter的执行流程

如上图是使用过滤器的流程,我们通过以下问题来研究过滤器的执行流程:

  • 放行后访问对应资源,资源访问完成后,还会回到Filter中吗?

    从上图就可以看出肯定 会 回到Filter中

  • 如果回到Filter中,是重头执行还是执行放行后的逻辑呢?

    如果是重头执行的话,就意味着 放行前逻辑 会被执行两次,肯定不会这样设计了;所以访问完资源后,会回到 放行后逻辑,执行该部分代码。

通过上述的说明,我们就可以总结Filter的执行流程如下:

1.3 过滤器链

过滤器链是指在一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。


上图中的过滤器链执行是按照以下流程执行:

  1. 执行 Filter1 的放行前逻辑代码
  2. 执行 Filter1 的放行代码
  3. 执行 Filter2 的放行前逻辑代码
  4. 执行 Filter2 的放行代码
  5. 访问到资源
  6. 执行 Filter2 的放行后逻辑代码
  7. 执行 Filter1 的放行后逻辑代码

以上流程串起来就像一条链子,故称之为过滤器链。

注意:
我们现在使用的是注解配置Filter,而这种配置方式的优先级是按照过滤器类名(字符串)的自然排序。

比如有如下两个名称的过滤器 : BFilterDemo 和 AFilterDemo 。那一定是 AFilterDemo 过滤器先执行。

二、JSON

JSON 本质就是一个字符串,但是该字符串内容是有一定的格式要求的。 定义格式如下:

var 变量名 = '{"key":value,"key":value,...}';

JSON 串的键要求必须使用双引号括起来,而值根据要表示的类型确定。value 的数据类型分为如下:

  • 数字(整数或浮点数)
  • 字符串(使用双引号括起来)
  • 逻辑值(true或者false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null
    示例:
var jsonStr = '{"name":"zhangsan","age":23,"addr":["北京","上海","西安"]}'
2.1 JSON串和Java对象的相互转换

前后端的开发中,我们之间的数据就是通过json格式的数据传递的
重点操作:

  • 请求数据:JSON字符串转为Java对象
  • 响应数据:Java对象转为JSON字符串
2.1.1 Fastjson (JSON 库)

Fastjson 是阿里巴巴提供的一个Java语言编写的高性能功能完善的 JSON 库,是目前Java语言中最快的 JSON 库,可以实现 Java 对象和 JSON 字符串的相互转换。

2.1.2 Fastjson 的使用

一:导入坐标依赖:


    com.alibaba
    fastjson
    1.2.62

二:Java对象转JSON

String jsonStr = JSON.toJSONString(obj);

三:JSON字符串转Java对象

User user = JSON.parseObject(jsonStr, User.class);

从前端获取JSON字符串之后,通过request获取的字符缓冲流读取

BufferReader reader =request.getReader();

String jsonStr =reader.readLine();

之后就可以利用使用JSON的parseObject方法,将json字符串转化为封装的对象,之后利用对象来读取前段传来的数据

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/919064.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号