首页 > 其他分享 >SpringMVC模型数据解析

SpringMVC模型数据解析

时间:2023-02-12 14:22:49浏览次数:29  
标签:SpringMVC 模型 ModelAndView User user new modelAndView 解析 view

SpringMVC模型数据解析

​ jsp四大作用域对应的内置对象:pageContext,request,session,application.

模型数据的绑定是由ViewResolver来完成的,实际开发过程中,我们需要先添加模型数据,再交给·ViewResolver来绑定。

​ Spring MVC提供了以下几种方式添加模型数据:

  • Map
  • Model
  • ModelAndView
  • @SessionAttribute
  • @ModelAttribute

map的使用

控制类

package com.soutwind.controller;

import com.soutwind.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Map;

@Controller
@RequestMapping("/view")
public class ViewHandler {
    @RequestMapping("/map")
    public String map(Map<String,User> map){//map中key值类型是string,value值类型是User
        User user = new User();
        user.setId(1L);
        user.setName("张三");
        //通过map把user对象传给view视图,并且把user放到request里面。map的key作为request的key,map的
        //map的value作为request的value。页面的request里面会存在一个KEY值为user,value值为user对象的数据。
        map.put("user",user);
        //如果只是单纯的返回视图没啥意义,需要把user对象的内容传给视图。
        return "view";
    }
}

jsp:

<%--
  Created by IntelliJ IDEA.
  User: DELL
  Date: 2023/2/12
  Time: 10:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--表示不会忽略el表达式,去解析el表达式--%>
<%@ page isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--el表达式输出user对象--%>
        ${requestScope.user}
</body>
</html>

2.model

@RequestMapping("/model")
public  String model(Model model){
   //导入包 import org.springframework.ui.Model;ui就是用户接口。
    User user = new User();
    user.setId(1L);
    user.setName("李四");
    //model原理同map。
    //业务方法里会向model里面存一个对象,来到视图,他会把model里面的值
    //以键值对的形式存储到request里面,再通过jsp的标签取出。
    model.addAttribute("user",user);
    return "view";
}

3.modelAndView

 @RequestMapping("/modelAndView")
    public ModelAndView modelAndView(){
        User user = new User();
        user.setId(1L);
        user.setName("王五");
        //modelandview相当于model和view的整合
//        model.addAttribute("user",user);
//        return "view";把这两行代码的操作整合到ModelandView里面。
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("user",user);
        modelAndView.setViewName("view");
        return modelAndView;
    }
    @RequestMapping("/modelAndView2")
    public ModelAndView modelAndView2(){
        User user = new User();
        user.setId(1L);
        user.setName("赵六");
        //modelandview相当于model和view的整合
//        model.addAttribute("user",user);
//        return "view";把这两行代码的操作整合到ModelandView里面。
        ModelAndView modelAndView2= new ModelAndView();
        modelAndView2.addObject("user",user);
        //View是一个接口,请求地址是物理地址
        View view = new InternalResourceView("/view.jsp");
        //modelandView应用非常灵活。
        modelAndView2.setView(view);//这里传过去的是一个view对象。
        return modelAndView2;
    }
    //modelandView的优化。
    @RequestMapping("/modelAndView3")
    public ModelAndView modelAndView3(){
        User user = new User();
        user.setId(1L);
        user.setName("周七");
        //modelandview相当于model和view的整合
//        model.addAttribute("user",user);
//        return "view";把这两行代码的操作整合到ModelandView里面。
        ModelAndView modelAndView = new ModelAndView("view");
        modelAndView.addObject("user",user);
//        modelAndView.setViewName("view");在创建modelAndView里面就可以给View的名字它赋值。
        return modelAndView;
    }
    @RequestMapping("/modelAndView4")
    public ModelAndView modelAndView4(){
        User user = new User();
        user.setId(1L);
        user.setName("吕八");
        //modelandview相当于model和view的整合
//        model.addAttribute("user",user);
//        return "view";把这两行代码的操作整合到ModelandView里面。
        View view = new InternalResourceView("/view.jsp");
        ModelAndView modelAndView= new ModelAndView("view");
        modelAndView.addObject("user",user);
        //View是一个接口,请求地址是物理地址

        //modelandView应用非常灵活。
//        modelAndView.setView(view);//这里传过去的是一个view对象。
        return modelAndView;
    }
    @RequestMapping("/modelAndView5")
    public ModelAndView modelAndView5(){
        User user = new User();
        user.setId(1L);
        user.setName("冯九");
       Map<String ,User> map = new HashMap<>();
       map.put("user",user);
//        View view = new InternalResourceView("/view.jsp");
        ModelAndView modelAndView= new ModelAndView("view",map);
        modelAndView.addObject("user",user);
        //View是一个接口,请求地址是物理地址
//        modelAndView.setView(view);//这里传过去的是一个view对象。
        return modelAndView;
    }
    @RequestMapping("/modelAndView6")
    public ModelAndView modelAndView6(){
        User user = new User();
        user.setId(1L);
        user.setName("陈十");
        Map<String ,User> map = new HashMap<>();
        map.put("user",user);
        View view = new InternalResourceView("/view.jsp");
        ModelAndView modelAndView= new ModelAndView("view",map);
//        modelAndView.addObject("user",user);
        //View是一个接口,请求地址是物理地址
//        modelAndView.setView(view);//这里传过去的是一个view对象。
        return modelAndView;
    }
    @RequestMapping("/modelAndView7")
    public ModelAndView modelAndView7(){
        User user = new User();
        user.setId(1L);
        user.setName("哈十一");

        ModelAndView modelAndView= new ModelAndView("view","user",user);
//        modelAndView.addObject("user",user);
        //View是一个接口,请求地址是物理地址
//        modelAndView.setView(view);//这里传过去的是一个view对象。
        return modelAndView;
    }

上述方法的添加是先放到model里面,再添加到request里面。也可以直接向request里面添加。

4.也可以直接向request里面添加。

@RequestMapping("/request")
   public String request(HttpServletRequest request){
       User user =new User();
       user.setId(1l);
       user.setName("张三");
       request.setAttribute("user",user);
       return "view";
}

5.@ModelAttribute

  • 定义一个方法,该方法专门用来返回要填充到模型数据中的对象。
  • 业务方中无需再处理模型数据,只需要返回视图即可。
//在业务方法中,@ModelAttribute修饰的方法要先于@RequestMapping修饰的方法执行。
@ModelAttribute
public User getUser(){
    User user = new User();
    user.setId(1L);
    user.setName("张十三");
    return  user;
}
 @RequestMapping("/modelAttribute")
    public  String modelAttribute(){
        return "view";
    }

标签:SpringMVC,模型,ModelAndView,User,user,new,modelAndView,解析,view
From: https://www.cnblogs.com/zhangtiedangg/p/17113762.html

相关文章

  • (数据库系统概论|王珊)第一章绪论-第二节:数据模型
    pdf下载:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解目录一:什么是数据模型二:两类数据模型(1)概念模......
  • C语言学习:解析时间
     1#define_XOPEN_SOURCE23#include<io_utils.h>4#include<time_utils.h>5#include<time.h>67intmain(){8long_time_tcurrent_time_in_......
  • Laravel — P55:路由中的软删除模型
    完成这样的教程系列并不像看起来那么简单。您想按特定顺序涵盖主题,但每次谈到一个新主题时,您都会意识到您需要涵盖其他内容才能做到这一点。例如,在学习了Laravel中一些比......
  • 基于Java+Springmvc vue+element员工信息管理系统详细设计
    基于Java+Springmvc+vue+element员工信息管理系统详细设计前言介绍:系统管理也都将通过计算机进行整体智能化操作,对于企业员工考勤管理系统所牵扯的管理及数据保存都是非常......
  • 平台总线模型
    平台总线模型概念注册platform设备注册platform驱动平台总线probe函数编写平台总线模型总结......
  • go格式化输入没有解析到正确的类型,有bug
    packagemainimport( "fmt" "math/rand" "time")funcinit(){ rand.Seed(time.Now().UnixNano())}funcmain(){ target:=rand.Intn(101) count:=0 c......
  • maven的生命周期和maven概念模型图
    maven的生命周期  比如运行mvnclean,这里的clean就是清理生命周期的一个阶段。清理生命周期一共包含了三个阶段:pre-clean(预清理):执行一些需要在clean阶段之......
  • SpringMVC数据绑定2
    SpringMVC数据绑定使用JavaBean绑定参数SpringMVC会根据请求参数名和JavaBean属性名进行自动匹配,自动为对象填充属性值,同时支持级联属性packagecom.soutwind.entity......
  • 使用JS的DOM(文档对象模型)获取前端循环的参数
    使用JS的DOM(文档对象模型)获取前端循环的参数使用Go语言渲染html,但是想让网页动起来,显示一些弹窗还是比较麻烦的,于是乎,想到使用js获取页面的数据进行显示,但是js无法加载go......
  • 《TencentNCNN系列》 之工作原理简要解析(以LeNet-5为例)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。前置说明  本文作为本人csdnblog的主站的备份。(BlogID......