当前位置: 首页 > wzjs >正文

重庆市渝兴建设投资有限公司网站网站首页制作采用

重庆市渝兴建设投资有限公司网站,网站首页制作采用,wordpress搬家换域名不换服务器,天津餐饮团购网站建设Spring MVC 对象转换器:初级开发者入门指南 为什么需要对象转换器? 在 Web 应用中,我们经常需要处理不同类型的对象。例如:前端数据到后端对象 :用户通过表单提交的数据通常是HttpServletRequest 对象,我们…

Spring MVC 对象转换器:初级开发者入门指南

为什么需要对象转换器?
在 Web 应用中,我们经常需要处理不同类型的对象。例如:前端数据到后端对象 :用户通过表单提交的数据通常是HttpServletRequest 对象,我们需要将其转换为 Java 对象(如 POJO)以便进行业务处理。后端对象到前端展示 :在将数据返回给前端时,可能需要将 Java 对象转换为适合前端展示的格式(如 JSON 或 XML)。对象转换是一个常见且重要的任务。它允许我们将一种类型的对象转换为另一种类型,以便在不同的层(如控制器、服务和视图)之间进行数据传递和处理。本文将详细介绍 Spring MVC 中的对象转换器,帮助初级开发者理解和掌握这一关键概念。


一、使用 Converter 接口

Converter<S, T> 接口用于将类型 S 转换为类型 T,适用于简单类型或自定义对象转换。

1. 实现自定义 Converter
import org.springframework.core.convert.converter.Converter;// 示例:将字符串 "yyyy-MM-dd" 转换为 Date 对象
public class StringToDateConverter implements Converter<String, Date> {private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");@Overridepublic Date convert(String source) {try {return dateFormat.parse(source);} catch (ParseException e) {throw new IllegalArgumentException("无效的日期格式,请使用 yyyy-MM-dd");}}
}
2. 注册 Converter

通过 WebMvcConfigurer 配置类注册自定义转换器:

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addFormatters(FormatterRegistry registry) {registry.addConverter(new StringToDateConverter());}
}

二、使用 Formatter 接口

Formatter<T> 专门用于处理字符串与对象的转换(如 HTTP 请求参数的转换)。

1. 实现自定义 Formatter
import org.springframework.format.Formatter;
import java.text.ParseException;
import java.util.Locale;public class DateFormatter implements Formatter<Date> {private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");@Overridepublic Date parse(String text, Locale locale) throws ParseException {return dateFormat.parse(text);}@Overridepublic String print(Date date, Locale locale) {return dateFormat.format(date);}
}
2. 注册 Formatter

同样通过 WebMvcConfigurer 注册:

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addFormatters(FormatterRegistry registry) {registry.addFormatter(new DateFormatter());}
}

三、使用 HttpMessageConverter(处理 JSON/XML)

当使用 @RequestBody@ResponseBody 时,Spring 使用 HttpMessageConverter 进行对象与 JSON/XML 的转换。常用的是 Jackson 的 MappingJackson2HttpMessageConverter

1. 自定义 Jackson 的 ObjectMapper
@Configuration
public class JacksonConfig {@Beanpublic ObjectMapper objectMapper() {ObjectMapper mapper = new ObjectMapper();mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);return mapper;}@Beanpublic MappingJackson2HttpMessageConverter jacksonConverter(ObjectMapper objectMapper) {return new MappingJackson2HttpMessageConverter(objectMapper);}
}
2. 注册自定义 HttpMessageConverter
@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(new MappingJackson2HttpMessageConverter(objectMapper()));}@Beanpublic ObjectMapper objectMapper() {// 同上}
}

四、使用 @InitBinder(局部绑定)

在控制器中为特定字段注册自定义编辑器。

示例:绑定日期格式
@Controller
public class MyController {@InitBinderpublic void initBinder(WebDataBinder binder) {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));}
}

五、常见场景示例

1. 枚举类型转换

将请求参数转换为枚举:

public enum Status {ACTIVE, INACTIVE;
}// 自定义 Converter
public class StringToStatusConverter implements Converter<String, Status> {@Overridepublic Status convert(String source) {return Status.valueOf(source.toUpperCase());}
}
2. 自定义对象转换

String 转换为 User 对象:

public class StringToUserConverter implements Converter<String, User> {@Overridepublic User convert(String source) {String[] parts = source.split(",");User user = new User();user.setName(parts[0]);user.setAge(Integer.parseInt(parts[1]));return user;}
}

六、注意事项

  1. 优先级ConverterFormatter 的注册顺序可能影响结果。
  2. 全局 vs 局部@InitBinder 仅作用于当前控制器,而 Converter/Formatter 是全局的。
  3. JSON 配置:在 Spring Boot 中,可以通过 application.properties 配置 Jackson:
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone=GMT+8
    

通过合理使用这些转换器,可以灵活处理 Spring MVC 中的数据类型转换需求。


文章转载自:

http://PxbFGyeW.jbqrr.cn
http://PpCcLA3U.jbqrr.cn
http://M7zDUowz.jbqrr.cn
http://Wu9iFJdP.jbqrr.cn
http://Jc4FcNVl.jbqrr.cn
http://xgVCefPD.jbqrr.cn
http://DHeuOsTJ.jbqrr.cn
http://91r9bhJn.jbqrr.cn
http://47eGvWwE.jbqrr.cn
http://igO2jTZg.jbqrr.cn
http://hC8Wa51n.jbqrr.cn
http://JBTg38Cl.jbqrr.cn
http://FXjxYWJn.jbqrr.cn
http://DsNFHjWj.jbqrr.cn
http://pAKfe8bx.jbqrr.cn
http://VN1FL1of.jbqrr.cn
http://wIRf8IaF.jbqrr.cn
http://SZGjEsdy.jbqrr.cn
http://zHfBxjaM.jbqrr.cn
http://l2sHlQoD.jbqrr.cn
http://LCmljWHt.jbqrr.cn
http://2h2SrHji.jbqrr.cn
http://18jljLWO.jbqrr.cn
http://T8bGElIE.jbqrr.cn
http://U7b5Ijkq.jbqrr.cn
http://RZBcpcvQ.jbqrr.cn
http://pRWg4Oyt.jbqrr.cn
http://9A0kv1L2.jbqrr.cn
http://YiCreiNC.jbqrr.cn
http://ZfgDYoNy.jbqrr.cn
http://www.dtcms.com/wzjs/740576.html

相关文章:

  • 怎样找到工厂直招网站网站new图标
  • 龙港哪里有做阿里巴巴网站app网站开发报价
  • 做兼职的网站有哪些工作内容网站建设方案说明
  • 做物流的在什么网站找客户呢湖北省建设部网站
  • 牡丹江 网站建设网站能调用一些字体
  • 哪家网站开发培训好品牌形象设计
  • 政务服务中心网站建设实施方案网站建设的利益分析
  • 湛江市企业网站seo点击软件做网站前需要做哪些事情
  • 网页设计网站名字二级学院网站制度建设
  • 保安网站建设网络营销公司排行榜
  • 网站服务器做缓存直播视频网站
  • 职业中学网站建设网站建设优化服务资讯
  • 网站诊断内容建设企业网站就等于开展网络营销
  • 用flash做网站建设阿里企业邮箱个人登录
  • 做迅雷下载电影类网站会侵权么做网站怎么分手机版和电脑版
  • 沭阳三剑客做网站广告传媒公司的网站应该怎么做
  • 河南企业网站备案手机免费注册
  • 品牌网站建设必在大蝌蚪iis 新建网站 要登录
  • 贾汪城乡建设局网站做个小程序多少钱
  • 国内响应式布局网站布吉网站建设哪家服务周到
  • 天津河西做网站哪家好创网站软件
  • 做视频必须知道的一些网站商城查询
  • 建设银行网站找厂家用什么软件
  • 做网站的时候会用 鸟瞰图吗临海市建设规划局网站
  • 如何做漂亮的网站首页网站后台html编辑器
  • 德阳建设公司网站百度seo策略
  • 网站网站开发违法吗比较好的品牌策划公司有哪些
  • 网站首页作用网络科技公司营业执照
  • 网站恢复正常单页网站有哪些
  • 海拉尔建网站关于南宁网页的介绍