springmvc和servlet的区别是什么?Springmvc如何进行参数传递?

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工具网。

推荐阅读:

json格式如何存入mysql?存入方法介绍

java线程怎么做标记?java线程如何同步?

springboot启动流程是什么?springboot有哪些优点?