??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美精品九九久久,69av视频在线播放,高清中文字幕一区二区三区http://www.aygfsteel.com/yanzhou/category/12959.html喂马, 劈柴, 周游世界zh-cnTue, 27 Feb 2007 10:29:19 GMTTue, 27 Feb 2007 10:29:19 GMT60关于事务http://www.aygfsteel.com/yanzhou/archive/2006/06/30/55910.html周游世界周游世界Fri, 30 Jun 2006 03:39:00 GMThttp://www.aygfsteel.com/yanzhou/archive/2006/06/30/55910.htmlhttp://www.aygfsteel.com/yanzhou/comments/55910.htmlhttp://www.aygfsteel.com/yanzhou/archive/2006/06/30/55910.html#Feedback0http://www.aygfsteel.com/yanzhou/comments/commentRss/55910.htmlhttp://www.aygfsteel.com/yanzhou/services/trackbacks/55910.html
  1. 原子?ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在M操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚C前的状态?/font>
  2. 一致?CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属?例如完整性约?。在完成了一个成功的事务Ӟ数据应处于一致的状态。换句话_一个事务应该把pȝ从一个一致状态{换到另一个一致状态。D个例子,在关pL据库的情况下Q?一个一致的事务保护定义在数据上的所有完整性约束?/font>
  3. 隔离?ISOLATION): 在同一个环境中可能有多个事务ƈ发执行,而每个事务都应表Cؓ独立执行。串行的执行一pd事务的效果应该同于ƈ发的执行它们。这要求两g?
    • 在一个事务执行过E中Q数据的中间?可能不一?状态不应该被暴露给所有的其他事务?/font>
    • 两个q发的事务应该不能操作同一Ҏ据。数据库理pȝ通常使用锁来实现q个特征?
  4. 持久?DURABILITY): 一个被完成的事务的效果应该是持久的?/font>
在Q何情况下都要求应l护一个工作单元的成功或失败,q且在失败的情况下将所有的资源q回到失败前的数据状态中。这在金融、N易、电子商业等领域是要严格遵守的?br />

周游世界 2006-06-30 11:39 发表评论
]]>
防止重复提交解决Ҏhttp://www.aygfsteel.com/yanzhou/archive/2006/06/28/55553.html周游世界周游世界Wed, 28 Jun 2006 07:51:00 GMThttp://www.aygfsteel.com/yanzhou/archive/2006/06/28/55553.htmlhttp://www.aygfsteel.com/yanzhou/comments/55553.htmlhttp://www.aygfsteel.com/yanzhou/archive/2006/06/28/55553.html#Feedback0http://www.aygfsteel.com/yanzhou/comments/commentRss/55553.htmlhttp://www.aygfsteel.com/yanzhou/services/trackbacks/55553.html
预期辑ֈ目标:
    1、当用户q行的是Refresh/Reload/Back/Forward操作、以及先Back再Submit操作Ӟ仅仅是reloading先前的结果页?br />    2、当用户重复提交同一个Q务操作时,后台服务接收q处理第一ơ提交的dQ后面提交不起作用(不{向也不提C)?br />    3、该功能h公用性?br />
基本形成思\Q?br />    1、在basic filter中实现公用?br />        if(true){//问题1Q如何确定是否ؓ重复提交
            ...
            chain.doFilter(request,response);
        }else{
            //问题2Q如何实C转向、不提示也不昄I白?br />        }
    
    2、网上资料概?br />        a、提交表单后按钮变灰/隐藏提交按钮
        b、在js里设|全局变量Q提交后修改该变量的|依据变量的值判断是否重复提?br />        var flag=true;
        function checkForm(){
            if (flag==false){
                return;
            }
            flag=false;
            document.form1.submit();                      
        }
        c、struts Qwebwork没有扑ֈq个资料Q?br />        验证事务控制令牌,<html:form >会自动根据session中标识生成一个隐含input代表令牌Q防止两ơ提?br />        在action中:                       
        //<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="6aa35341f25184fd996c4c918255c3ae">                       
        if (!isTokenValid(request))
            errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("error.transaction.token"));
        resetToken(request); //删除session中的令牌
        action有这L一个方法生成o牌华
        protected String generateToken(HttpServletRequest request) {
            HttpSession session = request.getSession();
            try {
                byte id[] = session.getId().getBytes();
                byte now[] = new Long(System.currentTimeMillis()).toString().getBytes();
                MessageDigest md = MessageDigest.getInstance("MD5");
                md.update(id);
                md.update(now);
                return (toHex(md.digest()));
            } catch (IllegalStateException e) {
                return (null);
            } catch (NoSuchAlgorithmException e) {
                return (null);
            }
        }  
                    
        d、用户用浏览器Ӟ可以l常使用向后的按钮,因此有可能重复提交一个他们已l提交过的formQ这样就会带来一个重复事务处理的问题。同P一个用户也可能在接收到一个确认的面之前按下停止的按钮,接着再次提交同一个form。对于这些情况,我们都想跟踪q且止q些重复的提交,我们可以使用一个控制servlet来提供一个控制点Q以解决q个问题?br />        同步记号QSynchronizer (or Dvu) TokenQ?br />        q个{略是ؓ了解决重复的form提交问题。一个同步的记号被设|在一个用LSession中,q且包含在返回到客户的每一个form中。当form 被提交时Qform中的同步标记和Session中的同步标记作对比。在form首次提交的时候,q两个标记应该是一L。如果标C一P那么?form׃止提交Q一个错误就会返回给用户。在用户提交一个formӞ如果按下览器中的后退按钮q尝试重新提交同一个formӞ标记׃出现不匹配的现象?br />        另一斚wQ如果两个标记值匹配,那么我们可以确信整个流E是正确的。在q种情况下,Session中的标记值就会被修改Z个新的|同时允许提交该form?br />        你也可以使用q个{略来控制对某些面的直接访问,好象上面资源保护中描述的一栗例如,假设一个用户将某个应用的页面A收藏到收藏夹中,而页面A只允讔R过面B和C讉K。当用户直接通过收藏Ҏ讉K面AQ这旉面的讉K序是不正的Q这样同步标记将处在一个不同步的状态,或者它Ҏ׃存在。不论怎样Q访问都被禁止了?br />    
        e、做一个hidden框,名字自己定,提交后得到这个值放入sessionQ提交前判断session是否为空?br />        f、另Struts提供利用Token防止重复提交的方法:
        用户h录入面Q这个与服务器徏立的一ơ连接过E中Q在服务器端①【生成一个session标识Q同时返回到客户端一个与此匹配的hidden域】。用h交了此页面,服务器端首先②【判断此hidden域与session标识是否匚w】,若不匚wQ终止保存操作,提示同一表单不能提交两次Q同时①【新Z个session标识和hidden域】,q回录入面Q若匚wQ执行插入保存操作,同时③【清I(重置reset)session标识】?br />        Struts正在Zq样的思\在org.apache.struts.action.ActioncM提供了内|支持方法:
        java代码:
                
            protected void saveToken(HttpServletRequest request) 配合标签对应于①
            protected boolean isTokenValid(HttpServletRequest request) 对应于②
            protected void resetToken(HttpServletRequest request) 对应于③
                
        q样我们在写E序的时候,l合Struts的html标签Q只?br />            1.在forward到insert.jsp面前加一个action执行saveToken(request)操作Q或q脆在insert.jsp中写
            2.保存前加个判断操作isTokenValid(request)
            3.若isTokenValid(request)q回false,执行saveToken(request)操作Q返回错误提C页面;true则执行resetToken(request)操作Q然后进行实际的保存操作

解决ҎQ?br />   1、后台公q中实现前台的Form中自动生成两个hidden文本功能Q一个是作page是否重复提交判断Qƈql自动附上关键|如struts采用的方案)Q另一个作为button是否重复提交判断Qstruts中好像没有)。由后台公共cd现界面两个hidden text自动生成的好处在于公用性?br />   2、在basic filter中根据两个hidden text值判断是否ؓ重复提交?br />   3、javascript中作一个公共方法,实现功能Q如果需要判断是否重复提交,qW二个hidden text附上关键|q该功能不可用?br />


周游世界 2006-06-28 15:51 发表评论
]]>
վ֩ģ壺 | | | ̩| Ļ| | | | | Ӱ| | | Ʊ| ƶ| | ˳| | | | Ͻ| | | ϼ| ͨ| ¡| Ͻ| ɽ| û| | ϰ| | ˮ| | | | ̶| | | ƽ| | |