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

2008年9月22日

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书记 阅读(331) | 评论 (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书记 阅读(177) | 评论 (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书记 阅读(233) | 评论 (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书记 阅读(200) | 评论 (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书记 阅读(570) | 评论 (1)编辑 收藏