方法不返回ModelAndView,也不返回String类型对应的逻辑视图名称,而是直接返回一个Pojo对象
如果直接返回Pojo对象,项目又配置了视图解析器规则
如果方法中没有返回ModelAndView对象,此时SpringMVC不知道视图在哪里.
此时需要配置视图解析器org.springframework.web.servlet.view.InternalResourceViewResolver.
物理视图路径为:上下文路径+前缀+请求路径(资源名称)+后缀
必须保证视图解析器路径下面必须有 请求路径对应的页面
@ModelAttribute作用如下:
1、设置请求参数绑定到Model对象中并传到视图页面的key名.
2、将方法返回值或请求参数绑定到Model对象中并传到视图页面
配置步骤
第一步:设置springmvc.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
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-4.3.xsd">
<context:component-scan base-package="cn.zj.springmvc"/>
<!-- 设置SpringMVC的注解驱动 -->
<mvc:annotation-driven/>
<!-- 设置SpringMVC静态资源处理 -->
<mvc:default-servlet-handler/>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置前缀 -->
<property name="prefix" value="/WEB-INF/view/"/>
<!-- 配置后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
第二步:添加controller
/*
*
* SpringMVC 响应支持方法直接返回对象
*
* 默认使用的是请求转发跳转
*
* 1,跳转地址
* 视图解析器的前缀+类的请求映射名称+方法的请求映射+后缀
* 此场景的为:/WEB-INF/view/response/method6.jsp
* 2, 共享数据,把当前返回的数据类型的对象共享过去
* 默认,共享的对象名称就是当前对应数据类型的 首字母小写 User--->user
* 使用 @ModelAttribute注解手动设置共享数据的名称
*/
@ModelAttribute("userKey")
@RequestMapping("method6")
public User method6() {
User user = new User();
user.setUsername("lilei");
user.setPassword("lileiabc321");
user.setEmail("lilei@qq.com");
return user;
}
第三步:项目图
保证视图解析器和controller组成的url路径下的文件存在。