- request
request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。
上边这段文字是从百度下取下来的对request作用域解释;
我对这个理解是,数据封装到request后,前端拿到对应的数据后,这个request作用域中的数据就会失效;
存入request域中:
@Controller
@RequestMapping("/add")
public String add(ModelMap modelMap){
modelMap.put("key","你好");
return "add";
}
前端拿到数据:
<div>
<input th:text="${key}">thymeleaf拿到数据</input>
</div>
request作用域的范围就结束了;
还是这个前端做请求,那么应该不会把之前的request域中的数据带给后台,但是后台收到了????
要了解这个问题的本质,我想我们应该需要了解Java web的体系。
在Java web中有两个角色:一个是
Servlet
(一种规范、接口),另一个则是Servlet容器
(比如tomcat)。先说
Servlet
,在java web实际上对应HttpServlet
(Servlet的子类)。里面有以下几种方法:doGet(HttpServletRequest,HttpServletResponse)
doPost(HttpServletRequest,HttpServletResponse)
你题目中提到的request就是
HttpServletRequest
,他是由Servlet容器
创建并传递到Servlet
中的。而HttpServletResponse
才是返回给浏览器的数据,可以是HTML格式,也可以是JSON格式。一个
Servlet
拦截特定的url(http请求路径), 然后再根据你请求方法(GET 或 POST)调用doGet
或doPost
方法。再来看你所用的Spring MVC框架,它就是建立在
Servlet
上的,它的一个组件DispatcherServlet
(HttpServlet子类)拦截了你项目的所有请求,然后交由Spring MVC的Controller处理。了解了
Servlet
,我们再看请求HttpServletRequest
是怎样创建的。Servlet
是由Servlet
容器加载并创建的.在你启动Spring MVC项目后,
DispatcherServlet
也被加载到Servlet
容器中。当浏览器发送一个HTTP请求,类似以下的数据。
Servlet
容器收到请求,首先会把以上HTTP文本信息解析并生成HttpServletReuest
对象,同时构建HttpServletResponse
对象供Servlet
设置响应信息。然后交于URL匹配的Servlet
执行业务逻辑。当浏览器收到响应后,也就意味着请求结束,
HttpServletReuest
和HttpServletResponse
对象同步被销毁。以上,希望可以帮助到你。