千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 千锋Java教程之SpringMVC的请求和响应

千锋Java教程之SpringMVC的请求和响应

来源:千锋教育
发布人:小锋
时间: 2019-08-27 09:55:00 1566870900

  前言

  前面我们学习了SpringMVC的基本配置,接下来一个非常重要的知识点是如何接受用户的请求以及如何将数据发送给用户。

  获得请求参数

  获得页面参数的几种方式

  1)通过参数名获得

  给控制器的方法设置参数名和表单name相同

  2)通过@RequestParam("参数名")注解设置参数

  @RequestParam("表单元素的name") 参数类型 参数名

  3)自动装箱,创建属性名和表单名称一样的类

  把类作为方法的参数

  通过参数名获得

  页面表单:

  <form action=”/user/login” method=”post”>

  <input type=”text” name=”username”><br>

  <input type=”password” name=”password”><br>

  <input type=”submit” value=”登录”><br>

  </form>

  控制器:

  @Controller

  @RequestMapping(“/user”)

  public class UserController{

  @RequestMapping(“/login”)

  public String login(String username,String password){

  System.out.println(“username : ” + username);

  System.out.println(“password: ” + password);

  return “index”;

  }

  }

  注意:这里login方法的参数名必须和表单元素的name属性一致

  通过@RequestParam("参数名")注解设置参数

  控制器:

  @Controller

  @RequestMapping(“/user”)

  public class UserController{

  @RequestMapping(“/login”)

  public String login(@RequestParam(“username”)String name,

  @RequestParam(“password”)String pwd){

  System.out.println(“username : ” + name);

  System.out.println(“password: ” + pwd);

  return “index”;

  }

  }

  注意:这里login方法的参数名必须和表单元素的name属性不需要一致,只需要在参数前面的注解@RequestParam中设置表单元素的名称就可以了。

  自动装箱,创建属性名和表单名称一样的类

  定义User类:

  public class User{

  private String username;

  private String password;

  省略get、set方法

  }

  控制器:

  @Controller

  @RequestMapping(“/user”)

  public class UserController{

  @RequestMapping(“/login”)

  public String login(User user){

  System.out.println(“username : ” + user.getName());

  System.out.println(“password: ” + user.getPassword());

  return “index”;

  }

  }

  注意:login方法的参数使用了自定义类,该类的属性名称必须和表单元素名称一致,必须提供get和set方法。

  将数据返回给页面

  前面我们了解了如何从页面获取数据,下面我们将学习如何将数据返回给页面。

  1)通过Map集合

  在方法的参数中,添加Map集合,把数据存入集合

  2)通过Model模型

  在方法的参数中,添加Model参数,使用Model的addAttribute("名称",值) 添加数据

  3)通过请求对象、Session对象

  在方法中添加HttpServletRequest参数或HttpSession参数

  通过Map集合

  在index.jsp页面中使用EL表达式来绑定数据:

  <h2>你好,欢迎 ${username}</h2>

  控制器:

  @Controller

  @RequestMapping(“/user”)

  public class UserController{

  @RequestMapping(“/login”)

  public String login(@RequestParam(“username”)String name,

  @RequestParam(“password”)String pwd,Map<String,String> map){

  System.out.println(“username : ” + name);

  System.out.println(“password: ” + pwd);

  map.put(“username”,name);

  return “index”;

  }

  }

  注意:Map集合可以作为login方法的参数放在任意位置,在集合中存入的键username将是EL表达式${username}对应的名称,集合中存入的值会在页面中显示出来。

  通过Model模型

  @Controller

  @RequestMapping(“/user”)

  public class UserController{

  @RequestMapping(“/login”)

  public String login(@RequestParam(“username”)String name,

  @RequestParam(“password”)String pwd,Model model){

  System.out.println(“username : ” + name);

  System.out.println(“password: ” + pwd);

  model.addAttribute(“username”,name);

  return “index”;

  }

  }

  注意:这里使用的是Mode对象,此对象的作用类似于前面的Map集合,不过它是专门用于保存数据,然后发送给页面的,实际开发中用得更多。

  通过请求对象、Session对象

  控制器:

  @Controller

  @RequestMapping(“/user”)

  public class UserController{

  @RequestMapping(“/login”)

  public String login(@RequestParam(“username”)String name,

  @RequestParam(“password”)String pwd,HttpServletRequest req){

  System.out.println(“username : ” + name);

  System.out.println(“password: ” + pwd);

  req.setAttribute(“username”,name);

  return “index”;

  }

  }

  注意:这里使用了JavaWeb中常用的HttpServletRequest请求对象,用于将数据传递给页面,也可以使用HttpSession对象,HttpSession中的对象在用户的所有组件中共享,对象保存在内存的时间比较长,所以尽量使用HttpServletRequest,以更加高效的使用内存。

  总结

  本章我们学习了控制器从页面获得数据的几种方式,以及将数据从控制器返回给页面的几种方式。通过本章的学习我们掌握了SpringMVC操作数据的基本方法,结合数据库我们将能实现一个基本的JavaWeb项目。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT