栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 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号