返回列表 回复 发帖

没事的时候写的一个Java类

前辈让总结一些可以通用的代码。 才发现自己写的代码复用性这么差。 只找出来了下面的几个方法。 还有那个封装对象的方法是后来加上去的。 本机测试成功了。可能大家会觉得这个方法根本没用。 有ActionForm就行了 而且比我这个方法要强大的多。 不过。 我这里不让用ActionForm. 我又不想重复地进行 request.getParameter这种浪费时间的事 。 就写了这个方法。。
  1. package com.softtech.qihua.action;

  2. import java.util.*;
  3. import java.lang.reflect.*;
  4. import java.text.*;
  5. import javax.servlet.http.HttpServletRequest;
  6. import org.apache.struts.action.ActionError;
  7. import org.apache.struts.action.ActionErrors;
  8. public class method{

  9. private   NumberFormat format = NumberFormat.getInstance();   ///数字格式化对象
  10. private  SimpleDateFormat dateformat = null;   /////日期格式化对象
  11. private  String pattern = "yyyy-MM-dd HH:mm:ss";   ///格式化日期的模式信息

  12. public  String getPattern() {
  13.   return pattern;
  14. }

  15. public  void setPattern(String pattern) {
  16.   this.pattern = pattern;
  17. }

  18. public method() {
  19.   
  20. }

  21. /**四舍五入
  22.   * @param value 要进行四舍五入的数
  23.   *
  24.   * */
  25. public  int round(double value) {
  26.   format.setMaximumFractionDigits(0);
  27.   return Integer.parseInt(format.format(value));
  28. }

  29. /**
  30.   * 四舍五入指定的位数
  31.   * @param value 要进行四舍五入的数
  32.   * @param num 要保存的小数位数
  33.   * */
  34. public  double round(double value,int num) {
  35.   format.setMaximumFractionDigits(num);
  36.   return Double.parseDouble(format.format(value));
  37. }


  38. /**
  39.   * 得到一个指定时间的字符串表示形式
  40.   * @param dates 可选的Date类的对象 返回这个Date对象的字符串表示形式 如果不传入这个参数 默认返回当前时间的字符串表示形式
  41.   * */
  42. public  String getStringOfDate(Date...dates) {
  43.   
  44.   if (this.pattern == null) {
  45.    return null;
  46.   }
  47.   
  48.   try {
  49.   
  50.    dateformat = new SimpleDateFormat(pattern);
  51.   
  52.    if (dates.length >0) {
  53.     return dateformat.format(dates[0]);
  54.    }
  55.    
  56.    return dateformat.format(new Date());
  57.   } catch (Exception e) {
  58.    e.printStackTrace();
  59.    return "";
  60.   }
  61.   
  62. }

  63. /**
  64.   * 根据字符串得到Date类的对象
  65.   * @param value 保存有时间的字符串值
  66.   * @return date
  67.   * */
  68. public  Date getDateOfString(String value) {
  69.   
  70.   if (pattern == null) {
  71.    return null;
  72.   }
  73.   
  74.   try {
  75.    dateformat = new SimpleDateFormat(pattern);
  76.    return dateformat.parse(value);
  77.   } catch (Exception e) {
  78.    e.printStackTrace();
  79.    return null;
  80.   }
  81. }


  82. /**
  83.   * 对用户提交的参数进行检测的方法
  84.   * @param request
  85.   * @param obj 要将提交的参数封装入的对象
  86.   * @param 必须的参数数组
  87.   * @param 参数的类型数组
  88.   * @param 错误对象
  89.   * @return success 对象是否封装成功 .
  90.   * */
  91. public  boolean checkParameter(HttpServletRequest request,Object obj,String[] parameters,Class[] types,ActionErrors errors) {
  92.   
  93.   
  94.   Class cla = obj.getClass();
  95.   
  96.   try {
  97.    
  98.    for (int i = 0;i<parameters.length;i++) {
  99.     String value = request.getParameter(parameters[i]);
  100.    
  101.     if (value == null || value.trim().length() == 0) {
  102.      errors.add("msg",new ActionError("error.userdefine",parameters[i]+"不能为空!"));
  103.      return false;
  104.     } else {
  105.      String name = Character.toUpperCase(parameters[i].charAt(0)) + parameters[i].substring(1);
  106.      Method me = cla.getDeclaredMethod("set"+name, types[i]);
  107.      me.setAccessible(true);
  108.      
  109.      String ty = types[i].getSimpleName();
  110.      
  111.      if (ty.equals("Integer") || ty.equals("Long") || ty.equals("Short")) {
  112.       if (value.matches("^\\d+$") == false ) {
  113.        errors.add("msg",new ActionError("error.userdefine",parameters[i]+"只能是数字!"));
  114.        return false;
  115.       } else {
  116.        if (ty.equals("Integer")) {
  117.         me.invoke(obj, Integer.parseInt(value));
  118.        } else if (ty.equals("Long")) {
  119.         me.invoke(obj, Long.parseLong(value));
  120.        } else {
  121.         me.invoke(obj, Short.parseShort(value));
  122.        }
  123.       
  124.       }
  125.      } else if (types[i].getSimpleName().equals("Date")) {
  126.       me.invoke(obj, this.getDateOfString(value));
  127.      } else {
  128.       me.invoke(obj, value);
  129.      }
  130.     }
  131.    
  132.    }
  133.   }catch (NoSuchMethodException e) {
  134.    e.printStackTrace();
  135.    errors.add("msg",new ActionError("error.userdefine","参数类型不正确!"));
  136.   } catch (Exception e) {
  137.    e.printStackTrace();
  138.   }
  139.   return true;
  140. }

  141. public static void main(String[] args) {
  142.   try {
  143.   

  144.    
  145.   } catch (Exception e) {
  146.    e.printStackTrace();
  147.   }
  148. }


  149. }
复制代码
不懂哦`
  我没学过JAVA
还是辛苦你啦~!!!
太感谢楼主了,我刚好在学JAVA 呢?
刚好用上。。。
恩,比较不错,有时间多多交流交流!
返回列表