springMVC多视图
多视图官方文档
官方文档解析
编写自己的多视图
1、配置约定访问的url:web.xml
2、配置多视图:springmvc.xml
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
2、配置多视图:springmvc.xml
<!-- 配置多视图支持 -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<!-- 配置支持的媒体类型 -->
<property name="contentNegotiationManager">
<bean class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<!-- 配置媒体类型 -->
<property name="mediaTypes">
<!-- 使用map配置多个媒体类型 -->
<map>
<entry key="json" value="application/json"></entry>
<entry key="xml" value="application/xml"></entry>
</map>
</property>
</bean>
</property>
<!--指定默认视图 -->
<property name="defaultViews">
<!-- 支持多个视图 -->
<list>
<!-- 对json格式视图支持 -->
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"></bean>
<!-- 对xml格式视图支持 -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<!-- 需要导入spring的oxm jar包 -->
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>cn.caixia.domain.User</value>
</list>
</property>
</bean>
</constructor-arg>
</bean>
</list>
</property>
</bean>
3、配置javabean
@XmlRootElement //必须是jdk1.6以上
public class User {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
4、定义Controller
//多视图支持
@RequestMapping("multiView")
public User multiView(){
User user1 = new User();
user1.setId(1);
user1.setSex("男");
user1.setUsername("张无忌");
user1.setAddress("武当山");
user1.setBirthday(new Date());
return user1;
}
访问
根据官方文档约定:访问需要加上响应的扩展名。获取json格式的数据需要加上json扩展名,访问html格式的,需要加上html的扩展名。
访问xml格式的需要加上xml的扩展名。
根据我们web.xml文件的访问约定:扩展名.do是访问jsp页面的。
那么我们访问json格式和xml数据格式访问形式如下: