常用场景
1、写在方法上
① @ModelAttribute写在方法上会让所有的处理方法调用之前先调用@ModelAttribute的方法。
线程安全问题
线程不安全=并发问题:同一时间 多个线程 同时对共享数据 变量 资源 进行读写 产生的并发问题(脏读 幻影读)
1、通过参数绑定的方式。
线程安全因为参数绑定的变量是方法级别的 每次请求都在内存开辟独立的内存空间。
2、通过@AutoWired自动注入的方式。
@Autowired
private HttpSession session;
是共享变量(单例类级别的变量) 因为SpringMVC是通过ThreadLocal存储的 servlet-api 所以通过自动注入进来的servlet是线程安全的。
3、通过@ModelAttribute 及参数绑定。
不是线程安全的 因为他是共享变量
转发及重定向
转发: 地址栏不变化 请求次数1次 请求中数据不会丢失 根目录 包含了项目的访问地址
forward 转发
redirect 重定向