首页 > 其他分享 >SpringMVC 中ModelAndView用法

SpringMVC 中ModelAndView用法

时间:2023-12-10 12:04:56浏览次数:30  
标签:web RequestMapping SpringMVC org springframework 用法 import ModelAndView

SpringMVC 中ModelAndView用法ModelAndView作用1.返回到指定的页面ModelAndView构造方法可以指定返回的页面名称   例:returnnewModelAndView("redirect:/m07.jsp");通过setViewName()方法跳转到指定的页面   例:mav.setViewName("hello"); 2.返回参数到指定页面的request作用于中使…

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;

/**
 * SpringMVC的控制器(业务控制器)
 * 定义的方法就是一个请求处理的方法
 * @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
 *
 */
@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;
import 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>
	
	<br>
	
	${requestScope.address}   
	
	<br>
	
	${address }    

	<br>	
	
</body>

标签:web,RequestMapping,SpringMVC,org,springframework,用法,import,ModelAndView
From: https://blog.51cto.com/u_15668812/8758706

相关文章

  • 这才是〖@Validated与@Valid〗的区别和正确用法
    在Spring框架中,参数验证是保障数据完整性和合法性的关键步骤。@Valid 和 @Validated 是两个常用的验证注解,本文将深入分析它们的使用、原理、对比以及通过示例展示它们在实际项目中的应用。一、 @Valid和@Validated简介1.1@Valid@Valid 注解属于JavaValidationAPI的......
  • Vue路由params、query传参用法,以及form表单回车自动提交问题
    一、路由参数用法1.1query参数第一种方式传参:跳转路由并携带query参数,注意to的字符串写法将id和title拼接字符串形成地址<router-link:to="`/home/message/detail?id=${item.id}&title=${item.title}`">{{item.title}}</router-link>&nbsp;&nbsp;第二种方式传参:to......
  • 在Python中,​​type()​​函数有两种用法
    在Python中,type()函数有两种用法¹²³⁴⁵:查看数据类型:当type()函数只有一个参数时,它会返回该参数的数据类型¹²³⁴⁵。例如:x=123print(type(x))#输出:<class'int'>在这个例子中,type(x)返回了x的数据类型,即<class'int'>,表示x是一个整数¹²³⁴⁵。动态创建类:当type()函......
  • ModelAndViewContainer、ModelMap、Model、ModelAndView详细介绍【享学Spring MVC】
    前言写这篇文章非我本意,因为我觉得对如题的这个几个类的了解还是比较基础且简单的一块内容,直到有超过两个同学问过我一些问题的时候:通过聊天发现小伙伴都听说过这几个类,但对于他们的使用、功能定位是傻傻分不清楚的(因为名字上都有很多的相似之处)。那么书写本文就是当作一篇科普类......
  • C# static的用法详解
    https://www.cnblogs.com/baxianhua/p/9082820.html 有的东西你天天在用,但未必就代表你真正了解它,正如我之前所了解的static。一、静态类静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用new关键字创建静态类类型的变量。在声明一个类时使用static关......
  • java 正则表达式 用法
    在一个复杂的字符串中,使用正则表达式来取其中某个值importjava.util.regex.*;//正则表达式引用//复杂的字符串Stringinput="{\"pbxToken\":\"1ja930jsdlij912h94hk5l35poeweer\"}"+"{\"LS_CallStatus_Event_Type\":\"\",\"callId......
  • Mockito When/Then常见用法
    MockitoWhen/Then常见用法该系列文章翻译自https://www.baeldung.com/mockito-series接下来我们将以MyList类为例进行介绍publicclassMyListextendsAbstractList<String>{@OverridepublicStringget(finalintindex){returnnull;}@Over......
  • 转:ROW_NUMBER() OVER函数的基本用法
    ROW_NUMBER()OVER函数的基本用法 分组后排序    在oracle中分组倒叙排序,取出每一组的第一个值,如何通过ROW_NUMBER()OVER实现 ChatGPTChatGPT在Oracle中,你可以使用ROW_NUMBER()窗口函数结合PARTITIONBY和ORDERBY子句来实现......
  • MyBatis的10种高级用法
    目录用来循环容器的标签forEach,查看例子concat模糊查询choose(when,otherwise)标签selectKey标签if标签if+where的条件判断if+set实现修改语句if+trim代替where/set标签foreach用来循环容器的标签forEachforeach元素的属性主要有item,index,collection,open,sep......
  • CMC-ORACLE-函數row_number() over(partition by )函数用法
    row_number()over(partitionby)函数用法row_number()over(partitionby),作为oracle常用的分析函数,身为数据开发时必须要掌握的。不过一段时间不用,难免会有些忘记,今天整理一下一些场景下的用法。现有表(test_rownumber)有如下数据:RUSER(用户名)RID(用户编号)RSAL(用户消费)RD......