SpringMVC的数据格式化-注解驱动的属性格式化

一、什么是注解驱动的属性格式化?

--在bean的属性中设置,SpringMVC处理 方法参数绑定数据、模型数据输出时自动通过注解应用格式化的功能。


二、注解类型

1.DateTimeFormat


@DateTimeFormat注解可以对java.util.Date、java.util.calenda等时间类型的属性进行标注。

DateTimeFormat最常用的属性就是 pattern,类型为String,使用自定义的时间格式化字符串,如yyyy-MM-dd


2.NumberFormat

@NumberFormat可以对类似数字类型的属性进行标注,它拥有两个互斥的属性。

*pattern。类型为String,使用自定义的数字格式化串,如#,###

  *style。类型是NumberFormat.Style,它有几个常用的可选值:


CURRENCY:货币类型
NUMBER:正常数字类型

PERCENT:百分数类型


实例:

1.导入所需jar包

2.在web.xml配置前端控制器

<!-- 配置springmvc的前端控制器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-config.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

3.编写一个实体类

package com.dj.pojo;

import java.io.Serializable;
import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style;

public class User implements Serializable{

	//日期类型
	@DateTimeFormat(pattern="yyyy-MM-dd")
	private Date birthday;
	//正常数据类型
	@NumberFormat(style=Style.NUMBER,pattern="#,###")
	private int total;
	//百分数类型
	@NumberFormat(style=Style.PERCENT)
	private double discount;
	//货币类型
	@NumberFormat(style=Style.CURRENCY)
	private double money;
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public int getTotal() {
		return total;
	}
	public void setTotal(int total) {
		this.total = total;
	}
	public double getDiscount() {
		return discount;
	}
	public void setDiscount(double discount) {
		this.discount = discount;
	}
	public double getMoney() {
		return money;
	}
	public void setMoney(double money) {
		this.money = money;
	}
}

4.编写一个controller

package com.dj.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.dj.pojo.User;

@Controller
public class UserController {

	/**
	 * 动态跳转页面
	 * @param pagename
	 * @return
	 */
	@RequestMapping(value="/{pagename}")
	public String index(@PathVariable String pagename){
		return pagename;
	}
	/**
	 * 跳转到显示格式化后数据的页面
	 * @param user
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/test",method=RequestMethod.POST)
	public String test(@ModelAttribute User user,Model model){
		model.addAttribute("user",user);
		return "success";
		
	}
}

5.编写一个测试的表单页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="test" method="post">
	日期类型:<input type="text" id="birthday" name="birthday"/><br>
	整数类型:<input type="text" id="total" name="total"/><br>
	百分数类型:<input type="text" id="discount" name="discount"/><br>
	货币类型:<input type="text" id="money" name="money"/><br>
	<input type="submit" value="提交"/>
	</form>
</body>
</html>
6.编写一个测试显示格式化后的数据的页面。如果希望在视图页面中将模型数据以格式化的方式进行渲染,则需要使用spring的页面标签。

 <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<form:form modelAttribute="user" method="post" action="">
		日期类型:<form:input path="birthday"/><br>
		整数类型:<form:input path="total"/><br>
		百分数类型:<form:input path="discount"/><br>
		货币类型:<form:input path="money"/><br>
	</form:form>

7.最后编写配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
         http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-4.0.xsd">

	<!-- spring可以自动去扫描base-package下面的包或者子包下面的java类 如果扫描到有spring相关注解的类,则吧这个类注册为spring的bean -->
	<context:component-scan base-package="com.dj.controller" />
	<!-- 默认装配 -->
	<mvc:annotation-driven></mvc:annotation-driven>
	<!-- 视图解析器 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 前缀 -->
		<property name="prefix">
			<value>/</value>
		</property>
		<!-- 后缀 -->
		<property name="suffix">
			<value>.jsp</value>
		</property>
	</bean>
</beans>

8.最后进行测试





测试成功!



原文地址:https://www.cnblogs.com/dj-blog/p/7534907.html