|  | 
				
					
			  
	2008年9月20日
	
 
			
			js:当窗口关闭前做的动作
 function  window.onbeforeunload(){
 
 }
 在JS中定义数组删除方法 <script language=javascript>
 Array.prototype.del=function(n) {  //n表示第几项,从0开始算起。
 //prototype为对象原型,注意这里为对象增加自定义方法的方法。
 if(n<0)  //如果n<0,则不进行任何操作。
 return this;
 else
 return this.slice(0,n).concat(this.slice(n+1,this.length));
 /*
 concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。
 这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
 组成的新数组,这中间,刚好少了第n项。
 slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
 */
 }
 //我们来试一试这个自己增加的方法
 var test=new Array(0,1,2,3,4,5);
 test=test.del(3);  //从0算起,这里也就是删除第4项。
 alert(test);
 </script>
   jquery:赋值:$("#tmidtemp").attr("value","XXXXX")
 得到值:$("#tmidtemp").attr("value")
 dwr:
 解析map结构数据:
 function built_trademark_left(data){
 var bar = document.getElementById('s1');
 var optionitems="";
 for(var property in data){
 optionitems+="<option value='"+property+"'>"+data[property]+"</option>"; //property是key;data[property]是值
 }
 $(optionitems).appendTo(bar);
 data=null;
 }
 css:背景颜色渐变:
 background:;filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#ffffff,endColorStr=#FFD922);
 hibernate 用sql查询SQLQuery 在调用list()方法前要加addEntity(XX,XX) 或者 addScalar(XX,XX) 方法。
 
 例如:
 String sql = "select {tll.*},(select t.appn_no      from Trademark t where t.id = tll.tmid) as appn_no,"
 +"(select t.tm_type      from Trademark t where t.id = tll.tmid) as tm_type,"
 +"(select l.ref_no       from licenagre l where l.id = tll.laid)   as ref_no,"
 +"(select l.tm_licensor  from licenagre l where l.id = tll.laid)   as tm_licensor "
 +"from tmLnkLa tll";
 SQLQuery sqlQuery = dao.getHibernateTemplate().getSessionFactory().openSession().createSQLQuery(sql);
 sqlQuery.addEntity("tll", TmLnkLa.class);
 sqlQuery.addScalar("appn_no", Hibernate.STRING);
 sqlQuery.addScalar("tm_type", Hibernate.STRING);
 sqlQuery.addScalar("ref_no", Hibernate.STRING);
 sqlQuery.addScalar("tm_licensor", Hibernate.STRING);
 List list = sqlQuery.list();
 在多表查询中,为避免字段同名问题,需要加 {XXX}  如上例中的 {tll.*},否则会出现类似: Invalid column name: id0_  的错误
 
 
			
			  1.   oncontextmenu="window.event.returnValue=false"   将彻底屏蔽鼠标右键   <table   border   oncontextmenu=return(false)><td>no</table>   可用于Table
 
 2.   <body   onselectstart="return   false">   取消选取、防止复制
 
 3.   onpaste="return   false"   不准粘贴
 
 4.   oncopy="return   false;"   oncut="return   false;"   防止复制
 
 5.   <link   rel="Shortcut   Icon"   href="favicon.ico">   IE地址栏前换成自己的图标
 
 6.   <link   rel="Bookmark"   href="favicon.ico">   可以在收藏夹中显示出你的图标
 
 7.   <input   style="ime-mode:disabled">   关闭输入法
 
 8.   永远都会带着框架
 <script   language="JavaScript"><!--
 if   (window   ==   top)top.location.href   =   "frames.htm";   //frames.htm为框架网页
 //   --></script>
 
 9.   防止被人frame
 <SCRIPT   LANGUAGE=JAVASCRIPT><!--
 if   (top.location   !=   self.location)top.location=self.location;
 //   --></SCRIPT>
 
 10.   网页将不能被另存为
 <noscript><iframe   src="/blog/*.html>";</iframe></noscript>
 
 11.   <input   type=button   value=查看网页源代码
 onclick="window.location   =   "view-source:"+   "http://www.williamlong.info"">
 
 12.删除时确认
 <a   href="javascript:if(confirm("确实要删除吗?"))location="boos.asp?&areyou=删除&page=1"">删除</a>
 
 13.   取得控件的绝对位置
 //Javascript
 <script   language="Javascript">
 function   getIE(e){
 var   t=e.offsetTop;
 var   l=e.offsetLeft;
 while(e=e.offsetParent)
 alert("top="+t+"/nleft="+l);
 }
 </script>
 
 //VBScript
 <script   language="VBScript"><!--
 function   getIE()
 dim   t,l,a,b
 set   a=document.all.img1
 t=document.all.img1.offsetTop
 l=document.all.img1.offsetLeft
 while   a.tagName<>"BODY"
 set   a   =   a.offsetParent
 t=t+a.offsetTop
 l=l+a.offsetLeft
 wend
 msgbox   "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
 end   function
 --></script>
 
 14.   光标是停在文本框文字的最后
 <script   language="javascript">
 function   cc()
 {
 var   e   =   event.srcElement;
 var   r   =e.createTextRange();
 r.moveStart("character",e.value.length);
 r.collapse(true);
 r.select();
 }
 </script>
 <input   type=text   name=text1   value="123"   onfocus="cc()">
 
 15.   判断上一页的来源
 javascript:
 document.referrer
 
 
			
			(一).确认删除用法: 1. BtnDel.Attributes.Add("onclick","return confirm('"+"确认删除?"+"')");
 2. linktempDelete.Attributes["onclick"]="javascript:return  confirm('"+"确认删除?"+"');";
 3. private void grdProject_ItemDataBound(object sender, DataGridItemEventArgs e)
 4.
 {
 if ((e.Item.ItemType == ListItemType.Item) | (e.Item.ItemType == ListItemType.AlternatingItem))
 {
 // 刪除按鈕上的提示部分
 e.Item.Cells[10].Attributes.Add("onclick", "return confirm('确定删除吗?');");
 }
 }
 5.
 <script language="JavaScript" type="text/JavaScript">
 function delete_y(e)
 {
 if(event.srcElement.outerText == "删除")
 event.returnValue=confirm("确定删除?");
 }
 document.onclick=delete_y;
 </script>
 
 (二).跨语言字符串替换
 System.Text.RegularExpressions.Regex.Replace(str1,@" <{1}[^ <>]*>{1}","").Replace(" ","").Replace("\","\\").Replace("-","-").Replace("&","&").Replace("<"," <").Replace(">",">").Replace("br","\n");
 
 (三).关闭窗体
 1.
 this.btnClose.Attributes.Add("onclick",  "window.close();return false;");
 2.关闭本窗体间跳转到另一个页面
 this.HyperLink1.NavigateUrl = "javascript:onclick=window.opener.location.assign
 ('" + "index.aspx"+ "?&Func=Edit&AutoID=" + intAutoid + ');window.close();";
 3.关闭父窗体:
 <INPUT type="reset" value=' <%=this._Cancel%>' onclick="window.parent.close()"  Class="Button">
 
 4.关闭本弹出窗体,并刷新父页面
 
 this.Response.Write(" <script language='javascript'>window.opener.location.reload();window.close(); </script>");
 
 
 (四).Web MessageBox
 1.
 Response.Write(" <script language=javascript> window.alert('保存成功1'); </script>");
 2.
 Response.Write(" <script>alert('"+"保存成功!"+"'); </script>");
 3.
 this.Page.RegisterStartupScript("ChiName"," <script language='javascript'>alert('" + "保存成功!" + "') </script>");
 
 (五).DataGrid中加CheckBox控件模板列.
 请看:  http://blog.csdn.net/chengking/archive/2005/10/08/497520.aspx
 
 (六). window.open() 方法
 语法:window.open(pageurl,name,parameters);
 window对象的open()方法用于创建一个新的窗口实例,新创建的窗口的外观由参数:parameters指定。新窗口中打开的文档由参数:        pageurl指定。系统能够根据参数:name确定的名称访问该窗口。
 
 下表为parameters参数表:
 参数          衩始值          说明
 alwaysLowered yes/no 指定窗口隐藏在所有窗口之下。
 alwaysRaised yes/no 指定窗口浮在所有窗口之上。
 dependent yes/no 指定打开的窗口为父窗口的一个了窗口。并随父窗口的关闭而关闭。
 directions yes/no 指定Navigator 2和3的目录栏是否在新窗口中可见。
 height pixel value 设定新窗口的像素高度。
 hotkeys yes/no 在没有菜单栏的新窗口设置安全退出热键。
 innerHeight pixel value 设置新窗口中文档的像素高度。
 innerWidth pixel value 设置新窗口中文档的像素宽度。
 location yes/ no 指明位置栏在新窗口中是否可见。
 menubar yes /no 指明菜单栏在新窗口中是否可见。
 outerHeight pixel value 设定窗口(包括装饰边框)的像素高度。
 outerWidth pixel value 设定窗口(包括装饰边框)的像素宽度。
 resizable yes /no 指明新窗口是否可以调整。
 screenX pixel value 设定新窗口离屏幕边界的像素长度。
 screenY pixel value 设定新窗口离屏幕上边界的像素长度。
 scrollbars yes /no 指明滚动栏在新窗口中是否可见。
 titlebar yes /no 指明菜单题目栏在新窗口是否可见。
 toolbar yes /no 指明工具栏在新窗口中是否可见。
 Width pixel value 设定窗口的像素宽度。
 z-look yes /no 在文档中包含各个 <pplet>标签的数组。
 fullscreen yes / no 打开的窗体是否进行全屏显示
 left pixel value 设定新窗口距屏幕左方的距离
 top pixel value 设定新窗口距屏幕上方的距离
 
 例子:
 <html>
 <head>
 <title>window.open函数 </title>
 </head>
 <body>
 <script language="javascript">
 <!--
 window.open("","name1","width=100,height=200,toolbar=no,scrollbars=no,menubar=no,screenX=100,screenY=100");
 //-->
 </script>
 </body>
 </html>
 
 (七).location对象
 href 整个URL字符串.
 protocol 含有URL第一部分的字符串,如http:
 host 包含有URL中主机名:端口号部分的字符串.如//www.cenpok.net/server/
 hostname 包含URL中主机名的字符串.如http://www.cenpok.net
 port 包含URL中可能存在的端口号字符串.
 pathname URL中"/"以后的部分.如~list/index.htm
 hash "#"号(CGI参数)之后的字符串.
 search "?"号(CGI参数)之后的字符串.
 
 (八).按键捕捉
 1.Ctrl+Enter按键捕捉方法
 <body onkeydown="doKeyDown()">
 <script language="JavaScript">
 <!--
 function doKeyDown()
 {
 if (event.ctrlKey && event.keyCode == 13)
 {
 alert("You pressed the Ctrl + Enter")
 }
 }
 //-->
 </script>
 </body>
 2.Alt加快捷键: Alt+A
 <button accessKey=A title="Alt+A" onclick="alert('Button clicked!')">Alt+A </button>
 (九).控制输入,非法字符不能输入到TextBox.
 <asp:textbox class="Text"
 onkeypress="if (event.keyCode < 48 || event.keyCode >57) event.returnValue = false;"
 id="txtY_Revenue" style="TEXT-ALIGN: right" runat="server" Width="90%" MaxLength="12">
 </asp:textbox>
 说明: 此方法控制TextBox只收数字:0~9 , 也自可以定义其它可输入字符,如改成: 65~123,只允许输入: a~z和A~Z 等.
 
 [以下为收藏]
 
 1>屏蔽功能类
 
 1.1 屏蔽键盘所有键
 <script language="javascript">
 <!--
 function document.onkeydown(){
 event.keyCode = 0;
 event.returnvalue = false;
 }
 -->
 </script>
 
 1.2 屏蔽鼠标右键
 
 在body标签里加上oncontextmenu=self.event.returnvalue=false
 
 或者
 
 <script language="javascript">
 <!--
 function document.oncontextmenu()
 {
 return false;
 }
 -->
 </script>
 
 function nocontextmenu()
 {
 if(document.all) {
 event.cancelBubble=true;
 event.returnvalue=false;
 return false;
 }
 }
 
 或者
 
 <body onmousedown="rclick()" oncontextmenu= "nocontextmenu()">
 
 <script language="javascript">
 <!--
 function rclick()
 {
 if(document.all) {
 if (event.button == 2){
 event.returnvalue=false;
 }
 }
 }
 -->
 </script>
 
 
 1.3 屏蔽 Ctrl+N、Shift+F10、F5刷新、退格键
 
 <script language="javascript">
 <!--
 //屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键
 function window.onhelp(){return false} //屏蔽F1帮助
 function KeyDown(){
 if ((window.event.altKey)&&
 ((window.event.keyCode==37)||  //屏蔽 Alt+ 方向键 ←
 (window.event.keyCode==39))){  //屏蔽 Alt+ 方向键 →
 alert("不准你使用ALT+方向键前进或后退网页!");
 event.returnvalue=false;
 }
 
 /* 注:这还不是真正地屏蔽 Alt+ 方向键,
 因为 Alt+ 方向键弹出警告框时,按住 Alt 键不放,
 用鼠标点掉警告框,这种屏蔽方法就失效了。以后若
 有哪位高手有真正屏蔽 Alt 键的方法,请告知。*/
 
 if ((event.keyCode == 8) &&
 (event.srcElement.type != "text" &&
 event.srcElement.type != "textarea" &&
 event.srcElement.type != "password") ||          //屏蔽退格删除键
 (event.keyCode==116)||                            //屏蔽 F5 刷新键
 (event.ctrlKey && event.keyCode==82)){            //Ctrl + R
 event.keyCode=0;
 event.returnvalue=false;
 }
 if ((event.ctrlKey)&&(event.keyCode==78))  //屏蔽 Ctrl+n
 event.returnvalue=false;
 if ((event.shiftKey)&&(event.keyCode==121)) //屏蔽 shift+F10
 event.returnvalue=false;
 if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
 window.event.returnvalue = false;  //屏蔽 shift 加鼠标左键新开一网页
 if ((window.event.altKey)&&(window.event.keyCode==115)){ //屏蔽Alt+F4
 window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");
 return false;}
 }
 /* 另外可以用 window.open 的方法屏蔽 IE 的所有菜单
 第一种方法:
 window.open("你的.htm", "","toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=yes,status=no,top=0,left=0")
 第二种方法是打开一个全屏的页面:
 window.open("你的.asp", "", "fullscreen=yes")
 */
 //-->
 </script>
 
 
 1.4屏蔽浏览器右上角“最小化”“最大化”“关闭”键
 
 <script language=javascript>
 function window.onbeforeunload()
 {
 if(event.clientX>document.body.clientWidth&&event.clientY <0||event.altKey)
 {
 window.event.returnvalue = "";
 }
 }
 </script>
 
 或者使用全屏打开页面
 
 <script language="javascript">
 <!--
 window.open(www.32pic.com,"32pic","fullscreen=3,height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no");
 -->
 </script>
 
 注:在body标签里加上onbeforeunload="javascript:return false"(使不能关闭窗口)
 
 1.5屏蔽F5键
 
 <script language="javascript">
 <!--
 function document.onkeydown()
 {
 if ( event.keyCode==116)
 {
 event.keyCode = 0;
 event.cancelBubble = true;
 return false;
 }
 }
 -->
 </script>
 
 1.6屏蔽IE后退按钮
 
 在你链接的时候用 <a href="javascript:location.replace(url)">
 
 1.7屏蔽主窗口滚动条
 
 在body标签里加上 style="overflow-y:hidden"
 
 1.8 屏蔽拷屏,不断地清空剪贴板
 
 在body标签里加上onload="setInterval('clipboardData.setData(\'Text\',\'\')',100)"
 
 1.9 屏蔽网站的打印功能
 
 <style>
 @media print {
 * { display: none }
 }
 </style>
 
 1.10 屏蔽IE6.0 图片上自动出现的保存图标
 
 方法一:
 <META HTTP-EQUIV="imagetoolbar" CONTENT="no">
 方法二:
 <img galleryimg="no">
 
 1.11 屏蔽页中所有的script
 
 <noscrript> </noscript>
 
 2>表单提交验证类
 
 
 
 2.1 表单项不能为空
 
 <script language="javascript">
 <!--
 function CheckForm()
 {
 if (document.form.name.value.length == 0) {
 alert("请输入您姓名!");
 document.form.name.focus();
 return false;
 }
 return true;
 }
 -->
 </script>
 
 2.2 比较两个表单项的值是否相同
 
 <script language="javascript">
 <!--
 function CheckForm()
 if (document.form.PWD.value != document.form.PWD_Again.value) {
 alert("您两次输入的密码不一样!请重新输入.");
 document.ADDUser.PWD.focus();
 return false;
 }
 return true;
 }
 -->
 </script>
 
 2.3 表单项只能为数字和"_",用于电话/银行帐号验证上,可扩展到域名注册等
 
 <script language="javascript">
 <!--
 function isNumber(String)
 {
 var Letters = "1234567890-"; //可以自己增加可输入值
 var i;
 var c;
 if(String.charAt( 0 )=='-')
 return false;
 if( String.charAt( String.length - 1 ) == '-' )
 return false;
 for( i = 0; i < String.length; i ++ )
 {
 c = String.charAt( i );
 if (Letters.indexOf( c ) < 0)
 return false;
 }
 return true;
 }
 function CheckForm()
 {
 if(! isNumber(document.form.TEL.value)) {
 alert("您的电话号码不合法!");
 document.form.TEL.focus();
 return false;
 }
 return true;
 }
 -->
 </script>
 
 
 2.4 表单项输入数值/长度限定
 
 <script language="javascript">
 <!--
 function CheckForm()
 {
 if (document.form.count.value > 100 || document.form.count.value < 1)
 {
 alert("输入数值不能小于零大于100!");
 document.form.count.focus();
 return false;
 }
 if (document.form.MESSAGE.value.length <10)
 {
 alert("输入文字小于10!");
 document.form.MESSAGE.focus();
 return false;
 }
 return true;
 }
 //-->
 </script>
 
 2.5 中文/英文/数字/邮件地址合法性判断
 
 <SCRIPT LANGUAGE="javascript">
 <!--
 
 function isEnglish(name) //英文值检测
 {
 if(name.length == 0)
 return false;
 for(i = 0; i < name.length; i++) {
 if(name.charCodeAt(i) > 128)
 return false;
 }
 return true;
 }
 
 function isChinese(name) //中文值检测
 {
 if(name.length == 0)
 return false;
 for(i = 0; i < name.length; i++) {
 if(name.charCodeAt(i) > 128)
 return true;
 }
 return false;
 }
 
 function isMail(name) // E-mail值检测
 {
 if(! isEnglish(name))
 return false;
 i = name.indexOf("@");
 j = name.lastIndexOf("@");
 if(i == -1)
 return false;
 if(i != j)
 return false;
 if(i == name.length)
 return false;
 return true;
 }
 
 function isNumber(name) //数值检测
 {
 if(name.length == 0)
 return false;
 for(i = 0; i < name.length; i++) {
 if(name.charAt(i) < "0" || name.charAt(i) > "9")
 return false;
 }
 return true;
 }
 
 function CheckForm()
 {
 if(! isMail(form.Email.value)) {
 alert("您的电子邮件不合法!");
 form.Email.focus();
 return false;
 }
 if(! isEnglish(form.name.value)) {
 alert("英文名不合法!");
 form.name.focus();
 return false;
 }
 if(! isChinese(form.cnname.value)) {
 alert("中文名不合法!");
 form.cnname.focus();
 return false;
 }
 if(! isNumber(form.PublicZipCode.value)) {
 alert("邮政编码不合法!");
 form.PublicZipCode.focus();
 return false;
 }
 return true;
 }
 //-->
 </SCRIPT>
 
 2.6 限定表单项不能输入的字符
 
 <script language="javascript">
 <!--
 
 function contain(str,charset)// 字符串包含测试函数
 {
 var i;
 for(i=0;i <charset.length;i++)
 if(str.indexOf(charset.charAt(i))>=0)
 return true;
 return false;
 }
 
 function CheckForm()
 {
 if ((contain(document.form.NAME.value, "%\(\)> <")) || (contain(document.form.MESSAGE.value, "%\(\)> <")))
 {
 alert("输入了非法字符");
 document.form.NAME.focus();
 return false;
 }
 return true;
 }
 //-->
 </script>
 
 
			
			1.钱不是问题,问题是没钱!2.喝醉了我谁也不服,我就扶墙!
 3.我就像一只趴在玻璃上的苍蝇,前途一片光明,但又找不到出路.
 4.大师兄,你知道吗?二师兄的肉现在比师傅的都贵了
 5.如果多吃鱼可以补脑让人变聪明的话,那么你至少得吃一对儿鲸鱼……
 6.水至清则无鱼,人至贱则无敌。
 7.青春就像卫生纸,看着挺多得,用着用着就不够了~
 8.怀才就像怀孕,时间久了才能让人看出来。
 9.我身边的朋友们啊,你们快点出名吧,这样我的回忆录就可以畅销了~~~
 10.同事去见客户,可能是紧张,一开口便是:“刘先生你好,请问你贵姓啊?”汗啊~~~~~~
 11.一女同学黑了些,她男友又太白了些,有天宿舍里得毒舌天后突然对她冒出一句:“你们这样不行,你们会生出斑马来的”
 12.老娘一向视帅哥与金钱如粪土,而他们也一直是这样看我的
 13.不要和我比懒,我懒得和你比
 14.我不是个随便的人 我随便起来不是人
 15.上帝说,要有光,我说我反对,从此世界上有了黑暗
 16.今天心情不好.我只有四句话想说.包括这句和前面的两句.我的话说完了......
 17.做人就要做一个徘徊在牛A和牛C之间的人
 18.我的大名叫上帝,小名叫耶稣,英文名God, 法号是如来...
 19.人不能在一棵树上吊死,要在附近几棵树上多死几次试试
 20.树不要皮,必死无疑;人不要脸,天下无敌。
 21.农夫三拳有点疼
 22.其实我一直很受人欢迎的:小时候的我人见人爱,如今的我人贱人爱
 23.不怕虎一样的敌人,就怕猪一样的队友
 24.走自己的路,让别人打车去吧
 25.老鼠扛刀,满街找猫
 26.只要功夫深,拉屎也认真
 27.中国人谁跑的最快?是曹操(非刘翔)。因为说曹操曹操到
 28.思想有多远,你就给我滚多远
 29.只有在火车站大排长龙时,才能真正意识到自己是“龙的传人”。
 30.有情人终成家属
 31.春天来了,一群大雁正向北飞,一会儿排成B字型,一会儿排成T字型..
 32.在哪里跌倒 就在哪里躺下
 33.老虎不发威 你当我是HELLO KITTY!
 34.驴是的念来过倒~
 
 
			
			1.吃了辣的东西,感觉就要被辣死了,就往嘴里放上少许盐,含一下,吐掉,漱下口,就不辣了; 2.牙齿黄,可以把花生嚼碎后含在嘴里,并刷牙三分钟,很有效;
 3.若有小面积皮肤损伤或者烧伤、烫伤,抹上少许牙膏,可立即止血止痛;
 4.经常装茶的杯子里面留下难看的茶渍,用牙膏洗之,非常干净;
 5.仰头点眼药水时微微张嘴,这样眼睛就不会乱眨了;
 6.嘴里有溃疡,就用维生素C贴在溃疡处,等它溶化后溃疡基本就好了;
 7.眼睛进了小灰尘,闭上眼睛用力咳嗽几下,灰尘就会自己出来;
 8.洗完脸后,用手指沾些细盐在鼻头两侧轻轻按摩,然后再用清水冲洗,黑头和粉刺就会清除干净,毛细孔也会变小;
 9.刚刚被蚊子咬完时,涂上肥皂就不会痒了;
 10.如果嗓子、牙龈发炎了,在晚上把西瓜切成小块,沾着盐吃,记得一定要是晚上,当时症状就会减轻,第二天就好了;
 11.吹风机对着标签吹,等吹到商标的胶热了,就可以很容易的把标签撕下来;
 12.旅行带衣服时如果怕压起褶皱,可以把每件衣服都卷成卷;
 13.打打嗝时就喝点醋,立杆见影;
 14.吃了有异味的东西,如大蒜、臭豆腐,吃几颗花生米就好了;
 15.治疗咳嗽,特别是干咳,晚上睡觉前,用纯芝麻香油煎鸡蛋,油放稍多些,什么调味料都不要放,趁热吃过就去睡觉,连吃几天效果很明显;
 16.手腕长粗的MM想带较细的手镯,就不能硬带,应把手上套上一个塑料袋再带上手镯,非常好带,也不会把手弄疼,取下也是同样的方法;
 17.栗子皮难剥,先把外壳剥掉,再把它放进微波炉转一下,拿出后趁热一搓,皮就掉了;
 18.插花时,在水里滴上一滴洗洁精,可以维持好几天;
 19.把核桃放进锅里蒸十分钟,取出放在凉水里再砸开,就能取出完整的桃核仁了;
 20.把虾仁放进碗里,加一点精盐、食用碱粉,用手抓搓一会儿后用清水浸泡,然后再用清水冲洗,即能使炒出的虾仁透明如水晶,爽嫩可口;
 21.炒肉时,先把肉用小苏打水浸泡十几分钟,倒掉水,再入味,炒出来会很嫩滑;
 22.将残茶叶浸入水中数天后,浇在植物根部,可促进植物生长;
 23.把残茶叶晒干,放到厕所或者沟渠里燃熏,可消除恶臭,具有驱除蚊子苍蝇的功能;
 24.夹生饭重煮法:可用筷子在饭内扎些直通锅底的孔,洒入少许黄酒重焖,
 25.若只表面夹生,只要将表层翻到中间再焖即可;
 26.巧除纱窗油腻:将洗衣服、吸烟剩下的烟头一起放在水里,待溶解后,拿来擦玻璃窗、纱窗,效果真不错;
 27.只要在珠宝盒中放上一节小小的粉笔,即可让首饰常保光泽;
 28.桌子、瓶子表面的不干胶痕迹用风油精可以擦拭;
 29.出门时随时在包里带一节小的干电池,若裙子带静电,就把电池的正极在裙子上面擦几下即可去掉静电;
 30.不管是鞋子的哪个地方磨到了你的脚,你就在鞋子磨脚的地方涂一点点白酒,保证就不磨脚了;
 31.亨调蔬菜时,如果必须要焯,焯好菜的水最好尽量利用。如做水饺的菜,焯好的水可适量放在肉馅里,这样既保证营养,又使水饺馅味美有汤;
 32.夏天足部容易出汗,每天用淡盐水泡脚可有效应对汗脚;
 33.夏天游泳后晒晒太阳,可防肌肤劳损等疾病发生;
 34.夏天枕头易受潮滋生霉菌,时常曝晒枕芯有利健康;
 35.多吃薏米小豆粥等潮湿健脾,可防暑湿;
 36.防失眠:睡前少讲太多话,忌饮浓茶,睡前勿大用脑,可用热水加醋洗脚;
 37.金银花有疏散风湿功效,金银花水煎取汁凉后与蜂蜜冲调可解暑;
 38.吃过于肥腻的食物后喝茶,能刺激自律神经,促进脂肪代谢;
 39.睡眠不足会变笨,一天需要睡眠八小时,有午睡习惯可延缓衰老;
 40.双手易变得干燥粗糙,用醋泡手十分钟可护肤;
 41.夏天擦拭凉席,用滴加了花露水的清水擦拭凉席,可使凉席保持清爽洁净。当然,擦拭时最好沿着凉席纹路进行,以便花露水渗透到凉席的纹路缝隙,这样清凉舒适的感觉会更持久;
 42.早餐多食西红柿、柠檬酸等酸性蔬菜和水果,有益于养肝;
 43.爽身止痒洗头或洗澡时,在水中加五六滴花露水,能起到很好的清凉除菌、祛痱止痒作用;
 44.葡萄含有睡眠辅助激素,常食有助睡眠;
 45.夏天多喝番茄汤既可获得养料,又能补充水分,番茄汤应烧好并冷却后再喝,所含番茄红素有一定的抗前列腺癌和保护心肌的功效,最适合于男子;吃酸性物质马上刷牙会损害牙齿健康;
 46.因外伤碰破皮肉时,在伤处涂上牙膏进行消炎、止血,再包扎,作为临时急救药,以药物牙膏效果最为显著;
 47.将白醋喷洒在菜板上,放上半小时后再洗,不但能杀菌,还能除味;
 48.喝酸奶能解酒后烦躁,酸奶能保护胃黏膜、延缓酒精吸收,并且含钙丰富,对缓解酒后烦躁尤其有效;
 49.皮鞋包皮放久了发霉时,可用软布蘸酒精加水(1:1)溶液擦拭即可;
 50.发生头痛、头晕时,可在太阳穴涂上牙膏,因为牙膏含有薄荷脑、丁香油可镇痛;
 51.蜡烛冷冻二十四小时后,再插到生日蛋糕上,点燃时不会流下烛油;
 52.白色衣裤洗后易泛黄,可取一盆清水,滴上二三滴蓝墨水,将洗过的衣裤在浸泡一刻钟,不必拧干,就放在太阳下晒,即可洁白干净;
 53.过多食用生葱蒜会刺激口腔肠胃,不利健康,最好加一点醋再食用;
 54.及时补充水分但应少喝果汁、可乐、雪碧、汽水等饮料,含有较多的糖精和电解质,喝多了会对肠胃产生不良刺激,影响消化和食欲。因此夏天应多喝白开水或淡盐(糖)水;
 55.每天早晨用豆腐摩擦面部几分钟,坚持一个月,面部会变得很滋润;
 56.空调室内温差不宜超过五度,即使天气再热,空调室内温度也不宜到24度以下;
 57.加酶洗衣粉剂放在温水中需要较长的分解时间才能使洗衣效果更佳;
 58.夏天,人的活动时间变长,出汗多,耗能过大,应适当多吃鸡、鸭、瘦肉、鱼类、蛋类等营养食品,以满足人体的代谢需要;
 59.头痛时把苹果磨成泥状涂在纱布上,贴在头痛处,症状可减轻;
 60.皮包上有污渍,可以用棉花蘸风油精擦拭。
 
			
			关键字: jbpm jpdl 部署 tomcat mysql 工作流
相关资料:   《jBPM学习笔记(流程设计与控制)》 《jBPM学习笔记(框架设计简介)》   系统平台:   系统环境:  Windows 2003 | SUN JDK1.6U4 | Tomcat6.0.14 | jbpm-starters-kit-3.1.4 | MySQL 6.0 主机完整名称:        zsy-aten 浏览器        Internet Explorer 6.0   安装包及相关软件:   1、  安装JDK与MySQL  JDK的安装这里就不多说了,学过Java的人都知道,本实验安装的是jdk-6u4版本。安装完后记得添加JAVA_HOME的环境变量。 MySQL的安装不属于本文的介绍范围,请参阅相关文档。本实验安装的是MySQL 6.0版本,安装完后建立的数据库名为jbpm,创建的用户名为jbpmuser,密码为shine。2、  安装Tomcat 下载安装Tomcat-6.0.16是目前最新版本:http://apache.mirror.phpchina.com/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.exe ;要在JDK安装之后安装Tomcat,安装过程中会自动搜索JRE的目录,当然也可以选择其它的JRE,其它默认设置即可。3、  安装Ant Ant 是一个编译工具,使用 jBPM 时必须用它来编译文件, jBPM 中的很多操作都要用到 Ant ,安装方法如下:  (1) 先下载:http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.0-bin.zip; (2) 解压到 E:\Java\tools\apache-ant-1.7.0 (当然其他目录也可以);  (3) 设置环境变量:ANT_HOME= E:\Java\tools\apache-ant-1.7.0; (4)把 %ANT_HOME%\bin 加入到环境变量 PATH 中。4、  安装jBPM 下载jBPM-JPDL本为3.2.2:http://labs.jboss.com/jbossjbpm/jbpm_downloads/下载jPDL Suite版,这个版本是包含所有的一整套工具,下载后是个压缩包解压到 E:\Java\tools :、\jbpm-jpdl-3.2.2 ,目录下主要包含以下几个子目录:  l  src —— jBPM 的源代码 l  config —— jBPM及Hibernate与log4j的配置文件  l  db —— 各种数据库的建表SQL语句 l  lib —— 依赖的第三方依赖类库 l  doc —— API文档及用户使用向导 l  designer —— 辅助开发 jBPM 的 Eclipse 插件,具体在 eclipse子目录中 l  server —— 一个已经配置好了的基于 JBoss 的 jBPM 控制台及示例5、  安装Eclipse及jBPM开发插件 Eclipse不是开发 jBPM 必须的工具,但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。关于 Eclipse 的安装请参阅相关文档。本实验安装的是MyEclipse6.0集成Eclipse3.3。        安装完Eclipse安装jBPM的开发插件,步骤如下: (1)       打开Eclipse选择菜单“Help->Software Updates->Find and Install”; (2)       弹出窗口中选择“Search for new features to install”,然后点击“Next >”;如图  
 (3)       点击按扭“New Local Site…”选择插件目录,位于designer\ eclipse目录下,如:E:\Java\tools\jbpm-jpdl-3.2.2\designer\eclipse。选定后点“OK”,如图  
 (4)       选中“designer/eclipse”,然后点击“Finish”,如图  
 (5)       然后选择同意条款,接提示步骤安装就可以了。         到此为止需要的所有工具都安装好了。接下来先体验一下jBPM工作流。在 JBoss jBPM Starters Kit 的 jbpm-server 目录是一个已经在JBoss中配置好的了 jBPM 示例,双击 jbpm-server 目录下的 start.bat 文件,启动 JBoss 服务。打开网页: http://localhost:8080/ jbpm-console 得到如下页面: 
 这是一个流程控制管理平台,用右边的账号与密码就可以登录,这个控制台包括流程管理,可以部署流程、删除流程、查看流程图、管理流程实例等;还有任务管理,工作管理及用户与用户组管理。   基于Tomcat和MySQL的部署:          现在要把上面演示的例子部署到Tomcat中,并将数据数配置为MySQL。STEP 1,初始化数据库 jBPM 需要数据库支持, jBPM 会把自己的一个初始化数据存储到数据库,同时工作流的数据也是存储到数据库中的。 jBPM 使用 Hibernate 作为的存储层。在E:\Java\tools\jbpm-jpdl-3.2.2\db\目录下有个jbpm.jpdl.mysql.sql数据库脚本文件。我们不能直接导入该文件, 会提示有错误, 应为该文件格式有问题, 首先打开该文件(推荐UltraEdit), 把前面的 alter table JBPM_XX 语句都删除(因为我们使用的是新的数据库,所以需要这些语句, 这个脚本文件是升级3.2的数据库表结构用的) 然后在每一行前面添加一个分号 不然脚本执行会出错。这样就可以用source命令导入了。 导入后, 表结构创建成功。STEP 2,准备发布包        在E:\Java\tools\jbpm-jpdl-3.2.2\deploy 文件夹下 运行ant customize.console.for.tomcat。执行命令后会在 E:\Java\tools\jbpm-jpdl-3.2.2\deploy\customized文件夹下生成一个jbpm-console.war 文件,用WinRaR解压开,并复制到已安装Tomcat的webapps目录下,jbpm还需三个依赖类库,分别是commons-collections.jar、ehcache-1.2.3.jar、jta.jar,当然还有个MySQL驱动mysql-connector-java-5.0.7-bin.jar,添加这些jar文件 到 \$CATALINA_HOME\webapps\jbpm-console\WEB-INF\lib目录下。STEP 3,修改Hibernate数据库配置文件        修改\$CATALINA_HOME\webapps\jbpm-console\WEB-INF\classes下hibernate.cfg.xml文件。这是Hibernate的数据库配置文件,要做一些修改,原来内容如下: 
    
        
            | <!--  hibernate dialect -->    <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>  <!--  JDBC connection properties (begin) ===   <property name="hibernate.connection.driver_class"> org.hsqldb.jdbcDriver</property>   <property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property>   <property name="hibernate.connection.username">sa</property>   <property name="hibernate.connection.password"></property> ==== JDBC connection properties (end) -->    <property name="hibernate.cache.provider_class"> org.hibernate.cache.HashtableCacheProvider</property>  <!--  DataSource properties (begin) -->    <property name="hibernate.connection.datasource">java:/JbpmDS</property> <!--  DataSource properties (end) --> |  修改后如下:  
STEP 4,设置Tomcat安全域
    
        
            | <!-- hibernate dialect --> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLInnoDBDialect</property> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver</property>   <property name="hibernate.connection.url"> jdbc:mysql://localhost:3306/jbpm</property>   <property name="hibernate.connection.username">jbpmuser</property>   <property name="hibernate.connection.password">shine</property> <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property> |         有两种方法都可以实现,但摧荐第一种方法。 方法一:配置一个JDBC Realm,在\$CATALINA_HOME\webapps\jbpm-console\META-INF目录下新建context.xml文件,内容如下: 
    
        
            | <?xml version="1.0" encoding="UTF-8"?> <Context> <Realm className="org.apache.catalina.realm.JDBCRealm"    driverName="com.mysql.jdbc.Driver"   connectionURL="jdbc:mysql://localhost:3306/jbpm"   connectionName="jbpmuser"    connectionPassword="shine" userTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"    userNameCol="g.TYPE_ = 'security-role' AND m.GROUP_ = g.ID_ AND m.USER_ = u.ID_ AND u.NAME_"    userCredCol="DISTINCT u.PASSWORD_"   userRoleTable="JBPM_ID_USER u, JBPM_ID_MEMBERSHIP m, JBPM_ID_GROUP g"    roleNameCol="g.NAME_" /></Context> |  方法二:直接修改 /$CATALINA_HOME/conf/tomcat-users.xml文件来设置安全域。为了不和tomcat已有的用户冲突,这里把 tomcat以前的登陆帐号username="admin" 修改为username="tadmin",修改后的文件如下: 
    
        
            | <?xml version='1.0' encoding='utf-8'?> <tomcat-users>   <role rolename="user"/>   <role rolename="administrator"/>   <role rolename="manager"/>   <role rolename="sales"/>   <role rolename="hr"/>   <role rolename="admin"/>   <role rolename="participant"/>   <user username="user" password="user" roles="user,sales"/>   <user username="shipper" password="shipper" roles="user,hr"/>   <user username="manager" password="manager" roles="admin,hr,manager,user,sales"/><user username="tadmin" password="" roles="admin,manager"/> <user username="admin" password="admin" roles="admin,user,hr"/>
 </tomcat-users>
 |   STEP 5,初始化基础的用户数据  在MySQL数据库中执行以下SQL语句,进行初始化用户信息,如下:  
STEP 6,启动Tomcat服务
    
        
            | INSERT INTO JBPM_ID_GROUP VALUES(1,'G','sales','organisation',NULL); INSERT INTO JBPM_ID_GROUP VALUES(2,'G','admin','security-role',NULL); INSERT INTO JBPM_ID_GROUP VALUES(3,'G','user','security-role',NULL); INSERT INTO JBPM_ID_GROUP VALUES(4,'G','hr','organisation',NULL); INSERT INTO JBPM_ID_GROUP VALUES(5,'G','manager','security-role',NULL); INSERT INTO JBPM_ID_USER VALUES(1,'U','user','user@sample.domain','user'); INSERT INTO JBPM_ID_USER VALUES(2,'U','manager','manager@sample.domain','manager'); INSERT INTO JBPM_ID_USER VALUES(3,'U','admin','admin@sample.domain','admin'); INSERT INTO JBPM_ID_USER VALUES(4,'U','shipper','shipper@sample.domain','shipper'); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(1,'M',NULL,NULL,2,4); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(2,'M',NULL,NULL,3,4); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(3,'M',NULL,NULL,4,4); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(4,'M',NULL,NULL,4,3); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(5,'M',NULL,NULL,1,3); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(6,'M',NULL,NULL,2,3); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(7,'M',NULL,NULL,3,3); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(8,'M',NULL,NULL,3,2); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(9,'M',NULL,NULL,2,2); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(10,'M',NULL,NULL,2,5); INSERT INTO JBPM_ID_MEMBERSHIP VALUES(11,'M',NULL,'boss',2,1);INSERT INTO JBPM_ID_MEMBERSHIP VALUES(12,'M',NULL,NULL,1,1); |  启动时查看Tomcat的日志,检查是否正常启动,未添加所有支持库或数据库配置出错,都会引起启动失败。        注意:到此为止启动Tomcat,JBPM服务就能正常运行了,已经可以在上面发布流程,接着第五步中部署一个jbpm自带的流程例子。    STEP 7,发布例子流程         打开网页:http://localhost:8080/jbpm 得到如下页面就说明已经部署成功:  
 用右边的manage账号登录,如下图: 
 点击“Deploy”转到部署流程页面,点击“浏览”按扭选择E:\Java\tools\jbpm-jpdl-3.2.2\examples\websale\target\websale.jpdl文件,名后点击“Deploy”按扭部署。 
			
			由于窗口售票的预售期为6天,电话订票预售期为10天,所以到窗口基本上不可能买到火车票,因此电话订票是最佳选择。一、订票电话:
 深圳:95105160、16883127;可订深圳始发列车车票
 广州:96020088、95105105;可订广州各站、佛山站始发车票
 二、订票时间:
 深圳从1月25日起早上7点到晚上9点可订春运火车票,可订10天以内的车票。一次订票流程只能预订同一日期、同一车次、同一到站的车票最多3张。按自已的行程,从春运开始就订吧,
 注:2008年1月24日 - 2008年3月3日,春节前15天,春节后25天。春运为期40天。
 提示:春运期间退票请提前六小时。一般不要退,别怕票没人要!不要浪费!在网上交流,给老乡!
 
 三、订票流程:
 亲身体验的95105160订票流程介绍:
 1。选择出发站。不要挑!深圳的朋友可选深圳站或深圳西站,广州的朋友可选广州站,广州东站,佛山站,越是不起眼的站越容易订得到,选冷门!
 2。输入出发时间。如 01 25表示 1月25日出发。没有你要理想的那天的,也千万不要挂了电话!打通一次不容易呀,运气好的话可多次选!不要挑!
 3。输入目的地区号。如到太湖0556。。,即当地电话区号!
 4。选择车票类型。如 硬座,硬卧。不要挑剔!一票难求!上车了再说
 5。选择几张票 。如 3。机会难得!抓住了,订最多的,帮大家!
 6。选择车次。 如果有很多车次,不熟悉出发时间就糟了,建议先查询火车车次和时间,最好不要选择在晚上的,特别是人少带的东东多的女孩子。
 7。输入身份证号码!这是取票凭证!
 8。记录订单号码!一定要记准!事前一定要准备好笔和纸!
 9。去取票点取票。选择尽量大早的时间去,一下要准备好现金,备好零钱。注意小偷!
 深圳电话订票取票点
 订票技巧心得[/
 一、要做好思想准备,从心理到实际操作中都要认识到这是一场持久战。打电话的次数不是以十计的(个人打了不下几百次,晕死),今天不成就明天,明天还不成就后天,总之是不打进去誓不罢休。要越挫越勇!
 二、根据个人从网上几个论坛里看到的订票经验来看就是一定要用座机。在这种高效率高反复的工作中,座机的重拨优势得以发挥的淋漓尽致。
 三、每次打电话的时候都要尽可能快尽可能多的重拨,不过一定要听准了。在长时间的重复操作的状况下,很容易就把接通的声音给错过了,机会难得这可比买彩票中奖还难哦一定要好好珍惜。
 四、不打无准备的仗!事前在网上查询到目的地的所有列车车次,并把目的地前后的几个要停的站记下。然后再在网上找到各个站点所在的区号。
 五、因为是自动订票电话,所在地打电话的时间是越早越好!看到好多人打进去定到票都是从6点50开始打一直打到8,9点,从定到票的比列来看这个时段所占的比列很大。晚上8点以后基本打进去的都已经订不到了。可能也有特例吧。
 六、当你好不容易打进去的时候一定要珍惜这得之不易的机会,千万不能因为你要定的那天或者那个站的票已经没了就轻易放弃!因为很多前面几天的票被人定了后没有去取又重新放出来,这时你可以试着查询前几天到该站的票,
 七、如果还是没有的话,就把第四条中叫你准备的其他站点区号拿出来,试着再查询有没有同一列车同一路线到其他站的票:目的站的前一两站也可以订!上了车就好,只要你不下,少的上了车再补一两站票吧。或目的地的下一站,为了过年回家多花一点也值!
 (坚持到底就是胜利!)
 
 特别提醒:
 ●一次订票流程只能预订同一日期、同一车次、同一到站的车票最多3张。
 ●订票过程中,须输入有效证件号码,凭订单号码和有效证件到取票点取票。订单号码和订票时输入的有效证件号码必须相符,否则将无法取到车票。
 ●春运期间,每个有效证件只能电话预订一次车票。
 ●电话订票成功后,如需变更,应先拨打16883127或95105105,95105160电话取消所订车票才能再重新电话预订。
 ●拨打16883127或95105105,95105160预订异地票,需到所订车票的乘车站或该区域的取票点取票。如广州市民成功预订到深圳火车站发车的车票后,必须到深圳地区的取票点去取票。各地取票点地址和联系电话可拨打95105688查询。
 ●学生票、军人票等特殊订票,必须持有效证件到火车站内售票厅的专门窗口取票。
 
			
			实现网页以特效的方式打开
 垂直百叶窗:
 <meta http-equiv="Page-Enter" content="RevealTrans (Duration=3, Transition=8)">
 
 Duration: 定义网页打开时间,一般设为3~5
 Transition:定义特效方式,共有24种可选
 
 0 盒状收缩
 1 盒状放射
 2 圆形收缩
 3 圆形放射
 4 由下往上
 5 由上往下
 6 从左至右
 7 从右至左
 8 垂直百叶窗
 9 水平百叶窗
 10 水平格状百叶窗
 11垂直格状百叶窗
 12 随意溶解
 13从左右两端向中间展开
 14从中间向左右两端展开
 15从上下两端向中间展开
 16从中间向上下两端展开
 17 从右上角向左下角展开
 18 从右下角向左上角展开
 19 从左上角向右下角展开
 20 从左下角向右上角展开
 21 水平线状展开
 22 垂直线状展开
 23 随机产生一种过渡方式
 
			
			一、按钮样式
 
二、蓝色按钮.buttoncss { 
    font-family: "tahoma", "宋体";  
    font-size:9pt; color: #003399; 
    border: 1px #003399 solid; 
    color:#006699; 
    border-bottom: #93bee2 1px solid; 
    border-left: #93bee2 1px solid; 
    border-right: #93bee2 1px solid; 
    border-top: #93bee2 1px solid; 
    background-image:url(../images/bluebuttonbg.gif); 
    background-color: #e8f4ff; 
    cursor: hand; 
    font-style: normal ; 
    width:60px; 
    height:22px; 
}
  
三、红色按钮.bluebuttoncss { 
    font-family: "tahoma", "宋体";  
    font-size: 9pt; color: #003366; 
    border: 0px #93bee2 solid; 
    border-bottom: #93bee2 1px solid; 
    border-left: #93bee2 1px solid; 
    border-right: #93bee2 1px solid; 
    border-top: #93bee2 1px solid;*/ 
    background-image:url(../images/blue_button_bg.gif); 
    background-color: #ffffff; 
    cursor: hand; 
    font-style: normal ; 
}
  
四、选择按钮.redbuttoncss { 
    font-family: "tahoma", "宋体";  
    font-size: 9pt; color: #0066cc; 
    border: 1px #93bee2 solid; 
    border-bottom: #93bee2 1px solid; 
    border-left: #93bee2 1px solid; 
    border-right: #93bee2 1px solid; 
    border-top: #93bee2 1px solid; 
    background-image:url(../images/redbuttonbg.gif); 
    background-color: #ffffff; 
    cursor: hand; 
    font-style: normal ; 
}
  
五、绿色按钮.selectbuttoncss{font-family: "tahoma", "宋体";
 font-size: 9pt; color: #0066cc;
 border: 1px #93bee2 solid;
 border-bottom: #93bee2 1px solid;
 border-left: #93bee2 1px solid;
 border-right: #93bee2 1px solid;
 border-top: #93bee2 1px solid;
 background-image:url(../images/blue_button_bg.gif);
 background-color: #ffffff;
 cursor: hand;
 font-style: normal ;
 }
 
六、图像按钮.greenbuttoncss {font-family: "tahoma", "宋体";
 font-size: 9pt; color: #0066cc;
 border: 1px #93bee2 solid;
 border-bottom: #93bee2 1px solid;
 border-left: #93bee2 1px solid;
 border-right: #93bee2 1px solid;
 border-top: #93bee2 1px solid;
 background-image:url(../images/greenbuttonbg.gif);
 background-color: #ffffff;
 cursor: hand;
 font-style: normal ;
 }
 
七、页面正文.imagebutton{cursor: hand;
 }
 
body {scrollbar-face-color: #ededf3;
 scrollbar-highlight-color: #ffffff;
 scrollbar-shadow-color: #93949f;
 scrollbar-3dlight-color: #ededf3;
 scrollbar-arrow-color: #082468;
 scrollbar-track-color: #f7f7f9;
 scrollbar-darkshadow-color: #ededf3;
 font-size: 9pt;
 color: #003366;
 overflow:auto;
 }
 
八、下拉选择框td { font-size: 12px }th {
 font-size: 12px;
 }
 
九、线条文本编辑框select{border-right: #000000 1px solid;
 border-top: #ffffff 1px solid;
 font-size: 12px;
 border-left: #ffffff 1px solid;
 color:#003366;
 border-bottom: #000000 1px solid;
 background-color: #f4f4f4;
 }
 
十、多行文本框.editbox{background: #ffffff;
 border: 1px solid #b7b7b7;
 color: #003366;
 cursor: text;
 font-family: "arial";
 font-size: 9pt;
 height: 18px;
 padding: 1px;
 }
 
十一、阴影风格的表单.multieditbox{background: #f8f8f8;
 border-bottom: #b7b7b7 1px solid;
 border-left: #b7b7b7 1px solid;
 border-right: #b7b7b7 1px solid;
 border-top: #b7b7b7 1px solid;
 color: #000000;
 cursor: text;
 font-family: "arial";
 font-size: 9pt;
 padding: 1px;
 }
 
十二、只显一条横线的输入框.shadow {position:absolute;
 z-index:1000;
 top:0px;
 left:0px;
 background:gray;
 background-color:#ffcc00;
 filter : progidximagetransform.microsoft.dropshadow(color=#ff404040,offx=2,offy=2,positives=true);
 }
 
十三、没有边框的输入框.logintxt{border-right: #ffffff 0px solid;
 border-top: #ffffff 0px solid;
 font-size: 9pt; /*www.52css.com*/
 border-left: #ffffff 0px solid;
 border-bottom: #c0c0c0 1px solid;
 background-color: #ffffff
 }
 
.noneinput{text-align:center;
 width:99%;height:99%;
 border-top-style: none;
 border-right-style: none;
 border-left-style: none;
 background-color: #f6f6f6;
 border-bottom-style: none;
 }
 
			
			     摘要: 1、载入dwr的jar文件
              下载地址:http://www.cnweblog.com/Files/jimmy/dwr.rar    (将后缀名改为jar)
2、在web.xml中配制
&nbs...  阅读全文 
			
			使用Preferences API    参考资料
 Preferences的误解:
 首先要指明的是:Preferences API并不是为访问Windows注册表而设计的。
 
 我们之所以会有上面的误解是由于Sun的Windows版本的JDK在实现Preferences API时使用了Windows注册表作为存储库,即我们用Preferences API存储的数据会保存到Windows注册表中,这样Preferenes API也就有了访问Windows注册表的能力。但是换到其它的平台或其它厂商的JDK实现又会怎么样呢?这个问题是和Preferences API的实现相关的,我们没有办法回答。
 
 Preferences适用的条件:
 如果程序不关心存储库的细节,只是要找一个存放数据的地方,那么Preferences API很合适。
 
 Preferences API的局限:
 一个Java软件,这次我在Sun的JDK上运行并使用Preferences API保存了我的个人喜好,下次我在IBM的JDK上运行,这时我的个人喜好还可以通过Preferences API得到吗?可能可以也可能不可以,这时的行为是由Sun和IBM的Preferences API实现决定的。(在相同的JDK实现上可以使用Preferences API来在不同的程序间共享数据)
 一个Java软件需要让用户设置是否和操作系统一起启动,类似的需求还很多。这类需求就是要求Java程序有真正的和相关操作系统协同的能力。这种能力不是Preferences API的设计目标。
 
 使用JNI    参考资料
 Windows操作系统提供了操作注册表的API,因此用JNI将Java和这些API连接起来我们就获得了用Java操作注册表的能力。这说起来有些简单,实现起来却需要处理大量的细节。幸运的是这样的工作已经有人做了,我们要感谢他们。下面我们就来看看其中的一个包。
 
 com.ice.jni.registry包是通过JNI(Java native interface)实现的Windows注册表操作API,可以用来访问、修改和导出Windows注册表。现在这个包已经公开了,可以放心的使用而不必担心license的问题,并且包括一个构建好的DLL和Java、C的源代码。它可以在Java 1.1和更高的版本上工作。
 
 
 
 下面详细的描述一下这个包中的类,数量不是很多:
 
 
    HexNumberFormat 用来格式化和分析十六进制整数。
    RegBinaryValue 表示类型为REG_BINARY的注册表值。REG_BINARY是指任意形式的二进制数。
    RegDWordValue 表示类型为REG_DWORD的注册表值。REG_DWORD是指一个32位的整数。根据该整数的字节序不同又分为REG_DWORD_LITTLE_ENDIAN和REG_DWORD_BIG_ENDIAN。在Windows中REG_DWORD和REG_DWORD_LITTLE_ENDIAN有相同的含义。
    RegistryValue 表示任意类型的注册表值,这是一个抽象类,不能被实例化。
    RegMultiStringValue 表示类型为REG_MULTI_SZ的注册表值。REG_MULTI_SZ是一个null-terminated的字符串的序列。
    RegStringValue 表示类型为REG_SZ和REG_EXPAND_SZ的注册表值。REG_SZ是指一个null-terminated的字符串,REG_EXPAND_SZ是指一个含有未展开的环境变量的null-terminated的字符串。
    Registry 这个类定义了定级项(Key),包括HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、HKEY_CURRENT_USER、HKEY_DYN_DATA、HKEY_LOCAL_MACHINE、HKEY_PERFORMANCE_DATA和HKEY_USERS。还定义了错误代码,这些错误代码会包含在RegistryException中。最后是一些工具方法,如dumpHexData、exportRegistryKey、getErrorMessage、getTopLevelKey、openSubkey、parseArgumentString、parseArgumentVector、splitString和usage。
    RegistryKey 定义了注册表的一个表项(Key)和相关的一些操作。  RegistryKey的方法概要: 
 
    
        
            | 方法 | 简短描述 |  
            | void closeKey() | 关闭该subkey。 |  
            | RegistryKey connectRegistry(java.lang.String hostName) | 连接远程主机hostName的注册表。 |  
            | RegistryKey createSubKey(java.lang.String subkey, java.lang.String className) | 创建和打开该key的subkey,具有写权限。 |  
            | RegistryKey createSubKey(java.lang.String subKey, java.lang.String className, int access) | 创建和打开该key的subkey,具有指定的权限。 |  
            | int decrDoubleWord(java.lang.String valueName) | 该方法将消减REG_DWORD的值。 |  
            | void deleteSubKey(java.lang.String subKey) | 删除该subkey。 |  
            | void deleteValue(java.lang.String valueName) | 删除一个命名的值。 |  
            | static java.lang.String expandEnvStrings(java.lang.String exString) | 展开exString中的环境变量。 |  
            | void export(java.io.PrintWriter out, boolean descend) | 导出key。 |  
            | void finalize() | 重载了的finalize()方法,确保能够关闭key。 |  
            | void flushKey() | 确保这个key被写到磁盘,对性能有一定的影响。 |  
            | java.lang.String getDefaultValue() | 得到该key的默认值。 |  
            | java.lang.String getFullName() | 得到key的全名。 |  
            | int getMaxSubkeyLength() | 得到所有subkey名称的最大长度。 |  
            | int getMaxValueDataLength() | 得到所有subkey值的最大长度。 |  
            | int getMaxValueNameLength() | 得到所有值的名称的最大长度。 |  
            | java.lang.String getName() | 得到该key的名称。 |  
            | int getNumberSubkeys() | 得到subkey的数量。 |  
            | int getNumberValues() | 得到值的数量。 |  
            | java.lang.String getStringValue(java.lang.String valueName) | 得到REG_SZ或REG_EXPAND_SZ的值。 |  
            | RegistryValue getValue(java.lang.String valueName) | 得到valueName的值。 |  
            | boolean hasDefaultValue() | 判断该key是否有默认值。 |  
            | boolean hasOnlyDefaultValue() | 判断该key是否只有默认值。 |  
            | int incrDoubleWord(java.lang.String valueName) | 该方法将增强REG_DWORD的值。 |  
            | java.util.Enumeration keyElements() | 枚举该key的subkey的名称。 |  
            | RegistryKey openSubKey(java.lang.String subkey) | 打开该key的subkey,具有写权限。 |  
            | RegistryKey openSubKey(java.lang.String subKey, int access) | 打开该key的subkey,具有指定的权限。 |  
            | java.lang.String regEnumKey(int index) | 得到该key在index处的subkey。 |  
            | java.lang.String regEnumValue(int index) | 得到该key在index处的subkey的值。 |  
            | void setCreated(boolean created) | 设置该key的created状态。 |  
            | void setValue(RegistryValue value) | 设置该key的值。 |  
            | void setValue(java.lang.String valueName, RegistryValue value) | 设置valueName的值。 |  
            | java.util.Enumeration valueElements() | 枚举该key的值的名称。 |  
            | boolean wasCreated() | 判断该key是被opened还是被created和opened。 |  
 最后我们来看一个代码示例:
 package org.solol.test;
import com.ice.jni.registry.NoSuchKeyException;
import com.ice.jni.registry.RegStringValue;
import com.ice.jni.registry.Registry;
import com.ice.jni.registry.RegistryException;
import com.ice.jni.registry.RegistryKey;
/**
* @author solo L
*
*/
public class JNIRegistryTest {
     /**
      * @param args
      */
     public static void main(String[] args) {
       //创建注册表项并设置相应的值
       try {
         RegistryKey software = Registry.HKEY_LOCAL_MACHINE
           .openSubKey("SOFTWARE");
         RegistryKey subKey = software.createSubKey("SubKeyName", "");
         subKey.setValue(new RegStringValue(subKey, "subKey1",
           "subKey1Value"));
         subKey.setValue(new RegStringValue(subKey, "subKey2",
           "subKey2Value"));
         subKey.closeKey();
       } catch (NoSuchKeyException e) {
         e.printStackTrace();
       } catch (RegistryException e) {
         e.printStackTrace();
       }
                  
       //打开注册表项并读出相应的值
       try {
         RegistryKey software = Registry.HKEY_LOCAL_MACHINE.
           openSubKey("SOFTWARE");
         RegistryKey subKey = software.openSubKey("SubKeyName");
         String subKey1Value = subKey.getStringValue("subKey1");
         String subKey2Value = subKey.getStringValue("subKey2");
         System.out.println(subKey1Value);
         System.out.println(subKey2Value);
         subKey.closeKey();
       } catch (NoSuchKeyException e) {
         e.printStackTrace();
       } catch (RegistryException e) {
         e.printStackTrace();
       }                     
     }
}
创建的注册表项如图所示:
   输出结果为: 
 subKey1Value
 
 subKey2Value
 
 
 
 说明:我的体会“第一步:把下载下来的jar包加载到工程内,第二步,把与jar包在一起的dll文件拷贝到你jdk安装目录下\jre\bin文件夹下” |