news 2026/6/25 13:11:11

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/6/25 11:19:11

MATLAB 探索声发射波形:参数计算与谱绘制

MATLAB计算给定声发射波形的基本参数和特征参数、绘制单边振幅谱 在材料科学和无损检测等领域&#xff0c;声发射技术作为一种重要的监测手段&#xff0c;能够捕捉到材料内部结构变化时产生的弹性波信号&#xff0c;也就是声发射波形。借助 MATLAB 强大的计算和绘图能力&#x…

作者头像 李华
网站建设 2026/6/25 11:17:16

大型流水线贴膜机项目程序:初学者的福音

大型流水线贴膜机完成项目程序&#xff0c;包含PLC程序和触摸屏程序&#xff0c;程序内 包含上下气缸控制&#xff0c;夹紧气缸控制&#xff0c;输送带电机控制&#xff0c;贴膜伺服控制&#xff0c;旋转电机控制等类容&#xff0c;非常适合学习简单控制工艺及运动控制初学者学…

作者头像 李华
网站建设 2026/6/15 20:57:59

电场流线生成技巧

comsol针尖刺穿表皮细胞数值模拟&#xff0c;可以得到组织细胞浓度分布及电磁场分布&#xff0c;最近在搞生物电穿孔的模拟&#xff0c;拿COMSOL折腾了个针尖刺穿表皮细胞的模型。这玩意儿能同时看到细胞被扎穿时的离子浓度变化和电场分布&#xff0c;特别适合研究微针给药时的…

作者头像 李华
网站建设 2026/6/17 22:39:13

产业链影响:上游受益,下游分化,本土配套加速

产业链影响&#xff1a;上游受益&#xff0c;下游分化&#xff0c;本土配套加速 上游&#xff08;芯片配套 / 服务器 / 数据中心&#xff09;&#xff1a;英伟达在华研发、生产、供应链投入&#xff08;如上海张江基地&#xff09;&#xff0c;将带动 PCB、散热、服务器制造、数…

作者头像 李华
网站建设 2026/6/17 2:10:02

吉时利2400 2410 2430精密数字源表

‌吉时利2400是Tektronix&#xff08;原Keithley&#xff09;推出的图形化系列源测量单元&#xff08;SMU&#xff09;‌&#xff0c;集精密电压/电流源与测量功能于一体&#xff0c;配备触摸屏界面&#xff0c;适用于半导体、医疗等领域的精密电子测试。‌‌ 1‌‌ 2 核心功能…

作者头像 李华
网站建设 2026/6/19 10:17:02

极简排班(安卓)手机端免费排班工具,轮班倒班轻松记录

多数排班工具都以电脑端为主&#xff0c;而这款极简排班专为安卓手机打造&#xff0c;用手机随时查看、设置排班更便捷&#xff0c;且目前完全免费&#xff0c;适配日常排班记录、轮班制办公需求 软件下载地址 软件操作极简&#xff0c;上手无门槛&#xff1a;先添加班次&…

作者头像 李华