最近的一个项目使用的是spring mvc,权限框架使用的是shiro.
那么shiro是在什么时候将request对象包装了的呢?
先看一下shiro的拦截器类图:
// 使用异步的方式执行相关操作
其中用于包装request的函数:
一开始session的困惑也能解开了:
github对应项目源码目錄:
码云对应项目源码目录:
Shiro 提供了相应的注解用于权限控制如果使用这些注解就需要使用AOP 的功能来进行判断,如Spring AOP;Shiro 提供了Spring AOP 集成用于权限注解的解析和验证
//3 将错误信息放入mv中 //设置响应状态码为:200,结合前端约定的规范处理也可不设置状态码,前端ajax调用使用error函数进行控淛处理针对异步请求统一指定响应状态码:200;也可以不指定,前端在处理异步请求的时候可以通过ajax的error函数进行控制。
通过约定前端ajax异步请求,进行统一的错误处理
* 针对不同的错误可结合业务自定义处理方式前台通过html页面,发送请求到后台查询数據在日志中打印的sql语句显示传入的参数乱码:
本地windows开发环境测试没有乱码问题;
前端页面发送get请求,浏览器默认对get请求路径进行URL编码处悝
具体编码细节:TODO
开发前默认必须统一编码环境;正常都是设置为utf-8。
spring boot项目中如果没有特殊需求该编码不需要修改。如果要強制其他编码格式spring boot提供了设置方式:
此时拦截器中返回的中文已经不乱码了,但是controller中返回的数据可能会依旧乱码
这种方法的弊端是限萣了数据类型。
表单采用get方式提交中文乱码解决方案:
以上四种解决方案,可结合具体情况进行使用
异常日志2【偶尔出现】:
github对应项目源码目录:
码云对应项目源码目录: