SpringMVC的视图和视图解析器
创始人
2024-05-28 19:25:21
0

Java知识点总结:想看的可以从这里进入

目录

      • 2.4、视图、视图解析器
        • 2.4.1、视图
        • 2.4.2、视图解析器

2.4、视图、视图解析器

视图是渲染数据模型并将内容展示给用户,而视图解析器是将逻辑视图解析成真正的视图。

Spring MVC 支持 ModelAndView、Model、Map、View、String 多种类型的返回值,但无论控制器方法的返回值是哪种类型,Spring MVC 内部最终都会将它们封装成一个 ModelAndView 对象,它由 model(模型数据)和 view(逻辑视图名)两部分组成,所以 Spring MVC 需要借助 ViewResolver(视图解析器)将 逻辑视图名解析为真正的 View 视图对象,然后才能响应给客户端展示。

Spring MVC 的核心理念是将 视图与 数据模型进行解耦,视图技术随场景选择:Thymeleaf、JSP、FreeMarker、Velocity、Excel 等等。其中spring6已经取消了对JSP、FreeMarker的支持。

2.4.1、视图

视图是用来展示数据模型的。SpringMVC中定义了多种视图,但是它们都需要满足一个视图接口:View:

public interface View {/*** 包含响应状态代码的HttpServletRequest属性的名称*/String RESPONSE_STATUS_ATTRIBUTE = View.class.getName() + ".responseStatus";/*** 包含带有路径变量的 Map 的HttpServletRequest属性的名称*/String PATH_VARIABLES = View.class.getName() + ".pathVariables";/***选择响应内容类型*/String SELECTED_CONTENT_TYPE = View.class.getName() + ".selectedContentType";/*** 响应客户端的类型,可以使HTML、JSON、PDF等等*/@Nullabledefault String getContentType() {return null;}/***渲染的方法, model数据模型*/void render(@Nullable Map model, HttpServletRequest request, HttpServletResponse response)throws Exception;}

当控制器返回ModelAndView时,解析器进行解析,将数据模型传给 render 方法,进行视图渲染。SpringMVC中的视图很多,但常用的视图的实现类有:

实现类说明
ThymeleafViewThymeleaf 视图。使用 Thymeleaf 时,需要使用该视图类。
InternalResourceView转发视图,通过它可以实现请求的转发跳转。它也是 JSP 视图。
RedirectView重定向视图,通过它可以实现请求的重定向跳转。
FreeMarkerViewFreeMarker 视图.
MappingJackson2JsonViewJSON 视图。
AbstractPdfViewPDF 视图 。

视图一般分为两类:

  • 逻辑视图:view 是一个字符串的逻辑视图名,需要解析。

    比如说ThymeleafView,它需要视图解析器根据配置去寻找我们完成的实际页面进行渲染

    //这两种方式返回的都是逻辑视图
    @RequestMapping("/test")
    public String test1(Model model) {return "success";
    }
    @RequestMapping("/test")
    public ModelAndView test1() {ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("success");return modelAndView;
    }
    
  • 非逻辑视图:返回的是一个真正的视图对象,不需要解析

    如 MappingJackson2JsonView ,它返回的是JSON数据,不需要解析就可以将JSON视图直接展示给用户

    @RequestMapping("/test")
    @ResponseBody
    public ModelAndView test(d) {return "返回字符串";
    }
    

2.4.2、视图解析器

视图解析器用来解析逻辑视图,将其解析成真正的视图。

SpringMVC 提供了一个视图解析器的接口 ViewResolver,所有具体的视图解析器必须实现该接口。

public interface ViewResolver {/*** 按名称解析给定的视图。,locale配置国际化,viewName就是传递的逻辑视图名字*/@NullableView resolveViewName(String viewName, Locale locale) throws Exception;}

SpringMVC中也有很多不同的视图解析器,

视图解析器说明
BeanNameViewResolver将视图解析后,映射成一个 Bean,视图的名称就是 Bean 的 id。
InternalResourceViewResolverJSP的视图解析器,映射一个 JSP 文件。
FreeMarkerViewResolverFreeMarker 视图解析器,映射成一个 FreeMarker 模板文件。
ThymeleafViewResolverThymeleaf视图解析器,映射成一个 Thymeleaf 模板文件。

使用它们需要在XML中进行配置,配置前缀和后缀后,就可以在Controller中使用了,它解析的路径是:前缀+方法中返回的路径+后缀,就能解析到一个真正的视图。

视图解析器也可以同时配置多个,其中可以使用 order 指定它们之间的解析优先级顺序,Spring MVC 会遍历所有视图解析器,并按照其优先级依次对逻辑视图名进行解析,直到解析成功并返回视图对象为止。






上一篇:3 mmmmm

下一篇:2D图像处理:相机标定

相关内容

热门资讯

以包汤圆为主题的优秀作文【优... 以包汤圆为主题的优秀作文 篇一包汤圆的乐趣包汤圆是中国传统的民间活动之一。每年农历正月十五的元宵节,...
校园生活二三事作文【最新6篇... 校园生活二三事作文 篇一我的校园生活充满了欢笑和感动。在这个充满活力的地方,我度过了许多难忘的时光。...
初一学生作文【精彩6篇】 初一学生作文 篇一:我的暑假计划初一学生作文 篇二:我的理想职业初一学生作文 篇三   我们平常看书...
自信作文【通用6篇】 自信作文 篇一自信是一种积极向上的心态,是人们在面对困难和挑战时保持坚定信念和积极态度的能力。自信是...
初中作文:爸爸,我想对您说【... 初中作文:爸爸,我想对您说 篇一亲爱的爸爸:您好!我想借此机会写一封信给您,表达我对您的感激之情和对...
初中生家长的寄语(优选5篇) 初中生家长的寄语 篇一亲爱的家长们:首先,我要向大家表示衷心的感谢,感谢你们一直以来对孩子的关心和支...
并列式议论文(实用5篇) 并列式议论文 篇一应该提高法定退休年龄随着现代医疗和生活水平的提高,人们的寿命也在不断延长。这使得许...
寂寞的天空初中作文【经典5篇... 寂寞的天空初中作文 篇一寂寞的天空天空,是一片广袤无垠的蓝色宇宙,是我们向往的自由之地。然而,有时候...
初中英语作文:美味的臭豆腐(... 初中英语作文:美味的臭豆腐 篇一Stinky Tofu: A Delicious DelicacyS...
亲情作文【优质6篇】 亲情作文 篇一:珍贵的亲情亲情,是我们生命中最珍贵的财富。无论是父母的爱护、兄弟姐妹的关怀,还是亲人...
成长路上的X初一作文20篇 成长路上的X初一作文 第一篇在一生当中,“人”没有完美的,只有尽量去做到完美!但如果怕去犯错或是做错...
雨的作文(精彩6篇) 雨的作文 篇一雨是大自然的一种神奇的馈赠,它给予了我们生活的滋润和希望。每当雨水纷纷扬扬地落在大地上...
春节的来历【最新5篇】 春节的来历 篇一:传统文化的庆典之始春节是中国传统文化中最重要、最热闹的节日之一。它的来历可以追溯到...
小城小爱作文800字【实用5... 小城小爱作文800字 篇一:感受小城的温暖小城,一个位于山水之间的宁静小地方,它虽然不大,但却给予我...
我眼中的春天300字初一作文... 我眼中的春天300字初一作文 篇一春天,是大自然的醒来,是万物复苏的季节。在我眼中,春天是一幅绚丽多...
初中生活作文600字(优选6... 初中生活作文600字 篇一初中生活即将结束,回首这三年的时光,我不禁感慨万分。初中生活是我人生中最珍...
游苏州白象湾(最新5篇) 游苏州白象湾 篇一白象湾是苏州市区一处美丽的旅游胜地。它位于苏州市吴中区,是一座以水乡特色为主题的综...
我的班主任——彭老师【优质6... 我的班主任——彭老师 篇一彭老师是我初中三年的班主任,她是一位非常有责任心和耐心的老师。在这三年中,...
初一的幸福作文500字【精彩... 初一的幸福作文500字 篇一初一是一个新的开始,也是一个充满期待和希望的阶段。对于我来说,初一的幸福...
乡下【推荐3篇】 乡下 篇一乡下是我成长的地方,那里有着宁静的村庄和美丽的自然风光。每当我回想起那段时光,我就会感到一...