Spring MVC系列:(4)日期轉換器和編碼過濾器


一、String類型轉換爲日期(Date)類型
java

在默認狀況下,springmvc不能將String類型轉成Date類型,必須自定義類型轉換器web

public class EmpAction  extends AbstractCommandController{

	@Override
	protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
		binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
	}


}


完整的EmpAction.javaspring

package com.rk.web.action;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;

import com.rk.web.entity.Employee;

public class EmpAction  extends AbstractCommandController{
	public EmpAction(){
		this.setCommandClass(Employee.class);
	}
	
	@Override
	protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
		binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
	}

	@Override
	protected ModelAndView handle(HttpServletRequest request,HttpServletResponse response, Object command, BindException errors) throws Exception {
		System.out.println("EmpAction.handle()");
		ModelAndView modelAndView = new ModelAndView();
		Employee emp = null;
		if(command instanceof Employee){
			emp = (Employee) command;
		}
		modelAndView.addObject("id", emp.getId());
		modelAndView.addObject("name", emp.getName());
		modelAndView.addObject("gender", emp.getGender());
		modelAndView.addObject("hiredate", emp.getHiredate());
		
		modelAndView.setViewName("/jsp/success.jsp");
		return modelAndView;
	}

}


二、解決中文亂碼
mvc

spring(並不是springmvc)提供的,專用於解決POST提交中文亂碼問題,須要在web.xml文件中配置app

  <!-- 編碼過濾器 -->
  <filter>
  	<filter-name>CharacterEncodingFilter</filter-name>
  	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  	<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>CharacterEncodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>


完整的web.xml框架

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>springmvc01</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 註冊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-helloworld.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>*.action</url-pattern>
  </servlet-mapping>
  
  <!-- 編碼過濾器 -->
  <filter>
  	<filter-name>CharacterEncodingFilter</filter-name>
  	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  	<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>CharacterEncodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>


字符串轉換日期類型、中文編碼測試以下:jsp

wKiom1ffDwSitH7cAAD5ze3CjtQ564.gif

相關文章
相關標籤/搜索