0

0

Spring MVC怎么配置XML视图解析器_Spring MVC集成XmlViewResolver实践

幻夢星雲

幻夢星雲

发布时间:2025-10-27 21:56:02

|

920人浏览过

|

来源于php中文网

原创

Spring MVC中可通过自定义XmlView继承AbstractView并结合JAXB实现XML视图渲染,需配置ContentNegotiatingViewResolver支持XML格式,配合BeanNameViewResolver和实体类JAXB注解,使控制器返回的模型数据以XML输出,适用于需视图控制的场景。

spring mvc怎么配置xml视图解析器_spring mvc集成xmlviewresolver实践

在Spring MVC中,如果需要返回XML格式的数据给客户端(如浏览器或API调用方),除了使用@ResponseBody直接输出XML内容外,还可以通过配置XmlViewResolver来实现视图级别的XML渲染。这种方式适合需要结构化视图管理、复用模板或与视图技术整合的场景。

启用XmlViewResolver的前提条件

Spring本身并不直接提供名为 XmlViewResolver 的标准视图解析器,但可以通过继承 AbstractView 并结合 JAXB 实现自定义XML视图功能。常见的做法是使用 ContentNegotiatingViewResolver 配合自定义XML视图类,实现对不同格式(如JSON、XML)的自动切换。

若你希望基于XML模板或对象自动序列化为XML响应,可以按以下方式配置:

步骤一:添加JAXB依赖(Java 11+需注意模块化)

如果你使用的是Java 8,JAXB已内置;Java 9及以上版本需显式引入:


  javax.xml.bind
  jaxb-api
  2.3.1


  org.glassfish.jaxb
  jaxb-runtime
  2.3.1

步骤二:创建支持XML输出的视图类

编写一个继承 AbstractView 的类,用于将模型数据以XML格式输出:

public class XmlView extends AbstractView {

  @Override
  protected void renderMergedOutputModel(Map model,
      HttpServletRequest request, HttpServletResponse response)
      throws Exception {

    Object obj = model.get("content");
    if (obj == null) {
      response.setStatus(HttpServletResponse.SC_NO_CONTENT);
      return;
    }

    response.setContentType("application/xml;charset=UTF-8");
    JAXBContext context = JAXBContext.newInstance(obj.getClass());
    context.createMarshaller().marshal(obj, response.getOutputStream());
  }
}

步骤三:配置ViewResolver支持XML视图

在Spring MVC的配置文件(如 dispatcher-servlet.xml)中注册视图解析器:

Type
Type

生成草稿,转换文本,获得写作帮助-等等。

下载

  
    
      
    

  

  
    
      
    

  

  
    
      
      json" value="application/json"/>
    

  

同时确保开启 BeanNameViewResolver,它允许Spring根据bean名称查找视图实例。

步骤四:控制器返回视图名称

在Controller中返回逻辑视图名,并把要序列化的对象放入model:

@Controller
public class UserViewController {

  @GetMapping(value = "/user", produces = "application/xml")
  public String getUser(Model model) {
    User user = new User("zhangsan", 25);
    model.addAttribute("content", user);
    return "xmlView"; // 对应XmlView的bean名称
  }
}

记得在Spring上下文中注册该视图bean:

实体类添加JAXB注解

确保你的Java对象支持JAXB序列化:

@XmlRootElement(name = "user")
public class User {
  private String name;
  private int age;

  public User() {}
  public User(String name, int age) { this.name = name; this.age = age; }

  @XmlElement
  public String getName() { return name; }
  public void setName(String name) { this.name = name; }

  @XmlElement
  public int getAge() { return age; }
  public void setAge(int age) { this.age = age; }
}

访问 /user.xml 或设置Accept头为 application/xml 即可看到XML输出:



  25
  zhangsan
基本上就这些。通过上述配置,你已经实现了Spring MVC中基于XML的视图渲染机制。虽然实际项目中更多使用@RestController + @ResponseBody自动转换,但在需要精细控制视图行为时,这种方案依然有价值。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

115

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

31

2026.01.26

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

419

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

servlet生命周期
servlet生命周期

Servlet生命周期是指Servlet从创建到销毁的整个过程。本专题为大家提供servlet生命周期的各类文章,大家可以免费体验。

375

2023.08.08

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

463

2023.08.02

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Golang深入理解GPM模型
Golang深入理解GPM模型

共18课时 | 1.6万人学习

HTML 中文开发手册
HTML 中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号