视图和视图解析器

这篇具有很好参考价值的文章主要介绍了视图和视图解析器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringMVC–视图和视图解析器

基本介绍

  1. 在springMVC 中的目标方法最终返回都是一个视图(有各种视图)。

  2. 返回的视图都会由一个视图解析器来处理(视图解析器有很多种)。

自定义视图

为什么需要自定义视图

​ 在默认情况下,我们都是返回默认的视图, 然后这个返回的视图交由SpringMVC 的InternalResourceViewResolver 视图处理器来处理的。

在实际开发中,我们有时需要自定义视图,这样可以满足更多更复杂的需求。

自定义视图实例-代码实现

配置springDispatcherServlet-servlet.xml , 增加自定义视图解析器

<!--
    1. 配置可以解析自定义的视图的解析器
    2. BeanNameViewResolver 这个就是可以解析自定义视图的解析器
    3. name="order" :表示给这个解析器设置优先级, 默认优先级很低值Integer.MAX_VALUE
    4. 一般来说明,我们自己的视图解析优先级高,Order 值越小,优先级越高
-->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
	<property name="order" value="99"></property>
</bean>

创建springmvc\src\com\web\viewresolver\MyView.java -自定义视图类

/**
 * 1. MyView继承了AbstractView, 就可以作为一个视图使用
 * 2. @Component(value = "myView"),该视图会注入到容器中, 名字/id是 myView
 */
@Component(value = "myView")
public class MyView extends AbstractView {
    @Override
    protected void renderMergedOutputModel(Map<String, Object> model,
                                           HttpServletRequest request,
                                           HttpServletResponse response) throws Exception {
        //完成视图渲染
        //并且可以确定我们要跳转的页面 [请求转发] /WEB-INF/pages/my_view.jsp
        System.out.println("进入到自己的视图..");

        //1. 下面就是进行请求转发到 /WEB-INF/pages/my_view.jsp
        //2. /WEB-INF/pages/my_view.jsp 会被springmvc解析  /springmvc/WEB-INF/pages/my_view.jsp
        request.getRequestDispatcher("/WEB-INF/pages/my_view.jsp")   .forward(request, response);

    }
}

创建springmvc\src\com\web\viewresolver\GoodsHandler.java

@RequestMapping("/goods")
@Controller
public class GoodsHandler {
    @RequestMapping(value = "/buy")
    public String buy() {
        System.out.println("------buy()-----");
        return "myView";
    }
}

创建springmvc\web\view.jsp 和/WEB-INF/pages/my_view.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
    <title>view</title>
    </head>
    <body>
            <h2>测试自定义视图</h2>
            <a href="goods/buy">测试自定义视图</a><br/>
    </body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
    <title>Title</title>
    </head>
    <body>
            <h1>从自己的视图过来的</h1>
            <hr/>
            welcome! 
    </body>
</html>

自定义视图工作流程小结

自定义视图-小结
  1. 自定义视图: 创建一个View 的bean, 该bean 需要继承自AbstractView, 并实现renderMergedOutputModel 方法。

  2. 并把自定义View 加入到IOC 容器中。

  3. 自定义视图的视图处理器,使用BeanNameViewResolver, 这个视图处理器也需要配置到ioc 容器。

  4. BeanNameViewResolver 的调用优先级需要设置一下,设置order 比Integer.MAX_VAL小的值,

以确保其在InternalResourceViewResolver 之前被调用。

自定义视图-工作流程
  1. SpringMVC 调用目标方法, 返回自定义View 在IOC 容器中的id。

  2. SpringMVC 调用BeanNameViewResolver 解析视图: 从IOC 容器中获取返回id 值对应的bean, 即自定义的View 的对象。

  3. SpringMVC 调用自定义视图的renderMergedOutputModel 方法渲染视图。

  4. 如果在SpringMVC 调用目标方法, 返回自定义View 在IOC 容器中的id不存在, 则仍然按照默认的视图处理器机制处理。

目标方法直接指定转发或重定向

使用实例

目标方法中指定转发或者重定向。

  1. 默认返回的方式是请求转发,然后用视图处理器进行处理,比如在目标方法中这样写:

      @PostMapping(value = "/buy")
        public String buy() {
            System.out.println("购买商品~");
            return "success";
        }
    
  2. 也可以在目标方法直接指定重定向或转发的url 地址

  3. 如果指定重定向,不能定向到/WEB-INF 目录中

应用实例-代码实现

修改GoodsHandler.java, 增加方法order()

// 在目标方法直接指定重定向&请求转发
@RequestMapping(value = "/order")
public String order() {
    System.out.println("=======order()=====");
    //这里直接指定转发到哪个页面
    //return "forward:/WEB-INF/pages/my_view.jsp";
    //重定向, 如果是重定向,就不能重定向到/WEB-INF 目录中
    return "redirect:/login.jsp";
}

修改view.jsp,文章来源地址https://www.toymoban.com/news/detail-604778.html

<h2>测试自定义视图</h2>
<a href="goods/buy">测试自定义视图</a><br/>
<a href="goods/order">测试目标方法直接指定重定向&请求转发</a><br/>

到了这里,关于视图和视图解析器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

    一、源码特点     java 宠物在线商城系统是一套完善的java web信息管理系统 servlet+dao+bean mvc模式,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。 java 宠物

    2024年02月20日
    浏览(45)
  • java 课程签到管理系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

    一、源码特点     java 课程签到管理系统是一套完善的java web信息管理系统 采用serlvet+dao+bean,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。 java 课程签

    2024年02月19日
    浏览(42)
  • 视图和视图解析器

    在springMVC 中的目标方法最终返回都是一个视图(有各种视图)。 返回的视图都会由一个视图解析器来处理(视图解析器有很多种)。 为什么需要自定义视图 ​ 在默认情况下,我们都是返回默认的视图, 然后这个返回的视图交由SpringMVC 的InternalResourceViewResolver 视图处理器来处理的

    2024年02月16日
    浏览(32)
  • Spring MVC:视图与视图解析器

    在上一章中,模型数据通过域对象共享的方式返回给前端控制器 DispatcherServlet 。那么,把结果封装成模型视图 ModelAndView 对象返回给前端控制器 DispatcherServlet 后,下一步是前端控制器 DispatcherServlet 依据 视图解析器 ViewResolver 的解析,得到真实 视图 对象(JSP等)对处理结果的

    2024年02月09日
    浏览(57)
  • SpringMVC自定义视图完成步骤 和 视图解析的源码剖析

    自定义视图完成步骤: ● 7.2.1自定义视图完成步骤 1. 自定义视图* *:** 创建一个 View 的 bean, 该 bean 需要继承自 AbstractView, 并实现 renderMergedOutputModel 方法* *.** 2. 并把自定义 View 加入到 IOC 容器中 3. 自定义视图的视图处理器,使用 BeanNameViewResolver* *, 这个视图处理器也需要配置

    2024年02月09日
    浏览(41)
  • 短视频矩阵系统源码开发搭建技术解析-PHP语言

    一、系统架构 整个短视频矩阵系统大概分为以下几个模块: 1.多平台账号管理 支持抖音、快手、小红书、西瓜、头条视频号等多平台账号管理。 2.视频管理模块 支持视频批量上传、批量剪辑、文字转语音,特效等功能配置 3.推荐算法模块 推荐算法模块主要用来推荐用户感兴

    2024年02月07日
    浏览(70)
  • [Spring5.3.2] Servlet[springmvc]的Servlet.init()引发异常, 解析类文件失败

    问题表现: 图中提到的问题: 例外情况 javax.servlet.ServletException: Servlet[springmvc]的Servlet.init()引发异常 根本原因 org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:apache-tomcat-9.0.69webappsch2_2WEB-INFclassescontrollerIndexController.class]; nested excep

    2024年02月02日
    浏览(34)
  • 视图解析-Thymeleaf初体验

    Thymeleaf是一种服务器端Java模板引擎,适用于构建基于MVC框架的Web应用程序。它的设计目标是在服务器端生成HTML页面,将数据与HTML页面进行动态绑定,以产生最终的可视化内容。 Thymeleaf的主要特点包括: 自然模板:Thymeleaf模板与常规HTML是兼容的,非Thymeleaf标签可以在Thymel

    2024年02月15日
    浏览(37)
  • SAP-物料主数据-质量管理视图字段解析

    过账到质检库存:要勾选,否则收货后库存不进入质检库存 HU检验:收货到启用HU管理的库位时产生检验批,例如某个成品物料是收货到C002库位,该库位启用了HU管理,那么此处要勾选。但是如果勾选了,却收货到C001(该库位未启用HU管理),那么收货到C001的这批货不会产生

    2024年02月07日
    浏览(44)
  • IE浏览器兼容性视图设置数据解析

    兼容性视图设置注册表位置: HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerBrowserEmulationClearableListDataUserFilter 数据类型:REG_BINARY 数据结构: 一、数据头 8字节前缀(固定值:“411F00005308ADBA”) 4字节网址数目(低位字节在前) 4字节数据段长度(数据段长度(含自身长度4),

    2024年02月06日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包