SpringMVC 相应处理 @ModelAttribute 线程安全问题

107 阅读1分钟

常用场景 1、写在方法上
① @ModelAttribute写在方法上会让所有的处理方法调用之前先调用@ModelAttribute的方法。

线程安全问题

线程不安全=并发问题:同一时间 多个线程 同时对共享数据 变量 资源 进行读写 产生的并发问题(脏读 幻影读)

1、通过参数绑定的方式。

线程安全因为参数绑定的变量是方法级别的 每次请求都在内存开辟独立的内存空间。

2、通过@AutoWired自动注入的方式。

@Autowired
private HttpSession session;

是共享变量(单例类级别的变量) 因为SpringMVC是通过ThreadLocal存储的 servlet-api 所以通过自动注入进来的servlet是线程安全的。

3、通过@ModelAttribute 及参数绑定。

不是线程安全的 因为他是共享变量

转发及重定向

转发: 地址栏不变化 请求次数1次 请求中数据不会丢失 根目录 包含了项目的访问地址

forward 转发

redirect 重定向