ModelAndView与JSP交互

本文介绍了ModelAndView在Spring MVC中如何与JSP进行交互,包括设置视图解析器、向视图传递模型数据以及在JSP页面中如何使用这些数据进行迭代展示。通过示例展示了如何在后台控制器中设置渲染index.jsp并传递模型数据,以及JSP页面中使用EL表达式和JSTL标签遍历模型数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ModelAndView

ModelAndView中包含了一个model属性和一个view属性,model其实是一个ModelMap类型,
它是一个LinkedHashMap的子类,view包含了一些视图信息。

常用方法

/** 构造方法 **/
ModelAndView()  
ModelAndView(String viewName)  // 视图名,需要配置视图解析器先
ModelAndView(String viewName, String modelName, Object modelObject)  // 视图名和一对模型(key-value)

/** 类方法 **/
ModelAndView  addObject(String modelName,ObjectmodelObject)  // 对象添加到模型中。
void  setViewName(StringviewName)  // 设置视图名

以下指定了JSP的视图解析器

 <!-- JSP视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/"/>
    <property name="suffix" value=".jsp"/>
</bean>

使用

后台控制器这里设置渲染index.jsp视图,给视图添加了一个模型students

@RequestMapping(value = "/getAll", method = RequestMethod.GET)
@ResponseBody
public ModelAndView getAll() {
    List<Student> students =  studentService.findAll();
    ModelAndView mv = new ModelAndView("index");
    mv.addObject("students", students);
    return mv;
}

以下是index.jsp的部分代码

        <div id="all-div">
            <table>
                <thead>
                    <th>学号</th>
                    <th>名字</th>
                    <th>性别</th>
                    <th>分数</th>
                </thead>
                <tbody>
                    <c:forEach var="student" items="${students}">
                        <tr>
                            <td>${student.id}</td>
                            <td>${student.name}</td>
                            <td>${student.gender}</td>
                            <td>${student.grade}</td>
                        </tr>
                    </c:forEach>
                </tbody>
            </table>
        </div>

需要引入以下几个指令

<%@ page contentType="text/html;charset=utf-8" %>
<%@ page isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  1. isELIgnored=“false” 不导入page指令的这个属性,浏览器将直接显示${student.grade}
  2. taglib是JSP的标签库指令
  3. <c:forEach var=“student” items="${students}">, items是后台加入的模型,也就是要迭代的对象。var是当前迭代对象。[for (i = 0; i < n; ++i)) 类似的这里的i就是var, n就是items]

当输入 xxx/getAll.do 时,将会打开index.jsp这个视图页面,同时也会渲染了这个表格数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值