ResourceBundleViewResolver是根据proterties文件来找对应的视图来解析“逻辑视图”。该properties文件默认是放在classpath路径下的views.properties文件,但是我们也可以在配置ResourceBundleViewResolver的时候通过它的属性basename来设置
1. 在SpringMVC的配置文件添加ResourceBundleViewResolver视图解析器
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <mvc:annotation-driven></mvc:annotation-driven> <context:component-scan base-package="com.gxa.spmvc.controller"></context:component-scan> <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver" p:basename="com/gxa/spmvc/config/views" p:order="1"></bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp"></bean> </beans>
2. 在项目的src/com/gxa/spmvc/config中创建views.properties文件,目的是改变默认路径下properties文件
m09.(class)=org.springframework.web.servlet.view.InternalResourceView m09.url=/m09.jsp
上面的属性文件的编写方式非常重要,特别是key不能写错了。下面我们来说明一下key的具体含义是什么
- m09表示处理器(controller)返回的逻辑视图
- m09.(class)表示对应的视图类
- m09.url表示物理视图
- 当处理器(controller)返回"m09"时,会在前台显示/m09.jsp的页面内容
3. 控制器代码
package com.gxa.spmvc.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.gxa.spmvc.entity.Student; /** * SpringMVC的控制器(业务控制器) * 定义的方法就是一个请求处理的方法 * @author caleb * */ @Controller @RequestMapping("/user") public class TestController { @RequestMapping("/m09") public String m09() { return "m09"; } }