- 浏览: 7436 次
- 性别:
- 来自: 北京
最新评论
收藏列表
标题 | 标签 | 来源 | |
微博时间显示方法 | html | ||
package com.itcast.util; import java.util.Calendar; import java.util.Date; public class DateUtil { public static String getCreateAt(Date date){ Calendar c = Calendar.getInstance(); if(c.get(Calendar.YEAR)-(date.getYear()+1900)>0){ int i = c.get(Calendar.YEAR)-date.getYear(); return i+"年前"; }else if(c.get(Calendar.MONTH)-date.getMonth()>0){ int i = c.get(Calendar.MONTH)-date.getMonth(); return i+"月前"; }else if(c.get(Calendar.DAY_OF_MONTH)-date.getDate()>0){ int i = c.get(Calendar.DAY_OF_MONTH)-date.getDate(); return i+"天前"; }else if(c.get(Calendar.HOUR_OF_DAY)-date.getHours()>0){ int i = c.get(Calendar.HOUR_OF_DAY)-date.getHours(); return i+"小时前"; }else if(c.get(Calendar.MINUTE)-date.getMinutes()>0){ int i = c.get(Calendar.MINUTE)-date.getMinutes(); return i+"分钟前"; }else { return "刚刚"; } } } |
|||
smartupload | |||
一、文件上传 1、上传页面upload.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>文件上传</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <p align="center">上传文件选择</p> <FORM METHOD="POST" ACTION="jsp/do_upload.jsp"ENCTYPE="multipart/form-data"> <input type="hidden" name="TEST" value="good"> <table width="75%" border="1" align="center"> <tr> <td> <div align="center"> 1.<input type="FILE" name="FILE1" size="30"> </div> </td> </tr> <tr> <td><div align="center">2、 <input type="FILE" name="FILE2" size="30"> </div></td> </tr> <tr> <td><div align="center">3、 <input type="FILE" name="FILE3" size="30"> </div></td> </tr> <tr> <td><div align="center">4、 <input type="FILE" name="FILE4" size="30"> </div></td> </tr> <tr> <td><div align="center"> <input type="submit" name="Submit" value="上传它!"> </div></td> </tr> </table> </FORM> </body> </html> 2、上传处理界面 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*,com.jspsmart.upload.*" errorPage="" %> <html> <head> <title>文件上传处理页面</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <% // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 上传初始化 su.initialize(pageContext); // 设定上传限制 // 1.限制每个上传文件的最大长度。 // su.setMaxFileSize(10000); // 2.限制总上传数据的长度。 // su.setTotalMaxFileSize(20000); // 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。 // su.setAllowedFilesList("doc,txt"); // 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat, jsp,htm,html扩展名的文件和没有扩展名的文件。 // su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); // 上传文件 su.upload(); // 将上传文件全部保存到指定目录 int count = su.save("/upload"); out.println(count+"个文件上传成功!<br>"); // 利用Request对象获取参数之值 out.println("TEST="+su.getRequest().getParameter("TEST") +"<BR><BR>"); // 逐一提取上传文件信息,同时可保存文件。 for (int i=0;i<su.getFiles().getCount();i++) { com.jspsmart.upload.File file = su.getFiles().getFile(i); // 若文件不存在则继续 if (file.isMissing()) continue; // 显示当前文件信息 out.println("<TABLE BORDER=1>"); out.println("<TR><TD>表单项名(FieldName)</TD><TD>" + file.getFieldName() + "</TD></TR>"); out.println("<TR><TD>文件长度(Size)</TD><TD>" + file.getSize() + "</TD></TR>"); out.println("<TR><TD>文件名(FileName)</TD><TD>" + file.getFileName() + "</TD></TR>"); out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>" + file.getFileExt() + "</TD></TR>"); out.println("<TR><TD>文件全名(FilePathName)</TD><TD>" + file.getFilePathName() + "</TD></TR>"); out.println("</TABLE><BR>"); // 将文件另存 // file.saveAs("/upload/" + myFile.getFileName()); // 另存到以WEB应用程序的根目录为文件根目录的目录下 // file.saveAs("/upload/" + myFile.getFileName(), su.SAVE_VIRTUAL); // 另存到操作系统的根目录为文件根目录的目录下 // file.saveAs("c:\\temp\\" + myFile.getFileName(), su.SAVE_PHYSICAL); } %> </body> </html> 二、文件下载 1.下载界面 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>下载</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <a href="jsp/do_download.jsp">点击下载</a> </body> </html> 2.如何下载文件 <%@ page contentType="text/html;charset=gb2312" import="com.jspsmart.upload.*" %><% // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 初始化 su.initialize(pageContext); // 设定contentDisposition为null以禁止浏览器自动打开文件, //保证点击链接后是下载文件。若不设定,则下载的文件扩展名为 //doc时,浏览器将自动用word打开它。扩展名为pdf时, //浏览器将用acrobat打开。 su.setContentDisposition(null); // 下载文件 su.downloadFile("/upload/如何赚取我的第一桶金.doc"); %> 三、下载中文文件 public void downloadFile(String s, String s1, String s2, int i) throws ServletException, IOException, SmartUploadException { if(s == null) throw new IllegalArgumentException("File '" + s + "' not found (1040)."); if(s.equals("")) throw new IllegalArgumentException("File '" + s + "' not found (1040)."); if(!isVirtual(s) && m_denyPhysicalPath) throw new SecurityException("Physical path is denied (1035)."); if(isVirtual(s)) s = m_application.getRealPath(s); java.io.File file = new java.io.File(s); FileInputStream fileinputstream = new FileInputStream(file); long l = file.length(); boolean flag = false; int k = 0; byte abyte0[] = new byte[i]; if(s1 == null) m_response.setContentType("application/x-msdownload"); else if(s1.length() == 0) m_response.setContentType("application/x-msdownload"); else m_response.setContentType(s1); m_response.setContentLength((int)l); m_contentDisposition = m_contentDisposition != null ? m_contentDisposition : "attachment;"; if(s2 == null) m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + toUtf8String(getFileName(s))); else if(s2.length() == 0) m_response.setHeader("Content-Disposition", m_contentDisposition); else m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + toUtf8String(s2)); while((long)k < l) { int j = fileinputstream.read(abyte0, 0, i); k += j; m_response.getOutputStream().write(abyte0, 0, j); } fileinputstream.close(); } /** * 将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名. * 纵横软件制作中心雨亦奇2003.08.01 * @param s 原文件名 * @return 重新编码后的文件名 */ public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i=0;i<s.length();i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else { byte[] b; try { b = Character.toString(c).getBytes("utf-8"); } catch (Exception ex) { System.out.println(ex); b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) k += 256; sb.append("%" + Integer.toHexString(k). toUpperCase()); } } } return sb.toString(); } |
|||
竖向折叠的CSS滑动菜单 | html | ||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>竖向可折叠的CSS滑动菜单</title> </head> <style type="text/css"> <!-- body,div,ul,li,p,h1,h2{ margin:0; padding:0; border:0; background:#FAFAFA; font-family:Arial, Helvetica, sans-serif,"宋体"} body{ text-align:center; font-size:12px} li{ list-style:none} .rolinList{ width:402px; height:auto; margin:20px auto 0 auto; text-align:left} .rolinList li{margin-bottom:1px;border:1px solid #DADADA} .rolinList li h2{ width:380px; height:40px; background:#fff; font-size:14px; line-height:40px; padding-left:20px; color:#333; cursor:pointer} .content{ height:150px;width:400px; background:#fff; background:#FAFAFA} .content p{ margin:12px} --> </style> <script type="text/javascript"> //<![CDATA[ window.onload = function() { rolinTab("rolin") } function rolinTab(obj) { var list = $(obj).getElementsByTagName("LI"); var state = {show:false,hidden:false,showObj:false}; for (var i=0; i<list.length; i++) { var tmp = new rolinItem(list[i],state); if (i == 0) tmp.pShow(); } } function rolinItem(obj,state) { var speed = 0.0666; var range = 1; var interval; var tarH; var tar = this; var head = getFirstChild(obj); var content = getNextChild(head); var isOpen = false; this.pHidden = function() { if (isOpen) hidden(); } this.pShow = show; var baseH = content.offsetHeight; content.style.display = "none"; var isOpen = false; head.onmouseover = function() { this.style.background = "#EFEFEF"; } head.onmouseout = mouseout; head.onclick = function() { this.style.background = "#EFEFEF"; if (!state.show && !state.hidden) { if (!isOpen) { head.onmouseout = null; show(); } else { hidden(); } } } function mouseout() { this.style.background = "#FFF" } function show() { head.style.borderBottom = "1px solid #DADADA"; state.show = true; if (state.openObj && state.openObj != tar ) { state.openObj.pHidden(); } content.style.height = "0px"; content.style.display = "block"; content.style.overflow = "hidden"; state.openObj = tar; tarH = baseH; interval = setInterval(move,10); } function showS() { isOpen = true; state.show = false; } function hidden() { state.hidden = true; tarH = 0; interval = setInterval(move,10); } function hiddenS() { head.style.borderBottom = "none"; head.onmouseout = mouseout; head.onmouseout(); content.style.display = "none"; isOpen = false; state.hidden = false; } function move() { var dist = (tarH - content.style.height.pxToNum())*speed; if (Math.abs(dist) < 1) dist = dist > 0 ? 1: -1; content.style.height = (content.style.height.pxToNum() + dist) + "px"; if (Math.abs(content.style.height.pxToNum() - tarH) <= range ) { clearInterval(interval); content.style.height = tarH + "px"; if (tarH != 0) { showS() } else { hiddenS(); } } } } var $ = function($) {return document.getElementById($)}; String.prototype.pxToNum = function() {return Number(this.replace("px",""))} function getFirstChild(obj) { var result = obj.firstChild; while (!result.tagName) { result = result.nextSibling; } return result; } function getNextChild(obj) { var result = obj.nextSibling; while (!result.tagName) { result = result.nextSibling; } return result; } //]]> </script> <body> <ul class="rolinList" id="rolin"> <li> <h2>唐朝帝王槌</h2> <div class="content"><p>立剑赏月意惆怅,袖饰刀,衣披霜,傲视雾丸,徒手战扶桑.<br /> 问津终寻帝王陵,黑影没,尸满岗,惟见逆鲮露寒光. <br /> 须发苍,气轩昂,三尺银狼,破风动八方<br /> 依身紧握噬魂枪,饮虎血,豪万丈.惟有千年我故乡!</p></div> </li> <li> <h2>玉女枪法</h2> <div class="content"><p>曾经有个梦想:驰骋江湖,快意恩仇。<br /> 曾经有份愿望:千里追凶,十步溅血。<br /> 曾经有腔豪情:奇功盖世,名冠武林。<br /> 曾经有种期盼:烛影摇红,衣袖添香。</p></div> </li> <li> <h2>黑沙刚体</h2> <div class="content"><p>赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。 <br /> 十步杀一人,千里不留行。事了拂衣去,深藏身与名。 <br /> 闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯嬴。 <br /> 三杯吐然诺,五岳倒为轻。眼花耳热后,意气素霓生。 <br /> 纵死侠骨香,不惭世上英。谁能书阁下,白首太玄经。</p> </div> </li> <li> <h2>ASP源码下载</h2> <div class="content">请到这里来……</div> </li> <li> <h2>雾水掌</h2> <div class="content"><p>蹄影善奔,如幻如魔,其皮传世,绝学再现,<br /> 又有谁在这残阳道中追逐它的身影... </p> </div> </li> </ul> </body> </html> |
|||
javascript(JS)常见的表单输入限制方法代码 | html | ||
下面这些是做网站时常用的表单输入限制功能的方法,可以限制用户输入哪些特定的字符,很实用。另外本站还提供了我是佛山人制作的JS表单验证函数,不会用下面的朋友可以参考使用这个,更简便:超强大的JS表单验证及使用方法教程 javascript常见的表单输入限制功能,在输入的时候限制用户的输入: 1.文本框只能输入数字代码(小数点也不能输入) < input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"> 2.只能输入数字,能输小数点. < input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')"> < INPUT onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}" name=txt1> 3.数字和小数点方法二 < input type=text tvalue="" ovalue="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.tvalue=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.ovalue=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.tvalue=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.ovalue=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.ovalue=this.value}"> 4.只能输入字母和汉字 < input onkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength=10 name="Numbers"> 5.只能输入英文字母和数字,不能输入中文 < input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')"> 6.只能输入数字和英文 < input onKeyUp="value=value.replace(/[^\d|chun]/g,'')"> 7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号 < input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false"> 8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号 < input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"> 9.只能输入中文: < input name="realname" type="text" maxlength="20" class="input_style" value="" onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" /> |
|||
仿163邮箱鼠标放上变色的按钮样式 | html | ||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>仿163邮箱鼠标放上变色的按钮样式www.aa25.cn</title> <style> .btn02 { width:60px; height:24px; border:1px solid #87a3c1; background:url(/uploadfile/200911/11/1632433537.gif); color:#555; font-size:12px; line-height:180%; cursor:pointer;} .btn04 { width:60px; height:24px; border:1px solid #a2904d; background:url(/uploadfile/200911/11/1632433537.gif) 0 -66px; color:#630; font-size:12px; cursor:pointer; line-height:180%;} </style> </head> <body> <p> <input name="button2" type="reset" class="btn02" onmouseover="this.className='btn04'" onmouseout="this.className='btn02'" id="button2" value="重置" /> </p> <p>鼠标放到按钮上试试www.aa25.cn</p> </body> </html> |
|||
通用的加入收藏夹代码 | html | ||
<script type="text/javascript"> // <![CDATA[ function bookmark(){ var title=document.title var url=document.location.href if (window.sidebar) window.sidebar.addPanel(title, url,""); else if( window.opera && window.print ){ var mbm = document.createElement('a'); mbm.setAttribute('rel','sidebar'); mbm.setAttribute('href',url); mbm.setAttribute('title',title); mbm.click();} else if( document.all ) window.external.AddFavorite( url, title); } // ]]> </script> <a href="javascript:bookmark()">加入收藏夹</a> |
|||
java操作Excel | 利用JAVA操作EXCEL文件(JAVA EXCEL API) | ||
1.应用示例: 包括从Excel读取数据,生成新的Excel,以及修改Excel package common.util; import jxl.*; import jxl.format.UnderlineStyle; import jxl.write.*; import jxl.write.Number; import jxl.write.Boolean; import java.io.*; /** * Created by IntelliJ IDEA. * User: xl * Date: 2005-7-17 * Time: 9:33:22 * To change this template use File | Settings | File Templates. */ public class ExcelHandle { public ExcelHandle() { } /** * 读取Excel * * @param filePath */ public static void readExcel(String filePath) { try { InputStream is = new FileInputStream(filePath); Workbook rwb = Workbook.getWorkbook(is); //Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始 Sheet st = rwb.getSheet("original"); Cell c00 = st.getCell(0,0); //通用的获取cell值的方式,返回字符串 String strc00 = c00.getContents(); //获得cell具体类型值的方式 if(c00.getType() == CellType.LABEL) { LabelCell labelc00 = (LabelCell)c00; strc00 = labelc00.getString(); } //输出 System.out.println(strc00); //关闭 rwb.close(); } catch(Exception e) { e.printStackTrace(); } } /** * 输出Excel * * @param os */ public static void writeExcel(OutputStream os) { try { /** * 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数, * 因为类WritableWorkbook的构造函数为protected类型 * method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile)); * method(2)如下实例所示 将WritableWorkbook直接写入到输出流 */ WritableWorkbook wwb = Workbook.createWorkbook(os); //创建Excel工作表 指定名称和位置 WritableSheet ws = wwb.createSheet("Test Sheet 1",0); //**************往工作表中添加数据***************** //1.添加Label对象 Label label = new Label(0,0,"this is a label test"); ws.addCell(label); //添加带有字型Formatting对象 WritableFont wf = new WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true); WritableCellFormat wcf = new WritableCellFormat(wf); Label labelcf = new Label(1,0,"this is a label test",wcf); ws.addCell(labelcf); //添加带有字体颜色的Formatting对象 WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false, UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED); WritableCellFormat wcfFC = new WritableCellFormat(wfc); Label labelCF = new Label(1,0,"This is a Label Cell",wcfFC); ws.addCell(labelCF); //2.添加Number对象 Number labelN = new Number(0,1,3.1415926); ws.addCell(labelN); //添加带有formatting的Number对象 NumberFormat nf = new NumberFormat("#.##"); WritableCellFormat wcfN = new WritableCellFormat(nf); Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN); ws.addCell(labelNF); //3.添加Boolean对象 Boolean labelB = new jxl.write.Boolean(0,2,false); ws.addCell(labelB); //4.添加DateTime对象 jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date()); ws.addCell(labelDT); //添加带有formatting的DateFormat对象 DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss"); WritableCellFormat wcfDF = new WritableCellFormat(df); DateTime labelDTF = new DateTime(1,3,new java.util.Date(),wcfDF); ws.addCell(labelDTF); //添加图片对象,jxl只支持png格式图片 File image = new File("f:\\2.png"); WritableImage wimage = new WritableImage(0,1,2,2,image); ws.addImage(wimage); //写入工作表 wwb.write(); wwb.close(); } catch(Exception e) { e.printStackTrace(); } } /** * 拷贝后,进行修改,其中file1为被copy对象,file2为修改后创建的对象 * 尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去, * 以使单元格的内容以不同的形式表现 * @param file1 * @param file2 */ public static void modifyExcel(File file1,File file2) { try { Workbook rwb = Workbook.getWorkbook(file1); WritableWorkbook wwb = Workbook.createWorkbook(file2,rwb);//copy WritableSheet ws = wwb.getSheet(0); WritableCell wc = ws.getWritableCell(0,0); //判断单元格的类型,做出相应的转换 if(wc.getType == CellType.LABEL) { Label label = (Label)wc; label.setString("The value has been modified"); } wwb.write(); wwb.close(); rwb.close(); } catch(Exception e) { e.printStackTrace(); } } //测试 public static void main(String[] args) { try { //读Excel ExcelHandle.readExcel("f:/testRead.xls"); //输出Excel File fileWrite = new File("f:/testWrite.xls"); fileWrite.createNewFile(); OutputStream os = new FileOutputStream(fileWrite); ExcelHandle.writeExcel(os); //修改Excel ExcelHandle.modifyExcel(new file(""),new File("")); } catch(Exception e) { e.printStackTrace(); } } } 2.在jsp中做相关测试,创建一个writeExcel.jsp <% response.reset();//清除Buffer response.setContentType("application/vnd.ms-excel"); File fileWrite = new File("f:/testWrite.xls"); fileWrite.createNewFile(); new FileOutputStream(fileWrite); ExcelHandle.writeExcel(new FileOutputStream(fileWrite)); %> 在IE中浏览writeExcel.jsp就可以动态生成Excel文档了,其中response.setContentType("application/vnd.ms-excel");语句必须要,才能确保不乱码,在jsp中输入<%@page contentType="application/vnd.ms-excel;charset=GBK"%>不行。 |