Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,所以很多人在使用springmvc和servlet的时候,不清楚它们之间有什么区别?下面我们就给大家讲解一下。
Servlet:单例,不安全。性能最好,处理Http请求的标准,只处理doPost(),doGet()方法。
SpringMVC:单例,不安全。开发效率高(好多共性的东西都封装好了,是对Servlet的封装,核心的DispatcherServlet最终继承自HttpServlet)。DispatcherServlet又叫前端控制器,能过滤处理所有的请求方法。DispatcherServlet还能查询HandlerMapping查找到相应的handler,进而调用相应的service和Dao。
这两者的关系,就如同MyBatis和JDBC,一个性能好,一个开发效率高,是对另一个的封装。
Springmvc如何进行参数传递?
1.通过实体Bean接收请求参数
实体 Bean 接收请求参数适用于 get 和 post 提交请求方式。需要注意,Bean 的属性名称必须与请求参数名称相同。示例代码如下。
@RequestMapping("/login") public String login(User user, Model model) { if ("bianchengbang".equals(user.getName()) && "123456".equals(user.getPwd())) { model.addAttribute("message", "登录成功"); return "main"; // 登录成功,跳转到 main.jsp } else { model.addAttribute("message", "用户名或密码错误"); return "login"; } }
2.通过HttpServletRequest接收请求参数
通过 HttpServletRequest 接收请求参数适用于 get 和 post 提交请求方式,示例代码如下:
@RequestMapping("/login") public String login(HttpServletRequest request, Model model) { String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); if ("bianchengbang".equals(name) && "123456".equals(pwd)) { model.addAttribute("message", "登录成功"); return "main"; // 登录成功,跳转到 main.jsp } else { model.addAttribute("message", "用户名或密码错误"); return "login"; } }
3.通过@PathVariable接收URL中的请求参数
通过 @PathVariable 获取 URL 中的参数,示例代码如下。
@RequestMapping("/login/{name}/{pwd}") public String login(@PathVariable String name, @PathVariable String pwd, Model model) { if ("bianchengbang".equals(name) && "123456".equals(pwd)) { model.addAttribute("message", "登录成功"); return "main"; // 登录成功,跳转到 main.jsp } else { model.addAttribute("message", "用户名或密码错误"); return "login"; } }
4.通过@ModelAttribute接收请求参数
@ModelAttribute 注解用于将多个请求参数封装到一个实体对象中,从而简化数据绑定流程,而且自动暴露为模型数据,在视图页面展示时使用。
而“通过实体 Bean 接收请求参数”中只是将多个请求参数封装到一个实体对象,并不能暴露为模型数据(需要使用 model.addAttribute 语句才能暴露为模型数据,数据绑定与模型数据展示后面教程中会讲解)。
通过 @ModelAttribute 注解接收请求参数适用于 get 和 post 提交请求方式,示例代码如下。
@RequestMapping("/login") public String login(@ModelAttribute("user") User user, Model model) { if ("bianchengbang".equals(name) && "123456".equals(pwd)) { model.addAttribute("message", "登录成功"); return "main"; // 登录成功,跳转到 main.jsp } else { model.addAttribute("message", "用户名或密码错误"); return "login"; } }
Spring MVC 接收请求参数的方式有很多种,比如文中分享的通过HttpServletRequest、实体Bean等,我们只要选择适合自己的方法去传递参数就好了!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: