Springmvc如何实现向前台传递数据

1) 在springmvc方法的形参中定义Map,Model,ModelMap,并在方法中通过这三个对象进行值的传递;

①其中Map和ModelMap使用方式是一致的;

@RequestMapping("/detail")
  public String detail(Integer id,
             //ModelMap modelMap
             Map modelMap
               ){
    HashMap<String,String> conditions=new HashMap<>();
    conditions.put("sal","88888888");
    conditions.put("age","35");
    //todo 去数据库查询用户信息
    System.out.println("查询id为"+id+"的用户记录");
    User user=new User(id,"詹姆斯",18,"男","美国克利夫兰",
              new Role("小前锋",23),
              conditions,
              Arrays.asList("打篮球","打游戏"));
    //通过modelMap或map向前台传值==>request.setAttribute(key,value)
    modelMap.put("user",user);
    return "detail.jsp";
  }

②Model只是通过addAttribute进行传值;

@RequestMapping("/detail")
  public String detail(Integer id,
             Model model){
    HashMap<String,String> conditions=new HashMap<>();
    conditions.put("sal","88888888");
    conditions.put("age","35");
    //todo 去数据库查询用户信息
    System.out.println("查询id为"+id+"的用户记录");
    User user=new User(id,"詹姆斯",18,"男","美国克利夫兰",
              new Role("小前锋",23),
              conditions,
              Arrays.asList("打篮球","打游戏"));
    //通过Model对象传递数据
    model.addAttribute("user",user);
    return "detail.jsp";
  }

2) 定义方法的返回值类型为ModelAndView,在方法中创建ModelAndView 并指定跳转的页面和传递的数据,最后返回ModelAndView对象;

3) 通过注解的方式 @ModelAttribute;

4) 在方法参数中定义Request或session对象,通过其对应的API;

下面2),3),4)的情况都在下面的代码内;

//演示通过ModelAndView向页面传值
//@ModelAttribute:注解将对象传递到request域中 1)加在方法参数上,将对象传递到request域中,或向request域中取值
//                     2)加在方法上,将方法的返回值放入request域中
  @RequestMapping("/detail2")
  public ModelAndView detail2(Integer id, @ModelAttribute("username") String username,
                HttpServletRequest request,
                HttpSession session,
                HttpServletResponse response
  ){

    request.setAttribute("requestTest","请求域数据");
    session.setAttribute("sessionTest","session域数据");

    HashMap<String,String> conditions=new HashMap<>();
    conditions.put("sal","88888888");
    conditions.put("age","35");
    //todo 去数据库查询用户信息
    System.out.println("查询id为"+id+"的用户记录");
    User user=new User(id,"詹姆斯",18,"男","美国克利夫兰",
        new Role("小前锋",23),
        conditions,
        Arrays.asList("打篮球","打游戏"));
    //通过ModelAndView设置跳转的页面和值
    ModelAndView modelAndView=new ModelAndView();
    //向页面传值
    modelAndView.addObject("user",user);
    //指定跳转的页面 以/开头,则直接到资源根目录下找(即webapp下)
    //       不以/开头,跟在RequestMapping最后一个/后面
    modelAndView.setViewName("detail.jsp");
    return modelAndView;
  }
  //将方法返回值放入request域中
  @ModelAttribute(name = "modelAttributeTest")
  public String test(){
    return "我是@ModelAttribute的测试";
  }

detail.jsp中代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
  <title>用户详情页面</title>
</head>
<body>
<h1>用户详细信息</h1>
<table>
  <tr>
    <td>用户名</td>
    <td>${user.name}</td>
    <td>年龄</td>
    <td>${user.age}</td>
  </tr>
  <tr>
    <td>性别</td>
    <td>${user.sex}</td>
    <td>地址</td>
    <td>${user.addr}</td>
  </tr>
  <tr>
    <td>角色ID</td>
    <td>${user.role.id}</td>
    <td>角色名</td>
    <td>${user.role.name}</td>
  </tr>
  <tr>
    <td>条件1</td>
    <td>${user.conditions.sal}</td>
    <td>条件2</td>
    <td>${user.conditions.age}</td>
  </tr>
  <tr>
    <td>爱好</td>
    <td>${user.hobbies}</td>
  </tr>
</table>
获取@ModelAttribute设置的值:${username}<br/>
获取@ModelAttribute设置的值2:${modelAttributeTest}<br/>
获取request设置的值3:${requestTest}<br/>
获取session设置的值4:${sessionTest}
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • springMVC实现前台带进度条文件上传的示例代码

    项目框架采用spring+hibernate+springMVC如果上传文件不想使用flash那么你可以采用HTML5;截图前段模块是bootstarp框架;不废话直接来代码;spring-mvc配置文件;效果截图如下: 详细实现如下: 1.mvc-config.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/s

  • Angular.js前台传list数组由后台spring MVC接收数组示例代码

    前言 本文主要给大家介绍了关于Angular.js前台传list数组由后台spring MVC接收数组的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍吧. 在开发中有时候需要在前台自定义对象,然后把对象封装在list中,在传送到后台,这样的思想也比较合理,直接来看示例代码: 1. 前台代码 $scope.saveScore = function () { $scope.userScoreList = new Array();//自定义数组 angular.forEach (

  • SpringMVC接收前台传递过来的值的实例

    之前控制器方法获得前台传来的值有三种方式: 1.通过HttpServletRequest: @RequestMapping(value="/index1") public String helloaction1(HttpServletRequest request){ System.out.println(request.getParameter("nnn")); //获得前台name为nnn的元素的值 return "index"; } 2.通

  • 浅谈SpringMVC jsp前台获取参数的方式 EL表达式

    JAVA: request.setAttribute("msg", "1234"); session.setAttribute("msg2", "1234"); JSP: ${requestScope.msg} ${sessionScope.msg2} JAVA: ModelAndView ModelMap Model里添加的参数 JSP: 直接用${参数名} JAVA: 前台表单里的信息,或者是直接在url后面以?name=

  • springmvc前台向后台传值几种方式总结(从简单到复杂)

    1. 基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int count) { } 表单代码: <form action="saysth.do" method="post"> <input name="count" value="10" type="text"

  • Springmvc获取前台请求数据过程解析

    1)基本数据类型或String,在方法参数中定义参数,参数名与请求传递数据名一致即可自动封装: // RequestMapping:指定方法对应的请求地址 //return:页面地址,表示方法执行完成之后跳转到对应的页面(转发) //springmvc:接收请求参数,直接在方法的参数中定义名称与传递参数名一致的形参即可 //name:会自动接收请求传递的name值 @RequestMapping("/hello") public String hello(String name,Int

  • springMVC前台传数组类型,后台用list类型接收实例代码

    springMVC后台处理数组对象. list类型的参数,接收前台的数组值,实验了一下,结果还真可以. 不用绑定到对象里面. 当然我这个是前台传递了个包含的是string的数组到后台,然后,后台用list来接收. 具体如下: 前台代码: //发送请求到后台,带数组形式的数据. function testList() { var data = getTreeViewCheckedData(); $.ajax({ url: APP_NAME + "xxxx/testList", data:

  • 解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题

    页面报错: 后台错误: Field error in object 'user' on field 'birthday': rejected value [2013-06-24]; codes [typeMismatch.user.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessag

  • Springmvc如何实现向前台传递数据

    1) 在springmvc方法的形参中定义Map,Model,ModelMap,并在方法中通过这三个对象进行值的传递: ①其中Map和ModelMap使用方式是一致的: @RequestMapping("/detail") public String detail(Integer id, //ModelMap modelMap Map modelMap ){ HashMap<String,String> conditions=new HashMap<>(); c

  • SpringMVC实现前端后台交互传递数据

    本人对springmvc前端交互不太懂,搜索了很多关于springmvc前端交互介绍,下面我来记录一下,有需要了解的朋友可参考.希望此文章对各位有所帮助. Controller.java代码: @Controller public class DataController { //一.接收和通过ModelMap传出参数,不需要视图解析器,测试时加了解析器,顾返回值不需后缀 //普通参数 @RequestMapping("/data1") public String data1(@Req

  • ASP.NET中MVC从后台控制器传递数据到前台视图的方式

    本文实例讲述了ASP.NET中MVC从后台控制器传递数据到前台视图的方式.分享给大家供大家参考.具体分析如下: 数据存储模型Model: 复制代码 代码如下: public class CalendarEvent { public string id { get; set; } public DateTime start { get; set; } public DateTime end { get; set; } public string backgroundColor { get; set

  • 如何处理后台向前台传递的json数据

    这篇文章主要介绍了如何处理后台向前台传递的json数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在pom文件中添加下面三种依赖jar包 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.8<

  • SpringMVC 跨重定向请求传递数据的方法实现

    执行完post请求后,通常来讲一个最佳实践就是执行重定向.重定向将丢弃原始请求数据,原始请求中的模型数据和请求都会消亡.可以有效避免用户浏览器刷新或者后退等操作,直接间接地重复执行已经完成的post请求. 在控制方法中返回的视图名称中,在String前使用"redirect:"前缀,那么这个String就不是来查找视图的,而是浏览器进行重定向的路径,相当于重新发出请求. 重定向通常相当于从一个controller到另一个controller. (1)使用URL模板以路径变量和查询参数的

  • vue组件Prop传递数据的实现示例

    组件实例的作用域是孤立的.这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,我们需要通过子组件的props选项. prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来.这是为了防止子组件无意修改了父组件的状态. 每次父组件更新时,子组件的所有 prop 都会更新为最新值.这意味着你不应该在子组件内部改变 prop. 1.Prop静态传递数据 <!DOCTYPE html> <html> <head lang=&q

  • 探讨.get .post .ajax ztree 还有后台servlet传递数据的相关知识

    servlet给前台传递data串 用的方法是 PrintWriter out = response.getWriter(); // response.sendRedirect("test.jsp"); String s = "[{'id':'1', 'pId':'0', 'name':'test1'},{'id':'11', 'pId':'1', 'name':'test11'}, {'id':'12', 'pId':'1', 'name':'test12'}, {'id'

  • SpringMVC接收java.util.Date类型数据的2种方式小结

    SpringMVC接收java.util.Date类型数据 在Controller中如下定义方法 public PassQueryRequest trade(@ModelAttribute PassQueryRequest tradeRequest, @RequestParam(value="startDate", required=true)Date startDate, @RequestParam(value="endDate", required=true)D

随机推荐