HttpServletRequest:HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
Model:事实上model数据,最终spring也是写到HttpServletRequest属性中,只是用model更符合mvc设计,减少各层间耦合。
1.request.getSession().setAttribute("test", "张三"); //先获取session,然后把值放到session里面(session不关,在哪都能取到)
2.request.setAttribute("test", "张三"); //把值放到request里面(只能在同一个request请求里取到值)
3.map.addAttribute("test", "张三"); //把值放到ModelMap里面
4.model.addAttribute("test", "张三"); //把值放到Model里面
与上面对应的取值方式是:
1.request.getSession().getAttribute("test")
2.request.getAttribute("test")
3.${test}
4.${test}
需要注意${test}这个取值方式对以上四种都适用,但取值的优先级不同,优先取Model和ModelMap的,Model和ModelMap是同一个东西,谁最后赋值的就取谁的,然后是request,最后是从session中获取
有几点需要说明与注意:
1.关于request请求,生命周期为 :发送连接请求——收到回复 至此request请求就失效了,放到里面的值也就取不到了;
2.而session不同,只要session会话不结束,session里面的值会一直存在(在不同请求页面都要用到的值我们一般都放到session里)
3.但是,session里的值会被替换,例如:
request.getSession().setAttribute("test", "张三");
request.getSession().setAttribute("test", "李四");
这时session中test属性对应的值就换成了"李四"
4.上面对应的4种,都存在被替换
摘自:https://blog.csdn.net/zqd_java/article/details/53912417