• 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://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-by-leetcode/
    Question_add-two-numbers
    leetcode merge-two-sorted-lists
    leetcode 1108
    leetcode 1107
    git
    sql 语句
    cas
    OMP 算法
    OC----预处理器
  • 原文地址:https://www.cnblogs.com/dj-blog/p/7534907.html
Copyright © 2020-2023  润新知