开发者

SpringMVC中ModelAndView的使用及说明

开发者 https://www.devze.com 2022-11-29 11:19 出处:网络 作者: 风中的剑
目录ModelAndView作用1.返回到指定的页面2.返回参数到指定页面的request作用于中ModelAndView的3种用法ModelAndView使用实例ModelAndView作用1...
目录
  • ModelAndView 作用
    • 1.返回到指定的页面
    • 2.返回参数到指定页面的request作用于中
  • ModelAndView 的3种用法
    • ModelAndView使用实例

      ModelAndView 作用

      1.返回到指定的页面

      ModelAndView构造方法可以指定返回的页面名称

      例:

      return new ModelAndView("redirect:/m07.JSP");

      通过setViewName()方法跳转到指定的页面

      例:

      mav.setViewName("hello");

      2.返回参数到指定页面的request作用于中

      使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字,参数会返回到新页面的request作用域中

      ModelAndView 的3种用法

      1.ModelAndView的第一种用法,先创建ModelAndView对象,再通过它的方法去设置数据与转发的视图名

      • setViewName(String viewName):‎设置此 ModelAndView 的视图名称, 由 DispatcherServlet 通过 ViewResolver 解析‎
      • addObject(String attributeName, Object attributeValue):通过key/value的方式绑定数据
      package com.gxa.spmvc.controller;
       
      import Java.io.IOException;
      import java.io.PrintWriter;
       
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
       
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.PathVariable;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestParam;
      import org.springframework.web.bind.annotation.ResponseBody;
      import org.springframework.web.servlet.ModelAndView;
       
      import com.gxa.spmvc.entity.Student;
       
      /**
       * SpandroidringMVC的控制器(业务控制器)
       * 定义的方法就是一个请求处理的方法
       * @author caleb
       *
       */
      @Controller
      @RequestMapping("/user")
      public class TestController {
          
          /**
           * 利用ModelAndView来转发数据,给前端视图
           * @return
           */
          @RequestMapping("/m06")
          public ModelAndView m06() {
              ModelAndView modelAndView = new ModelAndView();
              modelAndView.setViewName("m06");
              modelAndView.addObject("message", "Hello World, Hello Kitty");
              return modelAndView;
          }
      }

      2.ModelAndView的第二种方法,可以直接通过带有参数的构造方法 ModelAndView(String viewName, String attributeName, Object attributeValue) 来返回数据与转发的视图名

      package com.gxa.spmvc.controller;
       
      import java.io.IOException;
      import java.io编程客栈.PrintWriter;
       
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
       
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.PathVariable;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestParam;
      import org.springframework.web.bind.annotation.ResponseBody;
      import org.springframework.web.servlet.ModelAndView;
       
      import com.gxa.spmvc.entity.Student;
       
      /**
       * SpringMVC的控制器(业务控制器)
       * 定义的方法就是一个编程客栈请求处理的方法
       * @author caleb
       *
       *开发者_Python入门/
      @Controller
      @RequestMapping("/user")
      public class TestController {
          
          /**
           * 利用ModelAndView来转发数据,给前端视图
           * @return
           */
          @RequestMapping("/m07")
          public ModelAndView m07() {
              return new ModelAndView("m07", "message", "Hello World");
          }
          
      }

      3.ModelAndView的第三种用法,设置重定向

      package com.gxa.spmvc.controller;
       
      import java.io.IOException;
      import java.io.PrintWriter;
       
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
       
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.PathVariable;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestParam;
      impo编程客栈rt org.springframework.web.bind.annotation.ResponseBody;
      import org.springframework.web.servlet.ModelAndView;
       
      import com.gxa.spmvc.entity.Student;
       
      /**
       * SpringMVC的控制器(业务控制器)
       * 定义的方法就是一个请求处理的方法
       * @author caleb
       *
       */
      @Controller
      @RequestMapping("/user")
      public class TestController {
          
          /**
           * ModelAndView默认转发
           * ModelAndView还是可以设置重定向
           * 1. 重定向另一个控制器
           * 2. 重定向具体的jsp页面
           * @param name
           * @return
           */
          @RequestMapping("/{name}/m07")
          public ModelAndView m07(@PathVariable String name) {
              if (!"admin".equals(name)) {
                  return new ModelAndView("redirect:/m07.jsp");
              }
              return new ModelAndView("m07");
          }
          
      }

      ModelAndView使用实例

      要点:

      • 1.@RequestMapping 注解的使用
      • 2.modelandview 的使用
      • 3.jsp页面request作用域的取值
      • 4.视图解析器配置

      ModelAndView 使用代码

      package com.dgr.controller;
       
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.servlet.ModelAndView;
       
      @RequestMapping("mvc")
      @Controller
      public class TestRequestMMapping {
      	
      	@RequestMapping(value="/testModelAndView")
      	public ModelAndView testModelAndView(){
      		ModelAndView mav = new ModelAndView();
      		mav.setViewName("hello");//跳转新的页面名称
      		mav.addObject("address", "中国广东省广州市");//传入request作用域参数
      		return mav;
      	}
      }

      跳转前jsp页面链接设置

      <a href="mvc/testModelAndView">Test ModelAndView</a>

      跳转后jsp页面以及request作用于取值

      <title>New Page</title>
      </head>
      <body>
      	<h1>ModelAndView 跳转</h1>
      
      	
      	${requestScope.address} 
      
      	
      	${address }  
      	
      </body>

      视图解析器配置

      SpringMVC中ModelAndView的使用及说明

      SpringMVC中ModelAndView的使用及说明

      以上为编程个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号