news 2026/4/18 4:30:31

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/8 20:41:02

研发需求排期实战指南:工具选型、流程搭建与效能提升

在研发项目节奏日益加快、需求来源日趋多元的今天&#xff0c;混乱的需求排期往往会导致研发资源浪费、项目延期交付、团队精力内耗等一系列问题。然而&#xff0c;需求的繁杂并非最棘手的——棘手的是无法在业务价值、研发成本与时间周期之间找到平衡。研发需求排期工具的核心…

作者头像 李华
网站建设 2026/4/9 14:02:08

破解协作低效难题:中小企业流程数字化工具及核心策略

在数字化转型浪潮下&#xff0c;中小企业面临着流程繁琐、协作低效、数据孤岛、成本高企等诸多痛点。相较于大型企业&#xff0c;中小企业资源有限、人员精简、业务灵活&#xff0c;传统的纸质流程或零散的办公软件早已无法满足高效运营的需求。然而&#xff0c;转型的难点并非…

作者头像 李华
网站建设 2026/4/18 4:29:49

探索基于SPWM的异步电机无速度传感器矢量控制

基于SPWM的异步电机无速度传感器矢量控制。 在电机控制领域&#xff0c;基于SPWM&#xff08;正弦脉宽调制&#xff09;的异步电机无速度传感器矢量控制技术犹如一颗璀璨的明珠&#xff0c;正逐渐成为众多工程师和研究人员关注的焦点。今天&#xff0c;咱们就来深入探究一番。…

作者头像 李华
网站建设 2026/4/8 5:00:26

【图像加密】基于DCT变换的图像加密与解密附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

作者头像 李华
网站建设 2026/4/8 17:44:20

氢燃料电池Simulink仿真:探索温度与氧气压力的影响

不同温度&#xff0c;不同氧气压力下的氢燃料电池simulink仿真模型 在清洁能源领域&#xff0c;氢燃料电池凭借其高效、环保等特性&#xff0c;正逐渐崭露头角。今天咱们就来聊聊如何搭建不同温度、不同氧气压力下的氢燃料电池Simulink仿真模型&#xff0c;这可对深入理解其性…

作者头像 李华