SpringMVC通过模型视图ModelAndView渲染视图的实现
作者:0和1搭建网络世界 发布时间:2023-02-28 03:36:54
SpringMVC通过模型视图ModelAndView渲染视图大致流程
代码样例
1.准备工作
A.因为文中用到jsp,所以需要引入jsp标准标签库standard.jar和jstl.jar
官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
本地下载地址:lib_jb51.rar
B.添加Tomcat依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
2.Web服务器发送请求
http://localhost:8080/user/details?id=12
@Controller
@Slf4j
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService = null;
@RequestMapping("details")
public ModelAndView details(Long id){
User user = userService.getUser(id);
log.info("获取到的user对象-->"+user.toString());
ModelAndView mv = new ModelAndView();//新建一个模型和视图对象
mv.setViewName("user/details");//设置模型视图名称
mv.addObject("user",user);//加入数据模型
return mv;//返回视图和模型
}
}
A.根据请求路径/user/details通过HandlerMapper机制就能找到对应的控制器进行响应。返回一个HandlerExecutionChain对象,而HandlerExecutionChain对象中的handler(处理器)需要运行,需要处理器适配器HandlerAdapter接口定义的实现类。
B.在处理器调用控制器(controller)时,先通过模型层得到数据,再放入数据模型中,最后返回模型和视图对象。这里的模型视图名称为user/details,走到视图解析器(ViewResolver),解析视图逻辑名称。
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
C.为了定制InternalResourceViewResolver初始化,可以在配置文件application.properties(或yml文件)中进行配置,代码如上。
D.它会以前缀(prefix)和后缀(suffix)以及视图名称组成全路径定位视图。
此例组成的全路径为:/WEB-INF/jsp/user/details.jsp
jsp存放位置如上:
<%@ page pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>用户详情</title>
</head>
<body>
<center>
<table border="1">
<tr>
<td>标签</td>
<td>值</td>
</tr>
<tr>
<td>用户编号</td>
<td><c:out value="${user.id}"></c:out></td>
</tr>
<tr>
<td>用户名称</td>
<td><c:out value="${user.userName}"></c:out></td>
</tr>
<tr>
<td>用户备注</td>
<td><c:out value="${user.note}"></c:out></td>
</tr>
</table>
</center>
</body>
</html>
E.视图解析器定位到视图后,视图的作用就是将数据模型渲染。这样就能看到结果
来源:https://blog.csdn.net/study_study_know/article/details/110142897
猜你喜欢
- 本文实例讲述了C#检测是否有u盘插入的方法。分享给大家供大家参考。具体如下:该C#代码可监控是否有u盘插入,同时可以监控其它驱动器的变化us
- 效果图: //偶数随机 Random evenRanm
- /* * Copyright 2012-2013 The Haohui Network Cor
- hystrixDashboard服务监控除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboar
- 一、表创建一、表创建//创建一个空表DataTable dt = new DataTable();//创建一个名为"Table_N
- 需求:字符串(字符串只有一位小数)转float进行运算, 将结果转成字符串(保留一位小数)直接上代码:float f1 = 0.1f;Str
- 这篇文章主要介绍了Java向上转型和向下转型实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 跑起来的效果看每个类的test方法,自己调用来测试目的是看看哪个算法好用,移植的时候比较单纯没有研究懂算法,代码结构也没改动,只是移植到C#
- JAVA 中Spring的@Async用法总结引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方
- 本文主要通过彩 * 象灰度化来介绍C#处理数字图像的3种方法,Bitmap类、BitmapData类和Graphics类是C#处理图像的的3个
- Android RecyclerView小白今天第一次接触RecyclerView,前辈大神告诉我这是一个很神奇的控件,一看就是
- java输入流报错:Exception in thread "main" java.util.NoSuchElement
- Hystrix Dashboard,它主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可
- 本文实例讲述了Java String类简单用法。分享给大家供大家参考,具体如下:一 String类的实例化方式1 代码public clas
- RSA算法是一种非对称加密算法,那么何为非对称加密算法呢?一般我们理解上的加密是这样子进行的:原文经过了一把钥匙(密钥)加密后变成了密文,然
- 访问Controller返回400BadRequest问题SpringMVC使用自定义类型接收参数时, form提交会返回400 Bad R
- 为了实现不同环境构建的不同需求,这里使用到了 profile。因为 profile 能够在构建时修改 pom 的一个子集,或者添加额外的配置
- spring boot 使用profile来分区配置很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时
- 本文实例讲述了Java实现文件和base64流的相互转换功能。分享给大家供大家参考,具体如下:import java.io.FileInpu
- 场景描述单例模式对于我们来说一点也不模式,是一个常见的名称,单例模式在程序中的实际效果就是:确保一个程序中只有一个实例,并提供一个全局访问点