正在加载...
 
 登 录/注 册    帮助  |  反馈
相关主题:
    管 理  员:
    关 键  字:
    目 标 :[ 目标剩余时间: ]
    似乎已经突破了一种程序语言的界限,做的这么大而全,不知道到底是不是好事?
        
    作者
        几个实用的工具类   [2007-02-02]回复
    专家用户
    参与值:1128
    贡献值:23

    1、自定义格式取当期日期: 

    public String getMyDate(int type)
     {
      String date="";  
         Calendar cal = Calendar.getInstance();
         int pm_am=cal.get(Calendar.AM_PM);    
         int hour=cal.get(Calendar.HOUR);
         if(pm_am==Calendar.PM) hour+=12;
        
         switch(type)
         {
         case 1:        //yyyy-mm-dd
          date+=cal.get(Calendar.YEAR)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.DATE);
          break;
         case 2:        //yyyy-mm-dd hh:mi:ss
          date+=cal.get(Calendar.YEAR)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.DATE)
           +" "+hour+":"+cal.get(Calendar.MINUTE)+":"+ cal.get(Calendar.SECOND);
          break;
         default:
          date+=null;
         }
          return date;
     }

    2、计算两时间差(天):

     /*
       * Method:输出两日期差,单位(天)
       */
      public long getQuot(String time1, String time2)
      {
       long quot = 0;
       SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
       try {
       Date date1 = ft.parse( time1 );
       Date date2 = ft.parse( time2 );
       quot = date1.getTime() - date2.getTime();
       quot = quot / 1000 / 60 / 60 / 24;
       } catch (ParseException e) {
       e.printStackTrace();
       }
       return quot;
      }

    3、转MYSQL的datetime日期类型:

    /*
      * Date类型转换为MYSQL DateTime类型
      */
      public static String DateToMySQLDateTimeString(String date)
      {
       final String[] MONTH = {"Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Oct","Nov","Dec",};
       StringBuffer ret = new StringBuffer();
       String dateToString = date.toString();  //like "Sat Dec 17 15:55:16 CST 2005"
       ret.append(dateToString.substring(24,24+4));//append yyyy
       String sMonth = dateToString.substring(4,4+3);
       for(int i=0;i<12;i++) {      //append mm
        if(sMonth.equalsIgnoreCase(MONTH[i])) {
         if((i+1) < 10)
          ret.append("-0");
         else
          ret.append("-");
         ret.append((i+1));
         break;
        }
       }  
       ret.append("-");
       ret.append(dateToString.substring(8,8+2));
       ret.append(" ");
       ret.append(dateToString.substring(11,11+8)); 
       return ret.toString();
      }

    5、MD5加密方法:

     // MD5加密方法
     public static String change2MD5(String srcString)
     {
      MessageDigest md = null;
            try
            {
                md = MessageDigest.getInstance("MD5");
            }
            catch (NoSuchAlgorithmException nsae)
            {
                return "";
            }

            byte[] md5Bytes = md.digest(srcString.getBytes());
            int tmpInt = 0;
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < md5Bytes.length; i++)
            {
                tmpInt = (int) (md5Bytes[i] & 0xff);
                if (tmpInt < 16)
                {
                    sb.append("0");
                }
                sb.append(Integer.toHexString(tmpInt));
            }
            return sb.toString();
     }
    }

    6、判断字符是否为0-9和英文字符:

    // 判断字符串是否为合法字符
     public static boolean isRegStr(String Str)
     {
      boolean flag=true;
      Pattern p=null;
      Matcher m=null;
      try
      {
       p = java.util.regex.Pattern.compile("[^0-9A-Za-z]");
       m = p.matcher(Str);
       if(m.find()) flag=false;    
      }catch(Exception e)
      {}    
      return flag;
     }

    7、判断邮件格式是否合法:

    /*

    *判断邮件格式

    */

    public static boolean isEmail(String str)
     {
      if(str.length()<6||str.indexOf('@',0)==-1||str.indexOf('.',0)==-1)
      {
       return false;
      }
      else
      {
       return true;
      }
     }

    8、替换换行与HTML符号:

     //替换换行符号 
     public static String converLine(String str)
     {
      return str.replaceAll("\n", "<br />");
     }
     
     //替换HTML符
     public static String converHtmlChar(String str)
     { 
      str = str.replaceAll("&", "&amp;");
      str = str.replaceAll(" ", "&nbsp;");
      str = str.replaceAll("<", "&lt;");
      str = str.replaceAll(">", "&gt;");
      str = str.replaceAll("\"", "&quot");
      return str;
     }

    9、分割字符的方法:

    //字符分割方法 
        public static final String[] split(String str, String delims)
        {
            StringTokenizer st = new StringTokenizer(str, delims);
            ArrayList list = new ArrayList();
            for(; st.hasMoreTokens(); list.add(st.nextToken()));
            return (String[])list.toArray(new String[list.size()]);
        }
     

    10、JSP与Servlet处理字符乱码方式:

    // 用于读数据库时由iso8859-1变为GBK
     public static String GBKConverter(String s_string){
      try{
      String des = new String(s_string.getBytes("iso8859-1"),"gb2312");
      return des;
      }
      catch(Exception ex){
      String des="";
      return des;
      }
     }
     
     // 用于处理页内生成的中文数据在写入数据库时的处理,由GBK变为iso8859-1
     public static String ISOConverter(String s_string){
      try{
      String des  =  new String(s_string.getBytes("gb2312"),"iso8859-1");
      return des;
      }
      catch(Exception ex){
      String des = "";
      return des;
      }
     }

    11、从数据源获取connection:

     //从数据库源获取数据连接
     public static Connection getConnectionFromDs()
     {
      Connection con=null;
      DataSource ds=null;
      Context context=null;
      
      try {
       //1连接到JNDI服务器
       context=new InitialContext();
       //2获取数据库源
       ds=(DataSource)context.lookup("java:comp/env/jdbc/mysql-local");
       con=ds.getConnection();
       System.out.println("已获取数据库连接池!!");
      } catch (NamingException e) {
       e.printStackTrace();
      } catch (SQLException e) {   
       e.printStackTrace();
      }
      return con;  
     }

    12、生成4位图片验证码:

    public class CreateValidateCode extends HttpServlet {
     //  生成随机种子
     Random random = new Random();
     
     public void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      processRequest(request, response);
     }

     public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      processRequest(request, response);
     }

     protected void processRequest(HttpServletRequest request,
       HttpServletResponse response) throws ServletException, IOException {
      response.setContentType("image/jpeg");
      response.setHeader("Pragma", "No-cache");
      response.setHeader("Cache-Control", "no-cache");
      response.setDateHeader("Expires", 0);
      HttpSession session = request.getSession(true);

      // 在内存中创建图象
      int width = 50, height = 25;
      BufferedImage image = new BufferedImage(width, height,
        BufferedImage.TYPE_INT_RGB);

      // 获取图形上下文
      Graphics g = image.getGraphics();

      // 设定背景色
      g.setColor(getRandColor(200, 250));
      g.fillRect(0, 0, width, height);

      // 设定字体
      g.setFont(new Font("Georgia", Font.BOLD, 16));

      // 画边框
      // g.setColor(getRandColor(0,0));
      // g.drawRect(0,0,width-1,height-1);

      // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
      g.setColor(getRandColor(160, 220));
      for (int i = 0; i < 155; i++) {
       int x = random.nextInt(width);
       int y = random.nextInt(height);
       int xl = random.nextInt(12);
       int yl = random.nextInt(12);
       g.drawLine(x, y, x + xl, y + yl);
      }
        
      // 取随机产生的认证码(4位数字)
      String sRand = "";
      for (int i = 0; i < 4; i++) {
       String rand = createRandStr();
       sRand += rand;
       // 将认证码显示到图象中
       g.setColor(new Color(40 + random.nextInt(110), 40 + random
         .nextInt(110), 40 + random.nextInt(110)));
       // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
       g.drawString(rand, 10 * i + 3, 18);
      }

      // 将认证码存入SESSION
      session.setAttribute("rand", sRand);
      // 图象生效
      g.dispose();
      ServletOutputStream responseOutputStream = response.getOutputStream();
      // 输出图象到页面
      ImageIO.write(image, "JPEG", responseOutputStream);

      // 以下关闭输入流!
      responseOutputStream.flush();
      responseOutputStream.close();
     }

     public String createRandStr()
     {
      //Random random = new Random();
      String str="";
      String[] arr={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
       
      //for(int i=0;i<4;i++)
      //{
       int rand=random.nextInt(61);
       str=arr[rand];
      //}
      return str;
     }
     
     Color getRandColor(int fc, int bc) {
      // 给定范围获得随机颜色
      Random random = new Random();
      if (fc > 255)
       fc = 255;
      if (bc > 255)
       bc = 255;
      int r = fc + random.nextInt(bc - fc);
      int g = fc + random.nextInt(bc - fc);
      int b = fc + random.nextInt(bc - fc);
      return new Color(r, g, b);
     }

    }

    发表评论:

    ©2006-2008 深圳市海为信息技术有限公司  关于i170 | 工作机会 | 联系我们            粤ICP备05095695号