在 Spring MVC 中 Model
用的还是挺多的,配合一些模版技术传值也很方便,那么 Model 到底将值存到哪去了呢?比如可以看这个方法:org.springframework.web.servlet.view.InternalResourceView#renderMergedOutputModel
:
@Override
protected void renderMergedOutputModel(
Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
// Expose the model object as request attributes.
exposeModelAsRequestAttributes(model, request);
...
...
}
protected void exposeModelAsRequestAttributes(Map<String, Object> model,
HttpServletRequest request) throws Exception {
model.forEach((name, value) -> {
if (value != null) {
request.setAttribute(name, value);
}
else {
request.removeAttribute(name);
}
});
}
可以看到本质就是将 Model
中设置的属性设置到 Request
中去。