您的位置:首页 > 编程语言 > Java开发

springMVC的一些工具类

2016-02-17 16:46 405 查看
springMVC的一些工具类,主要有转换器,读取器

读取文件:

package cn.edu.hbcf.common.springmvc;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

public class CustomizedPropertyConfigurer extends PropertyPlaceholderConfigurer{

private static Map<String, Object> ctxPropertiesMap;

@Override
protected void processProperties(
ConfigurableListableBeanFactory beanFactoryToProcess,
Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
ctxPropertiesMap = new HashMap<String, Object>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
ctxPropertiesMap.put(keyStr, value);
}

}

public static Object getContextProperty(String name) {
return ctxPropertiesMap.get(name);
}
}


springMVC中日期转换:

package cn.edu.hbcf.common.springmvc;

import java.beans.PropertyEditorSupport;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import org.apache.commons.lang.StringUtils;

/**
* spring中日期转换
*
* <pre>
* @InitBinder
* public void initBinder(WebDataBinder binder) {
*     binder.registerCustomEditor(Date.class, new DateConvertEditor());
*     // binder.registerCustomEditor(Date.class, new
*     // DateConvertEditor("yyyy-MM-dd"));
*     binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
* }
* </pre>
*
*
* @author LiPenghui
* @date 2011-8-10 下午1:48:37
*/
public class DateConvertEditor extends PropertyEditorSupport{
private DateFormat format;

public DateConvertEditor(){
this.format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}

public DateConvertEditor(String format){
this.format=new SimpleDateFormat(format);
}

/** Date-->String **/
public String getAsText(){
if(getValue()==null){
return "";
}
return this.format.format(getValue());
}

/** String-->Date **/
public void setAsText(String text){
if(!StringUtils.isNotBlank(text)){
setValue(null);
}else{
try {
setValue(this.format.parse(text));
} catch (ParseException e) {
throw new IllegalArgumentException("不能被转换的日期字符串,请检查!", e);
}
}
}
}


日期另一个转换器(暂时没用到)

package cn.edu.hbcf.common.springmvc;

import java.text.ParseException;
import java.util.Date;

import org.springframework.core.convert.converter.Converter;

import cn.edu.hbcf.common.utils.DateUtils;

public class DateCovertor  implements Converter<String,Date>{

@Override
public Date convert(String date) {
if(date != null){
try {
return DateUtils.convertStringToDate(date, "yyyy-MM-dd HH:mm:ss");

} catch (ParseException e) {
try {
return DateUtils.convertStringToDate(date, "yyyy-MM-dd");
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
return null;
}
}


int类型转换器:

package cn.edu.hbcf.common.springmvc;

import java.beans.PropertyEditorSupport;

import org.springframework.util.StringUtils;

/**
*
* @author QQ int 2012-5-30 类型转换器
*
*/
public class IntegerConvertEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (text == null || text.equals("")) {
text = "0";
}

if (!StringUtils.hasText(text)) {
setValue(null);
} else {
setValue(Integer.parseInt(text));// 这句话是最重要的,他的目的是通过传入参数的类型来匹配相应的databind
}
}

/**
* Format the Date as String, using the specified DateFormat.
*/
@Override
public String getAsText() {

return getValue().toString();
}
}


integer转换器:

package cn.edu.hbcf.common.springmvc;

import org.springframework.core.convert.converter.Converter;
import org.springframework.util.StringUtils;

/**
* Integer转换器
* @author qiangqiang
*
*/
public class IntegerConvertor implements Converter<String,Integer>{

@Override
public Integer convert(String s) {
if("".equals(s)){
return 0;
}

else if (StringUtils.hasText(s)) {
return Integer.parseInt(s);
}
return null;

}

}


接收异常,暂时没用到

package cn.edu.hbcf.common.springmvc;

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

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class MyHandlerExceptionResolver implements HandlerExceptionResolver {

@Override
public ModelAndView resolveException(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3) {
// TODO Auto-generated method stub
return null;
}

}


不知道干嘛用的:

package cn.edu.hbcf.common.springmvc;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.multipart.commons.CommonsMultipartResolver;

/**
* @author 帐前卒
*/
public class MyMultipartResolver extends CommonsMultipartResolver {
private String excludeUrls;
private String[] excludeUrlArray;

public String getExcludeUrls() {
return excludeUrls;
}

public void setExcludeUrls(String excludeUrls) {
this.excludeUrls = excludeUrls;
this.excludeUrlArray = excludeUrls.split(",");
}

/**
* 这里是处理Multipart http的方法。如果这个返回值为true,那么Multipart http body就会MyMultipartResolver 消耗掉.如果这里返回false
* 那么就会交给后面的自己写的处理函数处理例如刚才ServletFileUpload 所在的函数
* @see org.springframework.web.multipart.commons.CommonsMultipartResolver#isMultipart(javax.servlet.http.HttpServletRequest)
*/
@Override
public boolean isMultipart(HttpServletRequest request) {
for (String url : excludeUrlArray) {
// 这里可以自己换判断
if (request.getRequestURI().contains(url)) {
return false;
}
}

return super.isMultipart(request);
}
}


总体类,和springMVC配置中对应:

package cn.edu.hbcf.common.springmvc;

import java.util.Date;

import org.springframework.beans.propertyeditors.StringTrimmerEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.support.WebBindingInitializer;
import org.springframework.web.context.request.WebRequest;

public class MyWebBindingInitializer implements WebBindingInitializer {

public void initBinder(WebDataBinder binder, WebRequest request) {

binder.registerCustomEditor(Date.class, new DateConvertEditor("yyyy-MM-dd"));

binder
.registerCustomEditor(String.class, new StringTrimmerEditor(
false));
binder.registerCustomEditor(int.class, new IntegerConvertEditor());

binder.registerCustomEditor(String[].class, new StringArrayConvertEditor());

}
}


以静态变量保存Spring Application, 可以在任何代码任何地方任何时候取出ApplicationContext

package cn.edu.hbcf.common.springmvc;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
* 以静态变量保存Spring Application, 可以在任何代码任何地方任何时候取出ApplicationContext
*
* @author LiPenghui
*
*/
public class SpringContextHolder implements ApplicationContextAware {

private static ApplicationContext applicationContext;

private static Logger logger = LoggerFactory.getLogger(SpringContextHolder.class);
/**
* 实现ApplicationContextAware接口的context注入函数,将其存入静态变量
*/
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
SpringContextHolder.applicationContext = applicationContext;
logger.debug("SpringContextHolder注入ApplicationContext");
}

/**
* 获取存储在静态变量中的ApplicationContext
*
* @return
*/
public static ApplicationContext getApplicationContext() {
checkApplicationContext();
return applicationContext;
}

/**
* 从静态变量ApplicationContext中获取Bean,自动转型为所赋值对象的类型
* @param <T>
* @param name
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T getBean(String name){
checkApplicationContext();
return (T) applicationContext.getBean(name);
}

@SuppressWarnings("unchecked")
public static <T> T getBean(Class<T> clazz){
checkApplicationContext();
return (T) applicationContext.getBeansOfType(clazz);
}
/**
* 清除ApplicationContext静态变量.
*/
public static void cleanApplicationContext(){
applicationContext=null;
}
/**
* 检查是否获取到了ApplicationContext
*/
private static void checkApplicationContext() {
if (applicationContext == null) {
throw new IllegalStateException(
"applicationContext未注入,请在applicationContext.xml中定义SpringContextHolder");
}
}
}


string数组转换:

package cn.edu.hbcf.common.springmvc;

import java.beans.PropertyEditorSupport;

import org.springframework.util.StringUtils;

public class StringArrayConvertEditor extends PropertyEditorSupport {

@Override
public void setAsText(String text) throws IllegalArgumentException {
if (text == null || text.equals("")) {
text = "";
}

if (!StringUtils.hasText(text)) {
setValue(null);
} else {
setValue(text);// 这句话是最重要的,他的目的是通过传入参数的类型来匹配相应的databind
}
}

/**
* Format the Date as String, using the specified DateFormat.
*/
@Override
public String getAsText() {

return getValue().toString();
}

}


StringConerter

package cn.edu.hbcf.common.springmvc;

import org.springframework.core.convert.converter.Converter;

public class StringConerter implements Converter<String,String>{

@Override
public String convert(String source) {
if(source != null){
return source.trim();
}
return null;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: