U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 常见问题解答 >

面试官:SpringMVC返回视图常见的 5 种方式,你会几种?

来源:http://www.tudoupe.com时间:2022-07-24

当 http 请求被自定义的 controller 处理时,如何指定响应的页面呢?

这就是我们必须在本文中讨论的问题。

在控制器中,对页面的响应有多种方式,我们将马上解释,我们需要知道如何使用它们,以及它们之间的差异,以便我们更灵活地使用它们。

本文用到的页面都以 jsp 为例,其他页面模板技术,比如 freemarker、velocity、thymeleaf、enjoy,这些我们后面专门再开篇讲解。

1、本文内容

  • SpringMVC返回页面的3种方法和差异
  • SpringMVC的双向定位和差异

2、软件版本

  • idea 2020.3.3
  • jdk1.8
  • ≥maven3.6.1
  • spring5.3.6
  • apache-tomcat-9.0.46

让我们首先回顾一下在服务器小册子中对页面的响应的两种方式

SpringMVC底层是使用servlet实现的,所以让我们先回顾servlet中的响应页面是如何实现的。

servlet 中响应页面有 2 种常见的方式,而 springmvc 中通常也是依靠这 2 种方式实现的。

方式 1:转向

转向路径的地址

在服务器侧,浏览器的地址栏不会改变

3、path 指定的页面,可以共享 request 请求中的数据

路径必须是服务器端的资源

方式 2:重定向

1、location 为重定向的地址

2、重定向发生在客户端(浏览器端),所以会导致浏览器地址栏发生变化,变为 location 指定的地址

3、重定向会导致浏览器重新向服务器端发生一次请求,请求地址为 location 指定的地址

位置可以为这个服务器端提供资源,也可以在外部网络上访问任何资源,例如: http://ww.Baidu.com

下面是五种方法来响应springmvc的页面。

4、方式 1:返回 ModelAndView

需求

用户列表功能通过springmvc实现,如下面所示

image.png

如何实现?

让我们先看看如何用servlet实现它。代码如下:

这些行的关键代码很简单。

对应的 jsp(/WEB-INF/view/user/list.jsp)关键代码如下,一个循环遍历用户列表 userList

使用弹簧vc的实现

这里主要是查看列表()方法,当调用此方法时,效果与上面的servlet效果相同,它在这里在ModelAndView中使用。

ModelAndView:模型&视图

通常我们的页面是动态的,客户端看到的页面基本上是模板(视图) + 数据(数据模型),这些数据在组装后向客户端输出。

因此,为了响应客户端的请求,您需要指定两个关键信息:页面和在页面中所需的数据。

在springmvc中使用ModelAndView存储这两个信息,通过模型和View.addObject方法添加在页面中使用的数据,通过Model and View.setViewName来设置显示的页面。

modelAndView.addObject(“key”,“value”)

添加在页面中使用的数据与 request.setAttribute(key, value)相同;

Model and View.setViewName

指定需要显示的视图名称,例如jsp地址

小结

如果在页面中需要一些动态数据,那么您可以使用ModelAndView作为返回值将动态数据置入ModelAndView中。

方法2:直接返回视图名称

当页面不需要使用后端数据时,它只是显示一个页面,其中可直接使用视图的名称作为返回值,例如

image.png

方法3:指定视图分析器

存在的问题

请看上面的两个方法,然后返回视图名称在/ WEB - INF/view/.jsp结束错误。

如果项目中我们规定所有的视图都符合这种规则,即都放在/WEB-INF/view/目录中,都是 jsp 文件,那么我们可以将视图的名称是不是可以简化一下,怎么做的呢?

具体 2 个步骤。

步骤1:注册视图分析器

在springmvc配置文件中添加下列配置,以指定视图分析器。

这个 bean 会对视图的名称进行处理,有 2 个参数需要指定

前缀:查看文件前缀

查看文件末尾

最终视图的名称 = prefix+controller 中指定的 viewname+suffix

step2:调整 controller 中视图的名称

viewName 旧值viewName 新值/WEB-INF/view/user/add.jspuser/add/WEB-INF/view/user/list.jspuser/list

现在代码是不是更简单了?

7.SpringMVC实现了两种重定位方式

需求

有时候,请求之后,需要做重定向操作,比如发送删除用户信息的请求/user/del/{用户id}.do,后端处理成功之后,需重定向到用户列表页面/user/list.do

这里您需要使用重新引导的操作,并且在服务器中间的相应的代码是

springmvc 中有好几种实现,这里我们主要掌握 2 种。

方法1:返回字符串类型

在springmvc中,重新定位相对简单,并且必须重新定位视图的名称: 例如,使用下面的代码启动,处理删除用户请求,并在成功删除后重新定位到用户列表页

方式 2:返回 ModelAndView 类型

如果我们需要重新定位页面以载入参数,我们通常可以这样做,代码如下:

比如

如果遇到这个请求,则根据上面的拼写,可用的参数会减少。

springmv提供了更简单的方法,代码如下: 最后,springmv指定将添加到ModelAndView的数据,并将其汇集到重新定位的url中

8、案例代码

image.png

案例说明

在此情况下,用户信息的添加和删除是实现的,并使用所有上述技术。

用户列表页

http://localhost:8080/chat05/user/list.do

image.png

新增用户页面

http://localhost:8080/chat05/user/add.do

image.png

修改用户信息页面

image.png

删除用户信息

删除用户信息后,它被重新分配到用户列表页面,在该情况下列出了两个删除,以模拟两个重新分配的效果。

image.png

9、总结

  • 通常有两种响应页面的方法:第一个方法返回ModelAndView,更适合需要数据向后传递的页面;第二个方法直接返回视图的名称,更适合不需要数据向后传递的页面。
  • springmvc 容器中配置 InternalResourceViewResolver 视图解析器,用来简化 controller 中视图的名称
  • 掌握重新的 2 种方式,重定向的关键点是视图名称要以redirect:开头,这样 springmvc 才知道你需要 springmvc 来帮你执行重定向操作。

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息