blogjava-凯发k8网页登录

blogjava-凯发k8网页登录http://www.blogjava.net/dreamstone/开发出高质量的系统zh-cnsat, 08 apr 2023 20:37:37 gmtsat, 08 apr 2023 20:37:37 gmt60做了个osworkflow的designer工具,模仿jbpm的样式。大家试用用http://www.blogjava.net/dreamstone/archive/2009/09/14/295047.htmldreamstonedreamstonemon, 14 sep 2009 10:01:00 gmthttp://www.blogjava.net/dreamstone/archive/2009/09/14/295047.htmlhttp://www.blogjava.net/dreamstone/comments/295047.htmlhttp://www.blogjava.net/dreamstone/archive/2009/09/14/295047.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/295047.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/295047.html http://www.blogjava.net/files/dreamstone/eclipse1.part1.rar

http://www.blogjava.net/files/dreamstone/eclipse1.part3.rar
http://www.blogjava.net/files/dreamstone/eclipse1.part4.rar



dreamstone 2009-09-14 18:01 发表评论
]]>
理解osworkflow 工作流http://www.blogjava.net/dreamstone/archive/2009/08/19/291755.htmldreamstonedreamstonewed, 19 aug 2009 02:44:00 gmthttp://www.blogjava.net/dreamstone/archive/2009/08/19/291755.htmlhttp://www.blogjava.net/dreamstone/comments/291755.htmlhttp://www.blogjava.net/dreamstone/archive/2009/08/19/291755.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/291755.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/291755.html

什么是工作流:
就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。

工作流的应用场景:
soa中的时序编排,oa系统中的审批流转。大部分管理流程中都可以用到工作流。

工作流与业务的关系
一、业务集成到工作流中:一种常见的做法是把所有的业务集成到工作流中,如果有个业务就定义个function,然后放进去。例如要生成spcode。
1、带来的好处:
业务与工作流完全集成,只需要找到工作流配置文件,以他为主线就能找到所有的业务。让代码的阅读维护更方便。
2、坏处:
并不是最好的理念,仍然需要一次次的读原来的代码,复用性差,可剥离性差(比如我不想用工作流了),替换性差(比如我想从osworkflow到jbpm),侵入性高。跟现在大家说的最多的soa冲突。
3、适用环境
小项目开发,灵活,重写难度不大

二、业务单独写,工作流后加入进去
用非工作流的代码实现所有的业务,再用工作流编排
1、带来的好处:
符合soa的原则,可以分组件,分服务,分应用,复用性好,一旦复用消耗小,并不需要了解内部代码。
2、坏处:
初期消耗大,业务划分难度大,需要频繁调整。
3、适用环境
越大型的项目越好,甚至可以在应用之间组织。在电子系统集成中最有用。

工作流引擎:
字面意思理解,工作流引擎就是工作流核心元素凯发天生赢家一触即发官网的解决方案。
那工作流的核心是什么呢?
有权限的操作者触发流程在各种条件下的跳转。
关键的是权限,条件,跳转。
所以工作流引擎实现的就是:
根据角色、分工和条件的不同决定信息传递路由

使用工作流引擎带来的便利:
1、开发简化
2、稳定性
3、易维护

理解工作流:
一句话:其实软件设计上更多的是借鉴非软件知识,比如设计模式来源于建筑。哲学上也有大同理论。


说了好久的工作流,知道它的好处,知道它的坏处,知道应用场景,但工作流还是有点朦胧,想到设计工作流,理解工作流还是有点头疼。特别是在大的场景,比如说我要实现任意方式定义的流程。听到这个就头大。那如何解决这个问题呢?

越是这类问题,约容易从理论的高度来解决。那么我们来看osworkflow是基于什么实现的?有限状态机。当我们放到宏观,我们要解决所有问题的时候会感觉很棘手,任意流程。但放到微观呢。虽然我们最终是要解决整个的路由。但是我只要解决任意两个step之间的路由。所有的路由就解决了。这也是数学上的归纳法。

好了现在的问题已经变成如何解决两个step之间的路由了,从两个step之间的路由,再次缩减到,我只需要知道一个step可以到什么地方,那我就知道是否两个step之间存在路由。

那放到一个step上是否就是有限状态机了呢?没错。
step就是状态,action就是状态转换,但是osworkflow赋予了action太多的功能,变成了action中的result才是转换,而action变成了转换过程中一些列操作及转换的集合。

有限状态机:
你熟悉他吗,一定的,一定熟悉他,想想有多少程序是基于他实现的。比如rpg游戏中迷宫的任意路口,比如rpg游戏中的情节设定。如果你写一个游戏引擎,你会发现fsm离你有多近。即使你不写游戏引擎,你玩游戏吗,在rpg中是否用笔通过一个个的点再现过迷宫地图,是否通过一次次的通关找到各种隐藏情节,这就是状态机。

osworkflow的设计工具:
为什么osworkflow不提供设计工具呢,osworkflow开发者说,要灵活,这是程序员干的事情。但是uml本身也是程序员干的事情。再想想因为osworkflow基于有限状态机,而对于有限状态机这种如果用uml表现出来是困难的。总会出一些难以控制的地方,再来看看jbpm,因为jbpm是基于状态图的,来源于uml,所以更容易出设计工具。


个人理解,大家交流



dreamstone 2009-08-19 10:44 发表评论
]]>
html in mms or fetch remote media in mms(彩信中能否自动访问远程资源)http://www.blogjava.net/dreamstone/archive/2009/05/22/277270.htmldreamstonedreamstonefri, 22 may 2009 03:51:00 gmthttp://www.blogjava.net/dreamstone/archive/2009/05/22/277270.htmlhttp://www.blogjava.net/dreamstone/comments/277270.htmlhttp://www.blogjava.net/dreamstone/archive/2009/05/22/277270.html#feedback1http://www.blogjava.net/dreamstone/comments/commentrss/277270.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/277270.html阅读全文

dreamstone 2009-05-22 11:51 发表评论
]]>
axis2 入门 quickstart(webservice requested resource not found)http://www.blogjava.net/dreamstone/archive/2009/01/31/252781.htmldreamstonedreamstonesat, 31 jan 2009 03:20:00 gmthttp://www.blogjava.net/dreamstone/archive/2009/01/31/252781.htmlhttp://www.blogjava.net/dreamstone/comments/252781.htmlhttp://www.blogjava.net/dreamstone/archive/2009/01/31/252781.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/252781.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/252781.html阅读全文

dreamstone 2009-01-31 11:20 发表评论
]]>
使用apache tomcat比单独使用tomcat能带来什么样的好处及坏处http://www.blogjava.net/dreamstone/archive/2008/11/07/239231.htmldreamstonedreamstonefri, 07 nov 2008 04:33:00 gmthttp://www.blogjava.net/dreamstone/archive/2008/11/07/239231.htmlhttp://www.blogjava.net/dreamstone/comments/239231.htmlhttp://www.blogjava.net/dreamstone/archive/2008/11/07/239231.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/239231.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/239231.html阅读全文

dreamstone 2008-11-07 12:33 发表评论
]]>
acegi的验证问题1 ---中文用户名登录,及md5加密密码方式http://www.blogjava.net/dreamstone/archive/2008/09/19/230020.htmldreamstonedreamstonefri, 19 sep 2008 13:29:00 gmthttp://www.blogjava.net/dreamstone/archive/2008/09/19/230020.htmlhttp://www.blogjava.net/dreamstone/comments/230020.htmlhttp://www.blogjava.net/dreamstone/archive/2008/09/19/230020.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/230020.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/230020.html 因为之前acegi都是另一个同事负责,现在同事不在,只能自己解决,找到acegi中取得用户名的地方
org.acegisecurity.ui.webapp.authenticationprocessingfilter 中的这段代码
 1public authentication attemptauthentication(httpservletrequest request)
 2        throws authenticationexception {
 3        string username = obtainusername(request);
 4        string password = obtainpassword(request);
 5
 6        if (username == null{
 7            username = "";
 8        }

 9
10        if (password == null{
11            password = "";
12        }

13
14        usernamepasswordauthenticationtoken authrequest = new usernamepasswordauthenticationtoken(username, password);
15
16        // place the last username attempted into httpsession for views
17        request.getsession().setattribute(acegi_security_last_username_key, username);
18
19        // allow subclasses to set the "details" property
20        setdetails(request, authrequest);
21
22        return this.getauthenticationmanager().authenticate(authrequest);
23    }

24

取出username后发现是乱码,如果解决这个问题呢?第一个想到的是转码
username=new string(username.getbytes("iso8859-1"),"utf-8");
解决问题,但是这段代码要嵌入到acegi中必须重新编译acegi
上边的办法改动太大,再想办法,想到既然问题是来自编码,看看web.xml的filter发现原因在这
spring的filter是解决编码问题的,但是因为acegi的filter在spring之前,所以编码没有转码。又不能把acegi的filter挪到spring filter之后,这样就有安全问题了。

那就增加一个filter,只过滤登录链接,然后设置一下代替spring的encodingfilter设置一下编码,解决问题
public class encodechnusernamefilter implements filter{
    
private static final string acegi_security_form_username_key ="j_username";
    
private static final string acegi_security_form_password_key = "j_password";
    
public void destroy() {
        
    }


    
public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception {
        request.setcharacterencoding(
"utf-8");
        chain.dofilter(request, response);
    }


    
public void init(filterconfig arg0) throws servletexception {
        
    }

}
中文用户名登录问题解决了。

但是另一个问题来了,密码是非明文的md5加密的,需要加密,同样不想更改acegi。
那好吧继续使用filter,看看能否getparameter后再set回去
string password= request.getparameter("j_password");
//这里是个md5加密函数
password = md5(password);
//怎么set进去呢?
request.getparametermap().put("j_password",password);
//启动试一下,异常报错,map不能put,看一下异常,发现这个不是普通的map,是org.apache.catalina.util.parametermap,这个map中有个标志位lock,tomcat不让更改http接收到的值。
//基于不服输的精神,一定要搞定它,呵呵
parametermap map = (parametermap)request.getparametermap();
map.setlock(
false);
map.put(
"j_password",password);
map.setlock(
true);
//搞定?不对,编译不通过,发现org.apache.catalina.util.parametermap的jar包是catalina.jar。
把这个包放到lib下编译,通过,运行出向下转型错误,仔细看一下发现request.getparametermap()出来的parametermap.getclass()的id是300多,而接受转型
的parametermap.class.getclass()是6000多,不是一个类啊。想想也对,lib下和tomcat的server/lib下各有一个catalina.jar这个就是两个类了。

eclipse add 外部jar包,直接add上tomcat中的catalina.jar,编译运行,还是有问题,这次是报的classnotfound异常,为什么会这样呢,命名server
/lib下有这个jar包,后来想了下明白了。tomcat一定是限定了catalina.jar不能被普通的用户类所直接引用。处于安全性考虑吧。这条路走不通了,回到acegi才发现acegi的配置文件中是可以随意配置autheticationfilter的,自己写一个autheticationfilter,配置进去,不用系统的,解决问题,filter里边怎么写都没问题,爱怎么处理怎么处理,呵呵



dreamstone 2008-09-19 21:29 发表评论
]]>
apache ant中文手册 2.0版 (教程)http://www.blogjava.net/dreamstone/archive/2008/01/25/177827.htmldreamstonedreamstonefri, 25 jan 2008 10:36:00 gmthttp://www.blogjava.net/dreamstone/archive/2008/01/25/177827.htmlhttp://www.blogjava.net/dreamstone/comments/177827.htmlhttp://www.blogjava.net/dreamstone/archive/2008/01/25/177827.html#feedback109http://www.blogjava.net/dreamstone/comments/commentrss/177827.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/177827.html阅读全文

dreamstone 2008-01-25 18:36 发表评论
]]>
javascript 关联列表的实现(简单的和复杂的)http://www.blogjava.net/dreamstone/archive/2007/09/14/144114.htmldreamstonedreamstonefri, 14 sep 2007 01:39:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/14/144114.htmlhttp://www.blogjava.net/dreamstone/comments/144114.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/14/144114.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/144114.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144114.html  动态刷新实例  阅读全文

dreamstone 2007-09-14 09:39 发表评论
]]>
javascript 动态添加删除控件http://www.blogjava.net/dreamstone/archive/2007/09/14/144111.htmldreamstonedreamstonefri, 14 sep 2007 01:39:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/14/144111.htmlhttp://www.blogjava.net/dreamstone/comments/144111.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/14/144111.html#feedback1http://www.blogjava.net/dreamstone/comments/commentrss/144111.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144111.htmldoctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> new document title>
<meta name="generator" content="editplus">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="description" content="">
head>

<body>
<script language="javascript">
var i = 0,j = 0;     //行号与列号
var onewrow  ;    //定义插入行对象
var onewcell1,onewcell2;     //定义插入列对象

//添加条件行
function addrow()
{
= document.all.mytable.rows.length;
onewrow 
= document.all.mytable.insertrow(i);
onewrow.id 
= j;

//添加第一列
onewcell1 = document.all.mytable.rows[i].insertcell(0)
onewcell1.innerhtml 
= ""  j  "'"" size='14' value=\"\">";

//添加第二列
onewcell2 = document.all.mytable.rows[i].insertcell(1)
onewcell2.innerhtml 
=""  j  " value='删除当前行'""onclick='delcurrentrow("  j  ");'>";
j
;
}


//删除行
function delcurrentrow(j)
{
with(document.all.mytable)
{
for (var i=0;i<rows.length;i)
{
if (rows[i].id == j)
{
deleterow(i);
}

}

}

}

script>

<form method="post" action="">
<div style="margin-left:80px;color:red;font-weight:bold;">div>
<div align="center" class="title-font">
动态添加html元素
div>
<br>
<table style="border:0px;" cellpadding=0 cellspacing=0
     align
="center">
<tr>
<td style="border:0px;" width="340"><hr>td>
<td style="border:0px;"><input type=button value="添加" name"addfieldbt" onclick="addrow();"/>td>
tr>
table>
<br><br>
<table style="border:0px;" cellpadding=0 cellspacing=0
   align
="center" class="tablebody" id="mytable" border="0">
table>
<br><br>
<table style="border:0px;" cellpadding=0 cellspacing=0
   align
="center">
  
<tr>
   
<td align="center" style="border:0px;">
   
<input type=button value="提交" name="searchbt" onclick=""/>
   
td>
  
tr>
table>
<script language="javascript">addrow()script>
form>
body>
html>


dreamstone 2007-09-14 09:39 发表评论
]]>
最简单的ajax实现http://www.blogjava.net/dreamstone/archive/2007/09/10/144107.htmldreamstonedreamstonemon, 10 sep 2007 15:00:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144107.htmlhttp://www.blogjava.net/dreamstone/comments/144107.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144107.html#feedback2http://www.blogjava.net/dreamstone/comments/commentrss/144107.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144107.html<script type="text/javascript" language="javascript">

    
var http_request = false;

    
function makerequest(url) {

        http_request 
= false;

        
if (window.xmlhttprequest) // mozilla, safari,
            http_request = new xmlhttprequest();
            
if (http_request.overridemimetype) {
                http_request.overridemimetype('text
/xml');
            }

        }
 else if (window.activexobject) // ie
            try {
                http_request 
= new activexobject("msxml2.xmlhttp");
            }
 catch (e) {
                
try {
                    http_request 
= new activexobject("microsoft.xmlhttp");
                }
 catch (e) {}
            }

        }


        
if (!http_request) {
            alert('giving up :( cannot create an xmlhttp instance');
            
return false;
        }

        http_request.onreadystatechange 
= alertcontents;
        http_request.open('get', url, 
true);
        http_request.send(
null);

    }


    
function alertcontents() {

        
if (http_request.readystate == 4{
            
if (http_request.status == 200{
                alert(http_request.responsetext);
            }
 else {
                alert('there was a problem 
with the request.');
            }

        }


    }

script>
<span
    style
="cursor: pointer; text-decoration: underline"
    onclick
="makerequest('test.html')">
        make a request
span>


dreamstone 2007-09-10 23:00 发表评论
]]>
javascript两种渐变效果进度条的实现http://www.blogjava.net/dreamstone/archive/2007/09/10/144105.htmldreamstonedreamstonemon, 10 sep 2007 14:58:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144105.htmlhttp://www.blogjava.net/dreamstone/comments/144105.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144105.html#feedback2http://www.blogjava.net/dreamstone/comments/commentrss/144105.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144105.html 渐变效果进度条  var i;  function go()  {   bar_width = docum...  阅读全文

dreamstone 2007-09-10 22:58 发表评论
]]>
vb script实现杀掉进程http://www.blogjava.net/dreamstone/archive/2007/09/10/144104.htmldreamstonedreamstonemon, 10 sep 2007 14:54:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144104.htmlhttp://www.blogjava.net/dreamstone/comments/144104.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144104.html#feedback1http://www.blogjava.net/dreamstone/comments/commentrss/144104.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144104.html' processkilllocal.vbs
'
 sample vbscript to kill a program
'
 author guy thomas http://computerperformance.co.uk/
'
 version 2.7 - december 2005
'
 ------------------------ -------------------------------' 
option explicit
dim objwmiservice, objprocess, colprocess
dim strcomputer, strprocesskill 
strcomputer 
= "."
strprocesskill 
= "'otrun.exe'" 

set objwmiservice = getobject("winmgmts:" _
& "{impersonationlevel=impersonate}!\\" _ 
& strcomputer & "\root\cimv2"

set colprocess = objwmiservice.execquery _
(
"select * from win32_process where name = " & strprocesskill )
for each objprocess in colprocess
objprocess.terminate()
next 
wscript.echo 
"just killed process " & strprocesskill _
& " on " & strcomputer
wscript.quit 
' end of wmi example of a kill process 


dreamstone 2007-09-10 22:54 发表评论
]]>
javascript 禁止输入、禁止粘帖、禁止拖放、禁止输入法http://www.blogjava.net/dreamstone/archive/2007/09/10/144103.htmldreamstonedreamstonemon, 10 sep 2007 14:50:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144103.htmlhttp://www.blogjava.net/dreamstone/comments/144103.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144103.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/144103.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144103.html
function reginput(str){  
 reg=/^[a-z]*$/;
 return reg.test(str)
}

 onkeypress = "return reginput(string.fromcharcode(event.keycode))"
 onpaste = "return reginput(window.clipboarddata.getdata('text'))"
 ondrop = "return reginput(event.datatransfer.getdata('text'))"
 style="ime-mode:disabled">





另外如果要兼容ie ,firefox netscapt三个浏览器,就不能用onkeypress事件。
而应该把onkeypress事件变成 onkeydown事件 onkeyup事件。
再keydown事件中检查,并设置标志位,在onkeyup事件中返回,类似这样
script language="javascript">
 var tag;
    function kd(evt) {
  alert(evt.keycode);
  if (evt.keycode >= 48 && evt.keycode <= 57) {
   tag=true; 
   return;
  }else{
   if (evt.keycode==8){
    tag=true;
    return;
   }
  }
  tag=false;
 }
 function kp(){
  return tag;
 }

至于为什么这样,自己测试一下不这样的结果吧

dreamstone 2007-09-10 22:50 发表评论
]]>
javascript 格式化数字http://www.blogjava.net/dreamstone/archive/2007/09/10/144096.htmldreamstonedreamstonemon, 10 sep 2007 14:02:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144096.htmlhttp://www.blogjava.net/dreamstone/comments/144096.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144096.html#feedback2http://www.blogjava.net/dreamstone/comments/commentrss/144096.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144096.html<script>

function formatnumber(number,pattern){
    
var str            = number.tostring();
    
var strint;
    
var strfloat;
    
var formatint;
    
var formatfloat;
    
if(/\./g.test(pattern)){
        formatint        
= pattern.split('.')[0];
        formatfloat        
= pattern.split('.')[1];
    }
else{
        formatint        
= pattern;
        formatfloat        
= null;
    }


    
if(/\./g.test(str)){
        
if(formatfloat!=null){
            
var tempfloat    = math.round(parsefloat('0.'str.split('.')[1])*math.pow(10,formatfloat.length))/math.pow(10,formatfloat.length);
            strint        
= (math.floor(number)math.floor(tempfloat)).tostring();                
            strfloat    
= /\./g.test(tempfloat.tostring())?tempfloat.tostring().split('.')[1]:'0';            
        }
else{
            strint        
= math.round(number).tostring();
            strfloat    
= '0';
        }

    }
else{
        strint        
= str;
        strfloat    
= '0';
    }

    
if(formatint!=null){
        
var outputint    = '';
        
var zero        = formatint.match(/0*$/)[0].length;
        
var comma        = null;
        
if(/,/g.test(formatint)){
            comma        
= formatint.match(/,[^,]*/)[0].length-1;
        }

        
var newreg        = new regexp('(\\d{'comma'})','g');

        
if(strint.length<zero){
            outputint        
= new array(zero1).join('0')strint;
            outputint        
= outputint.substr(outputint.length-zero,zero)
        }
else{
            outputint        
= strint;
        }


        
var 
        outputint            
= outputint.substr(0,outputint.length%comma)outputint.substring(outputint.length%comma).replace(newreg,(comma!=null?',':'')'$1')
        outputint            
= outputint.replace(/^,/,'');

        strint    
= outputint;
    }


    
if(formatfloat!=null){
        
var outputfloat    = '';
        
var zero        = formatfloat.match(/^0*/)[0].length;

        
if(strfloat.length<zero){
            outputfloat        
= strfloatnew array(zero1).join('0');
            
//outputfloat        = outputfloat.substring(0,formatfloat.length);
            var outputfloat1    = outputfloat.substring(0,zero);
            
var outputfloat2    = outputfloat.substring(zero,formatfloat.length);
            outputfloat        
= outputfloat1outputfloat2.replace(/0*$/,'');
        }
else{
            outputfloat        
= strfloat.substring(0,formatfloat.length);
        }


        strfloat    
= outputfloat;
    }
else{
        
if(pattern!='' || (pattern=='' && strfloat=='0')){
            strfloat    
= '';
        }

    }


    
return strint(strfloat==''?'':'.'strfloat);
}


alert(formatnumber(
0,''));
alert(formatnumber(
12432.21,'#,###'));
alert(formatnumber(
12432.21,'#,###.000#'));
alert(formatnumber(
12432,'#,###.00'));
alert(formatnumber('
12432.415','#,###.0#'));


script>


dreamstone 2007-09-10 22:02 发表评论
]]>
用vbscript来重写javascripthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144018.htmldreamstonedreamstonemon, 10 sep 2007 07:45:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144018.htmlhttp://www.blogjava.net/dreamstone/comments/144018.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144018.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/144018.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144018.html 可以尝试用vbscript来重写javascript,虽然这种方法也有很多弊端。
doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> new document title>
<meta name="generator" content="editplus">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="description" content="">
head>
<script  language=javascript>
    
function msg(){            
          execscript(
"n=msgbox('是否保存',4,'自定的的confirm')","vbscript");   
          alert(n);
          
return(n == 1);      
  }
   
script>
<body>
    
<input type="button" onclick="msg()" value="click" />
body>
html>


dreamstone 2007-09-10 15:45 发表评论
]]>
eclipse 3.4 m1发布了http://www.blogjava.net/dreamstone/archive/2007/09/10/144015.htmldreamstonedreamstonemon, 10 sep 2007 07:42:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144015.htmlhttp://www.blogjava.net/dreamstone/comments/144015.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144015.html#feedback0http://www.blogjava.net/dreamstone/comments/commentrss/144015.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144015.html

dreamstone 2007-09-10 15:42 发表评论
]]>
js转换中把10进制数字转换成16进制http://www.blogjava.net/dreamstone/archive/2007/09/10/144014.htmldreamstonedreamstonemon, 10 sep 2007 07:40:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144014.htmlhttp://www.blogjava.net/dreamstone/comments/144014.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144014.html#feedback2http://www.blogjava.net/dreamstone/comments/commentrss/144014.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144014.html
 
var x = 33;
 
alert(x.tostring(16));
 


dreamstone 2007-09-10 15:40 发表评论
]]>
javascript中的各种输入限制http://www.blogjava.net/dreamstone/archive/2007/09/10/144013.htmldreamstonedreamstonemon, 10 sep 2007 07:37:00 gmthttp://www.blogjava.net/dreamstone/archive/2007/09/10/144013.htmlhttp://www.blogjava.net/dreamstone/comments/144013.htmlhttp://www.blogjava.net/dreamstone/archive/2007/09/10/144013.html#feedback1http://www.blogjava.net/dreamstone/comments/commentrss/144013.htmlhttp://www.blogjava.net/dreamstone/services/trackbacks/144013.html1.文本框输入限制

实现限制输入大、小写英文,数字,浮点小数,日期,中文,部分英文,部分中文等众多功能。直接加入到html代码中即可使用。

小写英文:


onpaste = "return reginput(this, /^[a-z]*$/, window.clipboarddata.getdata('text'))"
ondrop = "return reginput(this, /^[a-z]*$/, event.datatransfer.getdata('text'))"
style="ime-mode:disabled">

大写英文:


onpaste = "return reginput(this, /^[a-z]*$/, window.clipboarddata.getdata('text'))"
ondrop = "return reginput(this, /^[a-z]*$/, event.datatransfer.getdata('text'))"
style="ime-mode:disabled">

任意数字:


onpaste = "return reginput(this, /^[0-9]*$/, window.clipboarddata.getdata('text'))"
ondrop = "return reginput(this, /^[0-9]*$/, event.datatransfer.getdata('text'))"
style="ime-mode:disabled">

限2位小数:


onpaste = "return reginput(this, /^\d*\.?\d{0,2}$/,
window.clipboarddata.getdata('text'))"
ondrop = "return reginput(this, /^\d*\.?\d{0,2}$/,
event.datatransfer.getdata('text'))"
style="ime-mode:disabled">

如: 123.12

日  期:

onpaste = "return reginput(this, /^\d{1,4}([-\/](\d{1,2}
([-\/](\d{1,2})?)?)?)?$/,
window.clipboarddata.getdata('text'))"

ondrop = "return reginput(this, /^\d{1,4}([-\/](\d{1,2}
([-\/](\d{1,2})?)?)?)?$/,
event.datatransfer.getdata('text'))"

style="ime-mode:disabled">

如: 2002-9-29

任意中文:

onpaste = "return reginput(this, /^[\u4e00-\u9fa5]*$/,
window.clipboarddata.getdata('text'))"

ondrop = "return reginput(this, /^[\u4e00-\u9fa5]*$/,
event.datatransfer.getdata('text'))">

部分英文:


onpaste = "return reginput(this, /^[a-e]*$/,
window.clipboarddata.getdata('text'))"

ondrop = "return reginput(this, /^[a-e]*$/,
event.datatransfer.getdata('text'))"

style="ime-mode:disabled">

范围: a,b,c,d,e

部分中文:


"settimeout('checkchinese(' this.value.length ',' this.uniqueid ')',
1)"

onpaste = "return reginput(this, /^[一二三四五六七八九十]*$/,
window.clipboarddata.getdata('text'))"

ondrop = "return reginput(this, /^[一二三四五六七八九十]*$/,
event.datatransfer.getdata('text'))">

范围: 一二三四五六七八九十

2.不能展开右键,不能全选,不能复制的实现

onkeypress="window.event.returnvalue=false"
onkeydown="window.event.returnvalue=false"
onkeyup="window.event.returnvalue=false"
ondragstart="window.event.returnvalue=false"
onselectstart="event.returnvalue=false">
...

3.禁止页面正文内容被选取

onselectstart ="return false" onselect="document.selection.empty()"
oncopy="document.selection.empty()" onbeforecopy="return false"onmouseup="document.selection.empty()">

4.避免别人把网页放在框架中

网站地图