zoukankan      html  css  js  c++  java
  • springMVC的一些工具类

    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>
     * &#064;InitBinder
     * public void initBinder(WebDataBinder binder) {
     *     binder.registerCustomEditor(Date.class, new DateConvertEditor());
     *     // binder.registerCustomEditor(Date.class, new
     *     // DateConvertEditor(&quot;yyyy-MM-dd&quot;));
     *     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;
        }
    
    }
  • 相关阅读:
    Halcon二维仿射变换实例探究
    redis主从+哨兵实战
    单点安装redis+哨兵
    一个学习技术不错的网站
    reset master 不能乱用呀
    MySQL 5.7基于GTID的主从复制实践
    『浅入深出』MySQL 中事务的实现
    使用二进制包安装mysql
    jenkins+gitlab
    mysql的Innodb存储引擎提一嘴
  • 原文地址:https://www.cnblogs.com/zrui-xyu/p/5195870.html
Copyright © 2011-2022 走看看