Springmvc數(shù)據(jù)格式化原理及代碼案例
1、簡(jiǎn)介
- Converter可以將一種類型轉(zhuǎn)換成另一種類型,是任意Object之間的類型轉(zhuǎn)換。
- Formatter則只能進(jìn)String與任意Object對(duì)象的轉(zhuǎn)換,它提供解析與格式化兩種功能
- 解析:將String類型字符串轉(zhuǎn)換為任意Objec對(duì)象,
- 格式化:將任意Objec對(duì)象轉(zhuǎn)換為字符串進(jìn)行格式化顯示。
- 使用Formatter
- 實(shí)現(xiàn)Formatter接口定義一個(gè)類,T為要解析得到或進(jìn)行格式化的數(shù)據(jù)類型。
- 在類中實(shí)現(xiàn)兩個(gè)方法
- String print(T t,Locale locale):把T類型對(duì)象解析為字符串形式返回
- T parse(String sourse,Locale locale):由字符串解析得到T類型對(duì)象。
2、示例
2.1、實(shí)體類
package com.yl.bean;
import java.util.Date;
public class User {
private String username;
private Date date;
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", date=" + date +
'}';
}
}
2.2、控制器
package com.yl.controller;
import com.yl.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class UserController {
@RequestMapping("/stringToDate")
public ModelAndView jsonToObject(User user){
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("user",user);
modelAndView.setViewName("success");
System.out.println(user);
return modelAndView;
}
}
2.3、jsp
<form action="${pageContext.servletContext.contextPath}/stringToDate" method="post">
請(qǐng)輸入日期(yyy-mm-dd):<input type="text" name="date"><br>
<button type="submit">提交</button>
</form>
2.4、數(shù)據(jù)格式化類
package com.yl.utils;
import org.springframework.format.Formatter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* 日期格式化
*/
public class DateFormatter implements Formatter<Date> {
/**
* 字符串轉(zhuǎn)Date
* @param text
* @param locale
* @return
* @throws ParseException
*/
@Override
public Date parse(String text, Locale locale) throws ParseException {
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
return sf.parse(text);
}
/**
* Date轉(zhuǎn)字符串
* @param date
* @param locale
* @return
*/
@Override
public String print(Date date, Locale locale) {
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
return sf.format(date);
}
}
2.5、在配置文件注冊(cè)自定義數(shù)據(jù)格式化類
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--指定要掃描的包-->
<context:component-scan base-package="com.yl"></context:component-scan>
<!--配置視圖解析器-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--數(shù)據(jù)格式化工廠-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<list>
<!--自定義格式化類-->
<bean class="com.yl.utils.DateFormatter"/>
</list>
</property>
</bean>
<!-- 設(shè)置靜態(tài)資源不過濾-->
<mvc:default-servlet-handler/>
<!--開啟springmvc注解支持,注冊(cè)自定義數(shù)據(jù)格式化類-->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
</beans>
3、使用注解實(shí)現(xiàn)數(shù)據(jù)格式化
package com.yl.bean;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class User {
private String username;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date;
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", date=" + date +
'}';
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Spring mvc JSON數(shù)據(jù)交換格式原理解析
- Java SpringMVC框架開發(fā)之?dāng)?shù)據(jù)導(dǎo)出Excel文件格式實(shí)例詳解
- springMVC返回復(fù)雜的json格式數(shù)據(jù)方法
- Spring MVC通過添加自定義注解格式化數(shù)據(jù)的方法
- Spring mvc實(shí)現(xiàn)Restful返回json格式數(shù)據(jù)實(shí)例詳解
- Spring mvc實(shí)現(xiàn)Restful返回xml格式數(shù)據(jù)實(shí)例詳解
- SpringMVC中Json數(shù)據(jù)格式轉(zhuǎn)換
- 解決SpringMVC 返回Java8 時(shí)間JSON數(shù)據(jù)的格式化問題處理
- SpringMVC環(huán)境下實(shí)現(xiàn)的Ajax異步請(qǐng)求JSON格式數(shù)據(jù)
相關(guān)文章
Mybatis-Plus根據(jù)自定義注解實(shí)現(xiàn)自動(dòng)加解密的示例代碼
我們把數(shù)據(jù)存到數(shù)據(jù)庫的時(shí)候,有些敏感字段是需要加密的,從數(shù)據(jù)庫查出來再進(jìn)行解密,如果我們使用的是Mybatis框架,那就跟著一起探索下如何使用框架的攔截器功能實(shí)現(xiàn)自動(dòng)加解密吧,需要的朋友可以參考下2024-06-06
Java Web實(shí)現(xiàn)文件下載和亂碼處理方法
文件上傳和下載是web開發(fā)中常遇到的問題。今天小編給大家分享下Java Web實(shí)現(xiàn)文件下載和亂碼處理方法的相關(guān)資料,需要的朋友可以參考下2016-10-10
微信小程序完整項(xiàng)目實(shí)戰(zhàn)記錄(前端+SpringBoot后端)
隨著微信小程序的流行,越來越多的開發(fā)者開始涉足小程序開發(fā),下面這篇文章主要給大家介紹了關(guān)于微信小程序完整項(xiàng)目實(shí)戰(zhàn)的相關(guān)資料,項(xiàng)目包括前端+SpringBoot后端,需要的朋友可以參考下2024-09-09
IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決
最近剛開始學(xué)習(xí)maven,正準(zhǔn)備使用idea創(chuàng)建一個(gè)maven項(xiàng)目練手,卻發(fā)現(xiàn)自己創(chuàng)建的maven項(xiàng)目始終沒有src目錄,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決,需要的朋友可以參考下2023-05-05
java發(fā)送http請(qǐng)求并獲取狀態(tài)碼的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄猨ava發(fā)送http請(qǐng)求并獲取狀態(tài)碼的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05

