栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何防止Spring MVC进行重定向?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何防止Spring MVC进行重定向?

Spring MVC建立在Servlet
API之上。因此,

HttpServletResponse
理论上可以访问的任何组件都可以使用它
sendRedirect(String)
手动设置或设置响应代码。(我说的是
理论上的 原因,因为在进行这些调用时还必须尚未做出响应。)

通常,在Spring MVC应用程序中,a

@Controller
可以将方法中的
HttpServletResponse
(或
ServletResponse
@RequestMapping
作为参数接收。

HandlerInterceptor
DispatcherServlet
的请求处理生命周期中,A
收到了三次。

任何已注册的Servlet

Filter
实例都可以访问
ServletResponse
Spring的(之前和之后),
DispatcherServlet
因为过滤器在Servlet之前起作用。

Spring尝试将所有这些依赖项隐藏到Servlet
API中,以简化Web服务器的编程。因此,它提供了导致重定向的其他方法。这些主要取决于支持的处理程序方法的返回类型。更具体地讲,我们关心的

String
View
ModelAndView
,和
ResponseEntity

以下是所有默认情况:

当返回a时

String
,Spring将使用a
ViewResolver
View
基于
String
值解析a ,该值标识视图的名称。Spring
UrlbasedViewResolver
会在视图名称中检测到
redirect:
前缀,
String
并将其视为发送重定向响应的指示。它将创建一个
RedirectView
(实际上是在其中完成了一部分
ViewNameMethodReturnValueHandler
,但
UrlbasedViewResolver
创建了
View
),它将负责使用进行重定向
HttpServletResponse

这是一个实现细节,但是大多数Spring的默认

ViewResolver
类都这样做。

使用

View
,您可以轻松创建并返回
RedirectView
自己。您也可以实现自己的
View
类,该类将执行相同的操作。Spring将使用适当的方式
HandlerMethodReturnValueHandler
来处理它。

使用

ModelAndView
,它是前两个选项的混合,因为您可以提供视图名称或
View
本身。

有了

ResponseEntity
它,您可以控制整个响应,因此变得更加有趣。也就是说,您可以设置状态代码,标题,正文等所有内容。因此,您所需要做的就是将状态代码设置为302,并放置一个
Location
带有URL
的标头以重定向到。

最后,您在

@ExceptionHandler
方法中具有相似的行为(具有相似的返回类型),也可以将它们与
@ResponseStatus
手动混合并修改标头。

这些都是基本情况,但是由于Spring
MVC几乎可以完全自定义,因此还有其他组件需要注意。这是

HandlerMethodArgumentResolver
HandlerMethodReturnValueHandler
HandlerAdapter
HandlerExceptionResolver
ExceptionHandler
等。请注意,您很少会使用这些功能,而Spring附带的功能几乎可以完成整个工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号