整理的java工具类,增至30个!欢迎下载!
分享一下你们的工具类 谢谢。
[工具类] CookieCounter .java.txt
[工具类] 验证码img .jsp.txt
[工具类] Java中计算任意两个日期之间的工作天数 .java.txt
[工具类] java抓取网页 .java.txt
[工具类] MD5 .java.txt
[工具类] MD5强化版 .java.txt
[工具类] MD5超强化版 .java.txt
[工具类] XML 实用工具类 .java.txt
[工具类] XML工具类2 .java.txt
[工具类] 测试Mysql的最大连接数 .java.txt
[工具类] 读取、打印输出、保存xml .java.txt
[工具类] 分页split_page.jsp .jsp.txt
[工具类] 获得汉字拼音首字母的java工具类.java.txt
[工具类] 获取绝对路径 .java.txt
[工具类] 记录log日志文件的工具类 .java.txt
[工具类] 连接数据库的工具类 .java.txt
[工具类] 使用Java程序来实现HTTP文件的队列下载 .java.txt
[工具类] 文件操作工具类 .java.txt
[工具类] 序列化保存为XML文件的工具类 .java.txt
[工具类] 一个压缩工具类.java.txt
[工具类] 用java编写简单UDP网络通信程序 .java.txt
[工具类] 中文验证.jsp.txt
[工具类] 日期DateUtil.java
[工具类] 文件FileUtil.java
[工具类] 通信客户端simpleClient.java
[工具类] 通信服务端simpleServer.java
[工具类] 框架StringUtil.java
[工具类] 时间Time.java
[工具类] 时间工具TimeUtil.java
[工具类] 连数据库ConnectDB.java
package com.common.network; import java.net.*; import java.io.*; /** * * 功能描述:<br /> * 客户端SOCKET应用程序与服务器端SOCKET应用程序的流程很相似,最大的差别在于:<br /> * 1、服务器端SOCKET应用程序主要用于侦听及接收客户端的连接,而客户端的SOCKET 应用程序则用于尝试与服务器端建立连接 * * 2、客户端SOCKET应用程序发送信息指令至服务器端,并接收服务器端所返回的结果; * 而服务器端SOCEKT应用程序则处理指令逻辑,并将结果或错误信息发送至客户端 * * 常见的客户端应用有:<br /> * CHAT客户端,FTP客户端,POP3客户端,SMTP客户端和TELNET客户端<br /> * * 建立客户端SOCKET应用程序的步骤大致如下: * * 1、建立客户端SOCKET,在建立时需指定欲连接服务器端的主机名称(或IP)与INTERNET 通信端口 <br /> * * 2。发送特定信息或指令至服务器端 * * 3、接收服务器端返回的执行结果或错误信息,并以特定格式显示,例如HTTP通信协议会通过 HTML显示 * * 4、当客户端不需服务器端的处理时,便关闭SOCEKT通信链接 * * * @author Administrator * @Date Jul 19, 2008 * @Time 9:53:47 AM * @version 1.0 * */ public class simpleClient { private static Socket socket; public static void main(String[] args) throws Exception { String host; int port; if (args.length < 2) { System.out .println("Usage:java simpleClient [remote IP/Host] [port]"); System.exit(1); } host = args[0]; port = Integer.parseInt(args[1]); connectServer(host, port); } /** * 功能描述:连接服务器 * * @param host * 服务器端的主机名称或者IP地址 * @param port * 服务器端通信端口 */ public static void connectServer(String host, int port) { try { socket = new Socket(InetAddress.getByName(host), port); DataInputStream in = new DataInputStream(socket.getInputStream()); @SuppressWarnings("unused") DataOutputStream out = new DataOutputStream(socket .getOutputStream());// 建立通信通道 byte[] inByte = new byte[1024]; in.read(inByte); String response = new String(inByte, 0, inByte.length); System.out.println("Message from server: "); System.out.println(response.trim()); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } finally { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }?
package com.common.network; import java.net.*; import java.io.*; /** * * 功能描述:<br /> * socket是网络应用程序的核心,在服务器端或客户端网络应用程序中,socket皆为不可缺少的要素 * 在服务器常见的应用有:FTP服务器,MAIL服务器(SMTP,POP3,IMAP4协议),WEB(HTTP协议)。 * * 建立服务器端SOCKET的应用程序步骤如下:<br /> * * 1、建立服务器端的SOCKET,并且以此侦听客户端的连接请求 <br /> * * 2、当服务器端侦测到来自客户端的连接请求时则接收此请求并建立客户端的SOCKET,该SOCEKT将作为 * 客户端连接及后续处理发送及接收数据的依据,至此则完成服务器端与客户端的SOCKET通信链接 * * 3、处理来自客户端的信息,一般称为请求,可视为客户端的指令需求。例如HTTP通信协议的URL请求,<br /> * 或FTP通信协议的FTP命令(如GET,PUT)等;<br /> * * 4、根据客户端传来的请求服务器端需经过程序逻辑处理之后,发送回相对应的招待结果或错误信息至 * 客户端如HTTP服务器须发送回HTML网页内容,而FTP服务器则发送回FTP指令的结果 <br /> * * 5、当程序完成数据或命令的处理之后,便关闭SOCKET通信链接 * * @author Administrator * @Date Jul 19, 2008 * @Time 9:45:54 AM * @version 1.0 */ public class simpleServer { private static ServerSocket serverSocket; public static void main(String[] args) throws Exception { int port; if (args.length == 0) { System.out.println("Usage:java simpleServer [port]"); System.exit(1); } port = Integer.parseInt(args[0]); startServer(port); } /** * 功能描述:启动服务器 * * @param port * 服务器端口 * @throws Exception */ public static void startServer(int port) throws Exception { try { serverSocket = new ServerSocket(port); Thread thread = new Thread(new ListenClient(serverSocket)); thread.start(); } catch (IOException ex) { ex.printStackTrace(); } } } /** * * 功能描述:监听程序 * * @author FangHewei * @Date Jul 19, 2008 * @Time 9:57:53 AM * @version 1.0 * */ class ListenClient implements Runnable { private ServerSocket serverSocket; private Socket clientSocket; DataInputStream in; DataOutputStream out; public ListenClient(ServerSocket serverSocket) throws Exception { this.serverSocket = serverSocket; } @SuppressWarnings("static-access") public void run() { try { while (true) { clientSocket = serverSocket.accept(); System.out.println("Connection from " + clientSocket.getInetAddress().getHostAddress()); in = new DataInputStream(clientSocket.getInputStream()); out = new DataOutputStream(clientSocket.getOutputStream()); String lineSep = System.getProperty("line.separator");// 行分隔符,即回车换行 @SuppressWarnings("unused") InetAddress addr = serverSocket.getInetAddress().getLocalHost(); String outData = "Server Information: " + lineSep + " Local Host: " + serverSocket.getInetAddress().getLocalHost() + lineSep + " port :" + serverSocket.getLocalPort(); byte[] outByte = outData.getBytes(); out.write(outByte, 0, outByte.length); } } catch (Exception ex) { ex.printStackTrace(); } } };?
/* 一个验证图形生成程序. 支持中文的验证码生成程序. 写的时候没有仔细看, 可能有小问题.但是运行没有任何问题. 使用方法 : <tr><td> 验 证 码: </td> <td><input tabindex=3 maxlength=4 size=4 name=yzmimg usage="int" tip="验证码请输入阿拉伯数字!" title="输入阿拉伯数字"/> </td> <td><a href="javascript:refreshImg('validateCodeImg');"><img src="yzmImg.jsp" alt="请在左侧输入对应的阿拉伯数字" name="validateCodeImg" border=0 align="absmiddle" id="validateCodeImg" /></a> 输入对应阿拉伯数字.看不清点请点击更换</td></tr> <script language="javascript" type="text/javascript"> function refreshImg(imgID){var img = document.getElementById(imgID); img.src = img.src;} </script> 生成图形的jsp文件: */ <%@page session="true" contentType="image/jpeg; charset=gb2312" import="java.awt.image.*,java.awt.*" import="java.util.*" import="javax.servlet.*" import="javax.servlet.http.*" import="javax.imageio.*" import="java.io.OutputStream" import="java.io.OutputStream" %><%! private int iCharHeight = 20; private int iCharCnt = 4; private int iMaxOffset = 8; //字符位置左右最大便宜像素 private int iImgWidth = 20*iCharCnt + iMaxOffset*2; //图片宽度 private int iImgHeight = iCharHeight + 5; //图片高度 private int iDisturbLineCnt = 8; //干扰线数量 ////////////////////////////////////////////////////// //private String Src = "零壹贰叁肆伍陆柒捌玖"; private String Src = "零一二三四五六七八九"; //private String Src = "的了是我不在人们有来他这上着个地到大里说就去子得也和那要下看天时过出小么起你都把好还多没为又可家学只以主会样年想生同老中十从自面前头道它后然走很像见两用她国动进成回什边作对开而己些现山民候经发工向事命给长水几义三声于高手知理眼志点心战二问但身方实吃做叫当住听革打呢真全才四已所敌之最光产情路分总条白话东席次亲如被花口放儿常气五第使写军吧文运再果怎定许快明行因别飞外树物活部门无往船望新带队先力完却站代员机更九您每风级跟笑啊孩万少直意夜比阶连车重便斗马哪化太指变社似士者干石满日决百原拿群究各六本思解立河村八难早论吗根共让相研今其书坐接应关信觉步反处记将千找争领或师结块跑谁草越字加脚紧爱等习阵怕月青半火法题建赶位唱海七女任件感准张团屋离色脸片科倒睛利世刚且由送切星导晚表够整认响雪流未场该并底深刻平伟忙提确近亮轻讲农古黑告界拉名呀土清阳照办史改历转画造嘴此治北必服雨穿内识验传业菜爬睡兴形量咱观苦体众通冲合破友度术饭公旁房极南枪读沙岁线野坚空收算至政城劳落钱特围弟胜教热展包歌类渐强数乡呼性音答哥际旧神座章帮啦受系令跳非何牛取入岸敢掉忽种装顶急林停息句区衣般报叶压慢叔背细"; String[] strFontNames = { "隶书", "华文新魏", "黑体", "幼圆", "楷体_GB2312", "新宋体", "华文彩云"}; private int FONTSTYLE = Font.BOLD | Font.ITALIC; ////////////////////////////////////////////////////// private String getRandomStr(Random random, int cnt, StringBuffer sbNum) { String str = ""; int max = Src.length(); for (int i = 0; i < cnt; i++) { int t = random.nextInt(max); str += Src.charAt(t); sbNum.append(t); } return str; } //生成随机颜色 Color getRandColor(Random random, int fc, int bc) { 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); } %><% String strText = ""; try { Date now = new Date(); Random random = new Random(now.getTime()); now = null; StringBuffer bufNum = new StringBuffer(""); strText = getRandomStr(random, iCharCnt, bufNum); response.setHeader("Cache-Control", "no-store"); //HTTP 1.1 response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy server BufferedImage image = new BufferedImage(iImgWidth, iImgHeight, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); // 设定图像背景色(因为是做背景,所以偏淡) g.setColor(getRandColor(random, 200, 250)); g.fillRect(0, 0, iImgWidth, iImgHeight); //画边框 g.setColor(Color.black); g.drawRect(0, 0, iImgWidth - 1, iImgHeight - 1); //干扰线 for (int k = 0; k < iDisturbLineCnt; k++) { g.setColor(getRandColor(random, 160, 200)); g.drawLine(random.nextInt(iImgWidth), random.nextInt(iImgHeight), random.nextInt(iImgWidth), random.nextInt(iImgHeight)); } int startx = 0; int strWidth = 0; for (int i = 0; i < iCharCnt; i++) { g.setColor(getRandColor(random, 10, 150)); char ch = strText.charAt(i); String fname = strFontNames[random.nextInt(strFontNames.length)]; Font f = new Font(fname, FONTSTYLE, iCharHeight); System.out.println(fname + " " + ch); g.setFont(f); g.drawString("" + ch, startx + strWidth + random.nextInt(iMaxOffset), iCharHeight); java.awt.FontMetrics fm = g.getFontMetrics(); strWidth += fm.charWidth(ch); fm = null; } // 图象生效 g.dispose(); ServletOutputStream responseOutputStream = response.getOutputStream(); // 输出图象到页面 ImageIO.write(image, "JPEG", responseOutputStream); //以下关闭输入流!~~~ responseOutputStream.flush(); responseOutputStream.close(); /**//* ServletOutputStream outstream = response.getOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outstream); encoder.encode(image); outstream.close(); */ // 将认证码存入SESSION session.setAttribute("YZMIMAGE", bufNum.toString()); random = null; bufNum = null; image = null; } catch (Exception ex) {ex.printStackTrace(); }%>?
java中封装了大量的socket API,为编写网络通信程序提供了极大的方便. 在计算机网络的学习中,大家都已熟练掌握了TCP/UDP的基本原理,在此不在赘述.仅给出接收端和发送端的源代码,供大家讨论和批评. 发送端代码如下: //只要稍加改进,即可发送数据 import java.io.*; import java.lang.*; import java.net.*; public class uclient { private DatagramSocket cli; private DatagramPacket pac; private byte sb[]; private String sen; public uclient() { Init(); } public void Init() { try { //指定端口号,避免与其他应用程序发生冲突 cli=new DatagramSocket(10002); sb=new byte[1024]; sen="UDP方式发送数据"; sb=sen.getBytes(); pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005); cli.send(pac); } catch(SocketException se) { se.printStackTrace(); } catch(IOException ie) { ie.printStackTrace(); } } public static void main(String args[]) { new uclient(); } } 接收端数据: //加以改进代码,可以改变接收方式 import java.io.*; import java.lang.*; import java.net.*; public class userve { private DatagramSocket ser; private DatagramPacket pac; private byte rb[]; private String rev; public userve() { Init(); } public void Init() { try { ser=new DatagramSocket(10005); rb=new byte[1024]; pac=new DatagramPacket(rb,rb.length);?
大家还需要什么工具类?可以提出来,我会尽量收集,写的。
我会定时发布更多工具类,这样极大的提高我自己的开发效率
欢迎关注我的博客:http://kangqii.javaeye.com/
这也算是对我的支持。感谢!
本资源出自:http://www.javacs.cn/bbs/thread-382-1-1.html
中国java工作者论坛
中国java工作者家园
作为的创办人,希望大家常关注我们站
?