SpringMVC 中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;

/**
* 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>

 

————————————————

原文鏈接:https://blog.csdn.net/qq_41648616/java/article/details/81776145


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM