作为一个菜鸟的程序员,经常看到一些大神在使用Spring的,各种各样的配置文件,也不是很理解

视图解析器,一开始的时候我们也是跟着别人进行配置,比着葫芦画瓢,今天也算是对视图解析器有了一个小小的理解

借鉴这位兄台的博客

所有的We MVC框架都有一套它自己的解析视图的机制,Spring MVC也不例外,它使用ViewResolver进行视图解析,让用户在浏览器中渲染模型。ViewResolver是一种开箱即用的技术,能够解析JSP、Velocity模板和XSLT等多种视图。

Spring处理视图最重要的两个接口是ViewResolver和View。ViewResolver接口提供了视图名称和真正的视图之间的映射; 而View接口则是将真正的视图呈现给用户

而今天我就简单的说一下ViewResulver,这个接口

我们来看这个接口的实现类:

InternalResourceViewResolver

将逻辑视图名解析为一个路径

BeanNameViewResolver

将逻辑视图名解析为bean的name属性,从而根据name属性去找对应的bean

ResourceBundleResolver

和BeanNameViewResolver一样,只不过定义的view-bean都在一个properties文件中,用这个类进行加载这个properties文件

XmlViewResolver

和ResourceBundleResolver一样,只不过定义的view-bean在一个xml文件中,用这个类来加载xml文件

UrlBasedViewResolver

它简单实现了ViewResolver接口, 不用任何映射就能通过逻辑视图名称访问资源

VelocityViewResolver

对Velocity模版引擎的支持

FreeMarkerViewResolver

对FreeMarker模版引擎的支持

 

 

 

 

 

 

 

 

 

其实我们想做的是最为简单的:比如说访问一个接口:​​http://localhost:8090/wzweb/LoginAction/index​

package com.wdg.login.controller;

@Controller
@RequestMapping("/LoginAction")
public class LoginController extends BasicController
{

@RequestMapping("/index")
public String index() {
return "index";

}

}

当我们访问接口的时候,我希望是返回的是一个html文件,这个html文件已经存在我们的项目中了,我们仅仅做的是通过接口的形式来访问这个页面,我们用到的是ViewResolver,是我们返回的值对应项中的html文件

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".html" />
</bean>

这个就能看出来,比如我们访问返回的是一个"index",返回的接口会解析成为/WEB-INF/views/index.html

Spring 视图解析_html

所以说我们看到的页面是这样的:

Spring 视图解析_viewResolver_02

其实上面主要是需要我们理解,在springServlet-servlet.xml关于视图解析的一个配置

里面一个是路径,一个是后缀名

希望对你有所帮助