首页 > 编程语言 > 详细

3. SpringMVC 组件解析 - View Resolver - 视图解析器

时间:2021-06-28 09:37:36      阅读:23      评论:0      收藏:0      [点我收藏+]

什么是视图解析器?  先来复习一下吧:

View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即 具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

SpringMVC有默认组件配置,视图解析器默认组件都是DispatcherServlet.properties配置文件中配置的,该配置文件地址 org/springframework/web/servlet/DispatcherServlet.properties,该文件中配置了默认的视图解析器,

我们可以在IDEA的lib下去找 然后找到 spring-webmvc-5.0.5.RELEASE.jar 包下的org/springframework/web/servlet/DispatcherServlet.properties ,然后我们直接打开,发现里面有很多我们前面介绍过的解析器,我们这篇文章讲解的是视图解析器:

找到

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

 

一般在倒数第二行 我们跟踪InternalResourceViewResolver进去:

然后可以看到这个类继承了UrlBasedViewResolver类,然后我们在跟踪进去:

发现这两行代码

public static final String REDIRECT_URL_PREFIX = "redirect:";
public static final String FORWARD_URL_PREFIX = "forward:";

其实呢 这个就是他定义的常量 我用我五毛钱英语可以读出 

分别是: 重定向 - url - 前缀  和  转发 - url - 前缀

所以我可以知道 这就是 控制器返回那个字符串的方式! 默认是第二个 转发,所以他隐藏了而已,

所以我们可以去哪里添加 去改变他的方式:

package com.bihu.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value = {"/aaa"})
public class TestController {

    @RequestMapping(value = "/go",method = RequestMethod.GET)
    public String GoUrl(){
        System.out.println("您成功访问了 根目录/aaa/go 网页!");
        return "redirect:/s1.jsp";
 
} }

嗯 果然是这样 现在网页不转发了 是直接重定向了【网址变了】

所以 就是说 这个东西默认是 转发 然后你完全可以添加这个进去实现重定向。

 

还有就是:

我们一般开发 如果视图是 jsp 那么我们一般都把 这个jsp 在webapp这个包下 创建一个文件夹存 jsp ,所以你在控制器返回的网址也是要变的【视图解析器】:

技术分享图片

 

 例如这是我的结构图,那么我就要这要返回:

return "/jsp/s1.jsp";

 

所以如果你觉得麻烦 注意啊 是如果觉得麻烦,你完全可以返回一个 s1 其他的让 Spring帮你配【Spring-MVC 容器中 配置依赖注入】:

注意: 我觉得不要配最好,因为听错报错率挺高 因为 转发 和 重定向的问题??  还有就是 多层目录 、 不同目录

怎么配?

首先我们得知道原理:

还是这个类:

UrlBasedViewResolver

 它里面有两个变量叫:

private String prefix = "";
private String suffix = "";

 

五毛钱并夕夕翻译的我:

prefix = ""; --视图名称前缀 

suffix = ""; --视图名称后缀

 

所以呢,就是: 

return "/jsp/s1.jsp";
/webapp/jsp/ : prefix   为什么是/webapp/jsp/ ?  因为如果你改变人家的父路劲 那么就得重写! 写完整 不然找不到
.jsp : suffix 

 所以呢 你会发现他都有set 和 get 方法 ,那么你就可以在spring-mvc 容器上注入一下即可了!!!!

spring-mvc.xml : 

 

这里出错了 待补充....

3. SpringMVC 组件解析 - View Resolver - 视图解析器

原文:https://www.cnblogs.com/bi-hu/p/14942476.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!