Spring MVC-从零开始-view-向页面传递data(ModelAndView)
1、applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" > <context:component-scan base-package="com.jt"/> <!-- 视图分解解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这是前缀 --> <property name="prefix" value="/WEB-INF/jsp/"></property> <!-- 这是后缀 --> <property name="suffix" value=".jsp"></property> <!-- 在spring的控制器中,返回的是一个字符串,那么请求的路径则是,前缀+返回字符串+后缀 --> </bean> </beans>
2、控制器代码
package com.jt; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping(value="view") public class TestModelAndView { @RequestMapping(value="/personInfo") public ModelAndView viewInfo(){ ModelAndView mv=new ModelAndView(); mv.addObject("name","jt"); mv.addObject("gender","man"); mv.setViewName("viewPersonInfo"); System.out.println("viewPersonInfo"); return mv; } }
3、viewPersonInfo.jsp代码
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> viewPersonInfo<br> ${name}<br> ${gender } </body> </html>
注:无需显示引入任何标签库
4、目录结构
5、运行效果
6、ModeAndView其他用法
- 构造函数
构造函数摘要 | |
---|---|
ModelAndView() bean样式用法的默认构造函数:填充bean属性,而不是传递构造函数参数。 |
|
ModelAndView(Object view) 当没有模型数据暴露时,方便的构造函数。 |
|
ModelAndView(Object view, Map model) 给出一个View对象和一个模型,创建一个新的ModelAndView。 |
|
ModelAndView(Object view, String modelName, Object modelObject) 方便的构造函数来取一个模型对象。 |
|
ModelAndView(String viewName) 当没有模型数据暴露时,方便的构造函数。 |
|
ModelAndView(String viewName, Map model) 给出一个视图名称和一个模型来创建一个新的ModelAndView。 |
|
ModelAndView(String viewName, String modelName, Object modelObject) 方便的构造函数来取一个模型对象。 |
- setviewname setview 的区别
setViewName()主要用于设置jsp页面名称
setView()主要用设置自定义的view对象
- 可以向ModeAndView中添加List对象、Map对象数据(界面显示是需要添加<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>,注意:c标签所依赖的jar,jstl.jar,commons-el.jar,standard.jar)
package com.jt; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping(value="view") public class TestModelAndView { @RequestMapping(value="/personInfo") public ModelAndView viewInfo(){ ModelAndView mv=new ModelAndView(); mv.addObject("name","jt"); mv.addObject("gender","man"); // List List<String> list = new ArrayList<String>(); list.add("java"); list.add("es"); list.add("c#"); mv.addObject("bookList", list); // Map Map<String, String> map = new HashMap<String, String>(); map.put("zhangsan", "bj"); map.put("lisi", "sh"); map.put("wangwu", "sz"); mv.addObject("map", map); mv.setViewName("viewPersonInfo"); System.out.println("viewPersonInfo"); return mv; } }