Jul 10, 2017 10:38:44 AM
作者:zozoh
WhaleFilter是什么?
简单来说,它是一个专门做脏活的Filter. 例如改变req的method,设置编码等.
WhaleFilter实现的是javax.servlet.Filter, 是用到web.xml里面的哦
- 如何确保req的表单参数的编码一定对, 例如ShiroFilter就有可能对req动手脚
- 如何优雅地支持http method的隐式声明
- 如何统一 普通表单/文件上传/传json 的适配,如何把这3种形式统一起来的问题
基本用法
将其放入web.xml中,确保在所有其他Filter之前,包括NutFilter.
WhaleFilter通过初始化参数config, Properties文件格式(键值对)的方式进行配置
如果不声明config,那WhaleFilter不抛错也不干任何事,安安静静的
编码过滤
没错,跟Spring的编码过滤器一样,只是我们把它作为WhaleFilter的其中一个配置项了.
enc.output=utf-8
http方法隐式声明
什么是http方法隐式声明? 例如 有一个form表单,需要映射到标注的入口方法,那么, 有几个选项:
- 通过ajax, 设置method
- 需要声明一个隐藏参数_method=delete,让WhaleFilter为你改变req的method
例如这样的表单
对应这样的入口方法
@At("/topic/?")
public void topicDelete(int id) {
}
那WhaleFilter需要什么参数
顺带说一下, 还有一种方式, "X-HTTP-Method-Override", 可通过下面的配置开启.