SpringMVC视图和视图解析器

视图和视图解析器

视图:请求处理方法执行后,最终返回一个ModelAndView对象,对于那些返回String,View或者ModelMap等类型处理方法,SpringMVC也会在内部将它们装配成一个ModelAndView对象,它包含了逻辑名和模型对象的视图。
视图解析器:SpringMVC借助视图解析器(ViewResolver)得到最终的视图对象(View),最终的视图可以是JSP,也可以是Excel等各种表现形式的视图。

视图

视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。为了实现视图模型和具体实现技术的解耦,Spring定义了一个高度抽象的View接口视图对象由视图解析器负责实例化。由于视图是无状态的,所以不会有线程安全问题。
在这里插入图片描述

视图解析器

视图解析器作用:将逻辑视图解析为一个具体的视图对象。所有的视图解析器都必须实现 ViewResolver 接口

在这里插入图片描述注意:每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性,可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高
SpringMVC 会按视图解析器顺序的优先顺序对逻辑视图名进行解析,直到解析成功并返回视图对象,否则将抛出 ServletException 异常

mvc:view-controller标签

若希望直接响应通过 SpringMVC 渲染的页面,可以使用 mvc:view-controller 标签实现

直接配置响应的页面:无需经过控制器来执行结果,path指定那个请求,view-name指定映射给那个视图。视图解析器会解析视图
<mvc:view-controller path="/success" view-name=“success”/>:

注意:配置mvc:view-controller会导致其他请求路径失效,解决方法:mvc:annotation-driven/

SpringMVC的转发和重定向

转发:

 /**
     * forward:转发到一个页面
     * /hello.jsp:转发到当前项目下的hello
     * 一定要加上/,如果不加就是相对路径。容易出问题
     * forward:前缀的转发,不会由我们配置的视图解析器拼串
     */
    @RequestMapping("/handle01")
    public String handle01(){

        return "forward:/hello.jsp";
    }

重定向:

/**
     * 重定向到hello.jsp页面
     * 转发   forward:转发路径
     * 重定向 redirect:重定向的路径
     * 有前缀的转发和重定向,配置的视图解析器不会进行拼串
     *         /hello.jsp:表示就是从当前项目下开始:SpringMVC会为路径自动的拼接上项目名
     *        原生的Servlet重定向/路径需要加上项目名才能成功
     *        response.sendRedirect("/hello.jsp")
     * @return
     */

    @RequestMapping("/handle02")
    public String handle02(){

        return "redirect:/hello.jsp";
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值