news 2026/4/3 3:39:10

Spring MVC 响应机制综合实践:页面、数据、JSON 与响应配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring MVC 响应机制综合实践:页面、数据、JSON 与响应配置

Spring MVC 响应机制的核心方式

返回视图(页面渲染)
通过返回视图名称(如return "home"),配合视图解析器(InternalResourceViewResolver)定位到/WEB-INF/views/home.jsp等具体页面。需在配置中定义视图前缀和后缀:

@Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; }

返回纯文本或HTML
使用@ResponseBody注解直接返回字符串内容,适用于简单文本或HTML片段:

@GetMapping("/text") @ResponseBody public String rawText() { return "<h1>Hello World</h1>"; }

JSON 响应处理

自动序列化对象为JSON
结合@RestController@ResponseBody,Spring 默认使用 Jackson 将对象序列化为 JSON:

@GetMapping("/user") public User getUser() { return new User("Alice", 25); }

需添加 Jackson 依赖(如spring-boot-starter-json)。

定制JSON字段
通过@JsonIgnore忽略字段,@JsonProperty重命名字段:

public class User { @JsonProperty("username") private String name; @JsonIgnore private String password; }

响应头与状态码控制

手动设置状态码
使用ResponseEntity自定义状态码和响应头:

@GetMapping("/custom") public ResponseEntity<String> customResponse() { HttpHeaders headers = new HttpHeaders(); headers.add("X-Custom-Header", "value"); return new ResponseEntity<>("Custom Body", headers, HttpStatus.CREATED); }

重定向与转发
通过redirect:前缀实现重定向,或返回ModelAndView进行转发:

@GetMapping("/redirect") public String redirect() { return "redirect:/new-url"; }

全局响应配置

统一响应格式
使用@ControllerAdvice定义全局响应封装:

@ControllerAdvice public class GlobalResponseHandler implements ResponseBodyAdvice<Object> { @Override public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) { return true; } @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { return new ResponseWrapper<>(200, "success", body); } }

CORS 跨域配置
在配置类中全局启用 CORS:

@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("*") .allowedMethods("GET", "POST"); } }

异常处理与错误响应

统一异常处理
通过@ExceptionHandler捕获异常并返回结构化错误信息:

@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<ErrorResponse> handleException(Exception ex) { ErrorResponse error = new ErrorResponse(500, ex.getMessage()); return ResponseEntity.status(500).body(error); } }

自定义错误页面
配置ErrorViewResolver或定义/error映射:

@Controller public class ErrorController implements ErrorController { @RequestMapping("/error") public String handleError(HttpServletRequest request) { Integer status = (Integer) request.getAttribute("javax.servlet.error.status_code"); return status == 404 ? "error-404" : "error-general"; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 1:30:47

宽带全息超表面模型的FDTD仿真与复现探索

宽带全息超表面模型 金属纳米孔 fdtd仿真 复现论文&#xff1a;2018年博士论文&#xff1a;基于纳米孔阵列超表面的全息显示技术研究 论文介绍&#xff1a;单元结构为金属纳米孔阵列&#xff0c;通过调整纳米孔的转角调控几何相位&#xff0c;全息的计算由标量衍射理论实现&…

作者头像 李华
网站建设 2026/4/1 0:21:42

探索MATLAB下冷热电气多能互补微能源网的稳健优化调度

MATLAB综合能源程序&#xff0c;对应文章《冷热电气多能互补的微能源网鲁绑优化调度》 针对综合能源系统&#xff0c;研究考虑碳排放的优化调度&#xff0c;建立风电光伏P2G燃气轮机等多能耦合元件的运行特性模型&#xff0c;电、热&#xff0c;冷&#xff0c;气多能稳态能流模…

作者头像 李华
网站建设 2026/3/25 6:05:59

Sentinel 网关流控实现原理

网关流量控制 Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。 Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块&#xff0c;此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑&#xff1a; GatewayFlowRule&#xff…

作者头像 李华
网站建设 2026/3/25 12:26:41

探索 IEEE33 节点配电网模型:MATLAB 中的潮流与故障仿真之旅

IEEE33节点配电网模型&#xff0c;附带有详细节点数据以及文献出处来源&#xff0c;MATLAB&#xff0c;simulink各个版本均可运行&#xff0c;可以进行潮流计算以及四种常见故障波形仿真&#xff0c;可以更换线路模型&#xff0c;分布参数模型用于故障仿真&#xff08;50km线路…

作者头像 李华
网站建设 2026/3/29 2:31:16

《程序化内容生成可控性与随机性平衡实操指南》

程序化内容生成的核心痛点从不是生成效率的提升,而是可控性与随机性的失衡带来的内容价值折损,这种折损在实际场景中往往以更隐蔽且致命的形式存在——可控过满时,内容会陷入机械复刻的同质化泥沼,比如同一主题的图文生成中,文案句式高度雷同、配图风格固化到一眼就能辨识…

作者头像 李华
网站建设 2026/3/26 14:51:51

OpenScenario场景仿真搭建:开启自动驾驶仿真新征程

OpenScenario场景仿真搭建 &#xff0c; OpenScenario是 自动驾驶仿真软件carla推出来的场景仿真标准&#xff0c;可配合carla一起完成整套自动驾驶的闭环仿真过程&#xff0c;将场景搭建变成可编程化的方式。 可以模拟出自动驾驶真实环境中出现的各种各样的路况环境&#xff0…

作者头像 李华