我正在使用spring-mvc开发我的Web项目,但我想将参数传递给jsp页面,我发现了一个问题并希望得到答案:
SpringMVC中Model和HttpServletRequest的用法有什么区别 ?HttpServletRequest可以完全替代Model吗?
我发现我可以使用它们来传递参数,并且我发现它们似乎具有相同的效果。现在我想知道何时使用Model和何时使用HttpServletRequest,我感觉Model似乎是一个重复的类,可以吗替换为HttpServletRequest完全
例如,如果我想通过spring-mvc将用户列表和当前日期传递到 jsp 页面,我可以通过三种不同的方式来完成:
@RequestMapping(value = "queryUserPage")
public String queryUserPage(int pageNo,int pageSize,Model model) {
PageBean<UserModel> pageBean = new PageBean<UserModel>();
pageBean.setPageNo(pageNo);
pageBean.setPageSize(pageSize);
pageBean.setResultList(userService.queryUserPage(pageBean));
model.addAttribute("pageBean", pageBean);
model.addAttribute("currentTime",new Date());
return "settings/userManagement.jsp";
}
Run Code Online (Sandbox Code Playgroud)
- 仅使用HttpServletRequest
@RequestMapping(value = "queryUserPage")
public String queryUserPage(int pageNo,int pageSize,HttpServletRequest request) {
PageBean<UserModel> pageBean = new PageBean<UserModel>();
pageBean.setPageNo(pageNo);
pageBean.setPageSize(pageSize);
pageBean.setResultList(userService.queryUserPage(pageBean));
request.setAttribute("pageBean", pageBean);
request.setAttribute("currentTime",new Date());
return "settings/userManagement.jsp";
}
Run Code Online (Sandbox Code Playgroud)
-同时使用HttpServletRequest和Model
@RequestMapping(value = "queryUserPage")
public String queryUserPage(int pageNo,int pageSize,HttpServletRequest request,Model model) {
PageBean<UserModel> pageBean = new PageBean<UserModel>();
pageBean.setPageNo(pageNo);
pageBean.setPageSize(pageSize);
pageBean.setResultList(userService.queryUserPage(pageBean));
request.setAttribute("pageBean", pageBean);
model.addAttribute("currentTime",new Date());
return "settings/userManagement.jsp";
}
Run Code Online (Sandbox Code Playgroud)
这三种方法都可以,但是我不知道使用Model相对于使用HttpServletRequest 的优势。有人能告诉我何时使用Model以及何时使用HttpServletRequest吗? Model的优势是什么?可以用HttpServletRequest代替吗代替吗?
提前致谢!
选择权留给开发人员。但您需要记住几件事。
如果您使用HttpServletRequest
,那么您必须显式映射变量并从前端获取变量(request.getAttribute
)。
没有更好的事情,这只是您的愿望。因为两者都是请求范围。
但如果你使用的话,Model
你有几个优点。
@ModelAttribute
)查找。@Valid
。像这样,您还可以找到询问黑白@RequestParam
或@ModelAttribute
和的差异HttpServletRequest
。
有时Model
也会经历HttpServletRequest
。
唯一的事情是HttpServletRequest
由 处理ServletContainer
。Model
经过DispatcherServlet stack
。
最后交给开发人员,他/她可以根据他们的需要。
归档时间: |
|
查看次数: |
1939 次 |
最近记录: |