spring MVC (4) spring MVC 的重定向和源码解析

一,示例
1,在handler类中添加方法如下:

//重定向
    @RequestMapping("/testRedirect")
    public String testRedirect() {
        System.out.println("testRedirect");
        return "redirect:/index.jsp";
    }

二,源码解析
1,进入DispatcherServlet的doDispatch方法
2,找到视图mv
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
3,进入processDispatchResult方法
processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
4,进入渲染视图 方法为render
render(mv, request, response);
5,进入解析视图 方法为resolveViewName
view = resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request);
6,再进入如下代码中的resolveViewName,是一个接口
View view = viewResolver.resolveViewName(viewName, locale);
7,找到resolveViewName接口的实现类AbstractCachingViewResolver
8,进入创建视图 createView方法 是一个抽象类,找到他的继承子类UrlBasedViewResolver
return createView(viewName, locale);
9,createView的继承子类UrlBasedViewResolver分析
在UrlBasedViewResolver的createView方法中可以看到如下代码

//如果返回名字是以redirect开头就返回一个redirect视图,如果返回名字以forWord开头就返回InternalResourceView视图
if (viewName.startsWith(REDIRECT_URL_PREFIX)) {
            String redirectUrl = viewName.substring(REDIRECT_URL_PREFIX.length());  
                    RedirectView view = new RedirectView(redirectUrl, isRedirectContextRelative(), isRedirectHttp10Compatible());
            return applyLifecycleMethods(viewName, view);
        }
        // Check for special "forward:" prefix.
        if (viewName.startsWith(FORWARD_URL_PREFIX)) {
            String forwardUrl = viewName.substring(FORWARD_URL_PREFIX.length());
            return new InternalResourceView(forwardUrl);
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值