中文 => English   |   English => 中文
posts - 12, comments - 2, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

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_  的错误

posted @ 2008-11-24 14:55 牛X书记 阅读(332) | 评论 (0)编辑 收藏

  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  

posted @ 2008-10-13 10:23 牛X书记 阅读(178) | 评论 (0)编辑 收藏

(一).确认删除用法:
  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("&nbsp;","").Replace("\","\\").Replace("-","-").Replace("&amp;","&").Replace("&lt;"," <").Replace("&gt;",">").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>

posted @ 2008-10-13 10:22 牛X书记 阅读(235) | 评论 (0)编辑 收藏

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.驴是的念来过倒~

posted @ 2008-10-06 14:20 牛X书记 阅读(581) | 评论 (0)编辑 收藏

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.皮鞋包皮放久了发霉时,可用软布蘸酒精加水(11)溶液擦拭即可;
50.发生头痛、头晕时,可在太阳穴涂上牙膏,因为牙膏含有薄荷脑、丁香油可镇痛;
51.蜡烛冷冻二十四小时后,再插到生日蛋糕上,点燃时不会流下烛油;
52.白色衣裤洗后易泛黄,可取一盆清水,滴上二三滴蓝墨水,将洗过的衣裤在浸泡一刻钟,不必拧干,就放在太阳下晒,即可洁白干净;
53.过多食用生葱蒜会刺激口腔肠胃,不利健康,最好加一点醋再食用;
54.及时补充水分但应少喝果汁、可乐、雪碧、汽水等饮料,含有较多的糖精和电解质,喝多了会对肠胃产生不良刺激,影响消化和食欲。因此夏天应多喝白开水或淡盐(糖)水;
55.每天早晨用豆腐摩擦面部几分钟,坚持一个月,面部会变得很滋润;
56.调室内温差不宜超过五度,即使天气再热,空调室内温度也不宜到24度以下
57.加酶洗衣粉剂放在温水中需要较长的分解时间才能使洗衣效果更佳;
58.夏天,人的活动时间变长,出汗多,耗能过大,应适当多吃鸡、鸭、瘦肉、鱼类、蛋类等营养食品,以满足人体的代谢需要;
59.头痛时把苹果磨成泥状涂在纱布上,贴在头痛处,症状可减轻;
60.皮包上有污渍,可以用棉花蘸风油精擦拭。

posted @ 2008-10-01 21:42 牛X书记 阅读(202) | 评论 (0)编辑 收藏

关键字: 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、  安装JDKMySQL

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.2http://labs.jboss.com/jbossjbpm/jbpm_downloads/下载jPDL Suite版,这个版本是包含所有的一整套工具,下载后是个压缩包解压到 E:\Java\tools :、\jbpm-jpdl-3.2.2 ,目录下主要包含以下几个子目录:

l  src —— jBPM 的源代码

l  config —— jBPMHibernatelog4j的配置文件

l  db —— 各种数据库的建表SQL语句

l  lib —— 依赖的第三方依赖类库

l  doc —— API文档及用户使用向导

l  designer —— 辅助开发 jBPM Eclipse 插件,具体在 eclipse子目录中

l  server —— 一个已经配置好了的基于 JBoss jBPM 控制台及示例

5、  安装EclipsejBPM开发插件

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 得到如下页面:

这是一个流程控制管理平台,用右边的账号与密码就可以登录,这个控制台包括流程管理,可以部署流程、删除流程、查看流程图、管理流程实例等;还有任务管理,工作管理及用户与用户组管理。

 

基于TomcatMySQL的部署:

 

       现在要把上面演示的例子部署到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解压开,并复制到已安装Tomcatwebapps目录下,jbpm还需三个依赖类库,分别是commons-collections.jarehcache-1.2.3.jarjta.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\classeshibernate.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) -->

修改后如下:

<!-- 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>
 STEP 4,设置Tomcat安全域

       有两种方法都可以实现,但摧荐第一种方法。

方法一:配置一个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语句,进行初始化用户信息,如下:

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);
 STEP 6,启动Tomcat服务

启动时查看Tomcat的日志,检查是否正常启动,未添加所有支持库或数据库配置出错,都会引起启动失败。

       注意:到此为止启动TomcatJBPM服务就能正常运行了,已经可以在上面发布流程,接着第五步中部署一个jbpm自带的流程例子。 

 

STEP 7,发布例子流程

       打开网页:http://localhost:8080/jbpm 得到如下页面就说明已经部署成功:

 

用右边的manage账号登录,如下图:

点击“Deploy”转到部署流程页面,点击“浏览”按扭选择E:\Java\tools\jbpm-jpdl-3.2.2\examples\websale\target\websale.jpdl文件,名后点击“Deploy”按扭部署。

posted @ 2008-09-28 21:36 牛X书记 阅读(323) | 评论 (0)编辑 收藏

由于窗口售票的预售期为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查询。
  ●学生票、军人票等特殊订票,必须持有效证件到火车站内售票厅的专门窗口取票。

posted @ 2008-09-22 09:38 牛X书记 阅读(575) | 评论 (1)编辑 收藏

实现网页以特效的方式打开

垂直百叶窗:
<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 随机产生一种过渡方式

posted @ 2008-09-20 16:36 牛X书记 阅读(383) | 评论 (0)编辑 收藏

posted @ 2008-09-20 15:51 牛X书记 阅读(378) | 评论 (0)编辑 收藏

一、按钮样式



.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;
}

posted @ 2008-09-20 14:54 牛X书记 阅读(371) | 评论 (0)编辑 收藏

     摘要: 1、载入dwr的jar文件               下载地址:http://www.cnweblog.com/Files/jimmy/dwr.rar    (将后缀名改为jar) 2、在web.xml中配制 &nbs...  阅读全文

posted @ 2008-09-20 11:06 牛X书记 阅读(524) | 评论 (0)编辑 收藏

使用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文件夹下”

posted @ 2008-09-20 10:32 牛X书记 阅读(7046) | 评论 (1)编辑 收藏