??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲第一页日韩专区,亚洲综合无码无在线观看,亚洲AV无码片一区二区三区http://m.tkk7.com/lifenote/zh-cnSat, 10 May 2025 21:43:26 GMTSat, 10 May 2025 21:43:26 GMT60q奥q,抗雪灾,援震?/title><link>http://m.tkk7.com/lifenote/archive/2008/05/14/200367.html</link><dc:creator>LifeNote</dc:creator><author>LifeNote</author><pubDate>Wed, 14 May 2008 03:25:00 GMT</pubDate><guid>http://m.tkk7.com/lifenote/archive/2008/05/14/200367.html</guid><wfw:comment>http://m.tkk7.com/lifenote/comments/200367.html</wfw:comment><comments>http://m.tkk7.com/lifenote/archive/2008/05/14/200367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/lifenote/comments/commentRss/200367.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/lifenote/services/trackbacks/200367.html</trackback:ping><description><![CDATA[<div style="float: left"><script type="text/javascript"><!-- google_ad_client = "pub-4636496036365579"; /* 钱本?00x250, 创徏?08-4-2 */ google_ad_slot = "5946777016"; google_ad_width = 300; google_ad_height = 250; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></div>        今年中国实在多灾多难Q?008注定是特别的一q_先是q前南方五十q不遇的特大雪灾Q春天般的温暖刚刚融化了南方的暴雪,紧接着是西藏骚乱,整个西方都在谴责中国Qؓ了阻止中国奥q还有h抢奥q火炬。接下来火R又出现大事故Q胶铁路两列火车相撞导致火车出轨,然后是全国数万h感染手口病Q现在则是几十年一遇的特大地震Q地震达C1976q唐山大地震的震U。五个月旉Q各U天灾h纷U上演。。。看来,2008的中国依真是多灾多难啊。我们真心的希望N截止在2008q的5月这场大地震吧! <p>      一场里?.8U的特大地震昨天14?8分在中国的四川省<a >爆发</a>Q台湑֪体用”半个亚洲”形容q次地壳晃动的L及面Q直接有震感的地及泰国的D和越南的沛_。截止现在ؓ止,M人数接近10000人。震U与32q前唐山大地震相同,相当?00颗美?945q投在广岛的原子弹,四川现在是什么样的了Q在q里阿草哥通过<a target="_blank">支付?/a>?a target="_blank">李连杰壹基金计划</a>  想震灾h民捐?0元h民币 ׃多但希望通过我自q一份力量支援灾?/p> <p>    最后让我们一L吧Q?008q从此一切顺利!</p> <p>补充一下:l于接到了个feedsky的话题还是个<a target="_blank">公益话题</a>的,Z拿q个当作话题q告吧!<img style="width: 104px; height: 15px" height="15" alt="" src="http://review.feedsky.com/review/feedsky/sunxc/~/img/171/cw.gif" width="104" border="0" /></p><img src ="http://m.tkk7.com/lifenote/aggbug/200367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/lifenote/" target="_blank">LifeNote</a> 2008-05-14 11:25 <a href="http://m.tkk7.com/lifenote/archive/2008/05/14/200367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>奥运火炬传全?/title><link>http://m.tkk7.com/lifenote/archive/2008/04/25/195854.html</link><dc:creator>LifeNote</dc:creator><author>LifeNote</author><pubDate>Fri, 25 Apr 2008 02:08:00 GMT</pubDate><guid>http://m.tkk7.com/lifenote/archive/2008/04/25/195854.html</guid><wfw:comment>http://m.tkk7.com/lifenote/comments/195854.html</wfw:comment><comments>http://m.tkk7.com/lifenote/archive/2008/04/25/195854.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/lifenote/comments/commentRss/195854.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/lifenote/services/trackbacks/195854.html</trackback:ping><description><![CDATA[<img height="15" alt="" src="http://review.feedsky.com/review/feedsky/sunxc/~/img/170/cw.gif " width="104" border="0" />很就没有收到<a target="_blank">feedsky</a>的话题广告了Q昨天发现GTalk弹出一个提Cfeedsky话题q告Q非帔R_于是豪不犹U的接受了q个话题q告Q?br />      在今q?3 月底完成希腊雅典点火与北京交接A式之后,2008 全球火炬接力已经开始了它经历世?134 个城市、长辑֛个月的接力旅E,以完成在全球传递友谊与和^讯息的命。ؓ此,Google 携手本届q动会的官方互联|{播机构央视国?CCTV.com , 推出体中文版?#8221; <a target="_blank">2008全球火炬接力报道路线?/a>“(试版本)。中文繁体以及英、法、西、意、荷{其它五U语a的版本也于q日在全球推出,以方便世界各国的Z通过 Google 地图产品与技术^? 来追t圣火传递\U,畅游接力途经全部城市Qƈ在线观看来自 CCTV.com 的每一地的接力视频<br /> <strong>关于q一路线囄亮点Q?/strong><br /> 1.<strong>全程路线q踪Q?/strong>你将可以随着它,清晰看到接力全程路线和到达日期,其中的红色\U代表接力已l走q的部分?br /> 2.<strong>城市详情Q?/strong>点击图中的每个城市点或者右侧的城市列表Q一个小H口会打开Q你可以在这里了解接力\U上q一城市的基本状c浏览城市风景图片,以及层层推进看到q个城市详细的地图。点d中的相关链接?#8221;更多城市囄”Q你q可以直接看到用q个城市名在h搜烦囄的结果。如果?zhn)要了解更多的内容?a target="_blank">点击q里</a> <p>以下是本站的<a target="_blank"><a target="_blank">2008全球火炬接力报道路线?/a><br /> </a></p> <iframe name="torch_relay_map_api" src="http://torch2008.googlecode.com/svn/trunk/maps/torch.html#utm_source=fblog&utm_medium=blog&utm_content=fblogger&utm_campaign=torchrelay1 <http://torch2008.googlecode.com/svn/trunk/maps/torch.html?utm_source=fblog&utm_medium=blog&utm_content=fblogger&utm_campaign=torchrelay1>" width="760px" height="520px" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" /></iframe> <img src ="http://m.tkk7.com/lifenote/aggbug/195854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/lifenote/" target="_blank">LifeNote</a> 2008-04-25 10:08 <a href="http://m.tkk7.com/lifenote/archive/2008/04/25/195854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse下的Java反编译插ӞJode Decompilerhttp://m.tkk7.com/lifenote/archive/2008/04/24/195588.htmlLifeNoteLifeNoteThu, 24 Apr 2008 07:05:00 GMThttp://m.tkk7.com/lifenote/archive/2008/04/24/195588.htmlhttp://m.tkk7.com/lifenote/comments/195588.htmlhttp://m.tkk7.com/lifenote/archive/2008/04/24/195588.html#Feedback9http://m.tkk7.com/lifenote/comments/commentRss/195588.htmlhttp://m.tkk7.com/lifenote/services/trackbacks/195588.html 安装Ҏ(gu)Q?
    help => Software Updates => Find and Install... => Search for new features to install,单击"New Remote Site..." 在URL栏输?http://www.technoetic.com/eclipse/update.然后下一步,可以看?#8220;jode decompiler plugin *.*”Q选上安装可以了?

安装好后可以看到Window => Preferences... => Java => Jode Decompiler选项卡?

配置QWindow => Preferences... => General => Editors => File Associations扑ֈ"*.class"?Associated editors"里面可以看到"Jode class file viewer"选中它再单击Default按钮.

在Eclipse中展开jar文g,双击class文g卛_看到反编译之后的源代?


LifeNote 2008-04-24 15:05 发表评论
]]>
Java数据库操作基本流E?/title><link>http://m.tkk7.com/lifenote/archive/2008/04/24/195431.html</link><dc:creator>LifeNote</dc:creator><author>LifeNote</author><pubDate>Thu, 24 Apr 2008 02:36:00 GMT</pubDate><guid>http://m.tkk7.com/lifenote/archive/2008/04/24/195431.html</guid><wfw:comment>http://m.tkk7.com/lifenote/comments/195431.html</wfw:comment><comments>http://m.tkk7.com/lifenote/archive/2008/04/24/195431.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://m.tkk7.com/lifenote/comments/commentRss/195431.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/lifenote/services/trackbacks/195431.html</trackback:ping><description><![CDATA[<div id="yss8aim" class="NewsContent" id="NewsContentLabel"><span id="4u4emcc" class="t18"><span id="qekiqgk" class="a14c" id="zoom"><font face="Times New Roman" size="3">1.Java数据库操作基本流E?br /> a .数据库连?.Drivermanager 链接数据?br /> String className,url,uid,pwd;<br /> className="Oracle.jdbc.driver.OracleDriver";<br /> uid="scott";<br /> pwd="tiger";<br /> url="jdbc:oracle:thin:@localhost:1521:ora92";<br /> Class.forName(classname);<br /> Connection conn=DriverManager.getConnection(url,uid,pwd);<br /> 2.JNDI链接数据?br /> String jndi ="jdbc/db"; //  e20-040 9L0-609 数据源的名称<br /> //context是一l名U到对象的绑定组?br /> Hashtable env=new Hashtable ();<br /> Context ctx=(Context)new InitialContext.lookup("env");// 获得数据源所在的上下文点的对?br /> DataSource ds=(DataSource)ctx.lookup(jndi);//扑ֈ数据?/font> <p class="Ltw305"></p> <p> </p> <font face="Times New Roman" size="3"> <p><br /> Connection conn=ds.getConnection();//<br /> b.执行 sql语句<br /> String sql;<br /> StateMent stat=conn.createStatement();<br /> ResultSet rs=stat.executeQuery(sql);//执行数据的查询语?select);<br /> stat.executeUpdate(sql);//执行数据的更新语?inset into ,delete ,update ,drop)<br /> stat.close();<br /> c.用preparedStatement 来执行sql语句<br /> String sql="inset into table(id,name) values(?,?)";<br /> PreparedStatement ps=conn.prepareStatement(sql);<br /> ps.setInt(1,001);<br /> ps.setString(2,"zhangmanli"); <font color="#ffffff"></font></p> <p>ps.executeQuery();<br /> int count=ps.executeUpdate();<br /> d.处理执行l果<br /> 查询语句Q返回记录集ResultSet对象<br /> 更新语句Q返回数字,表示该更新媄响的记录?br /> javax.sql.*<br /> javax.naming.*;<br /> 数据处理Q?br /> 1关闭connection 的自动提?br /> conn.setAutoCommit(false);<br /> 2执行一pdsql 语句Q?br /> Statement sm;<br /> sm=conn.createStatement(sql);<br /> sm.executeUpdate();<br /> sm.close(); </p> <p>3.提交Q?<br /> conn.commit();<br /> 4.回滚机制Q?br /> conn.rollback();<br /> e:U程处理Q?br /> DQjndi和dataSource 来获得数据库的链接:<br /> import java.sql.ResultSet ;<br /> import java.sql.*;<br /> import javax.sql.DataSource;<br /> import javax.naming.Context;<br /> import javax.naming.InitialContext;<br /> import java.util.Hashtable;<br /> import java.util.Properties;<br /> import java.io.*;<br /> public class BasicExample{<br />  public static void main(String args[]){<br />   Connection conn=null;<br />   try{<br />    Properties prop =new Properties();<br />    prop.load(new FileInputStream("simple.properties"));<br />    Hashtable env =new Hashtable();<br />    env.put(Context.INITIAL_CONTEXT_FACTORY,prop.getProperty("INITIAL_CONTEXT_FACTORY"));<br />    env.put(Context.PROVIDER_URL,prop.getProperty("PROVIDER_URL"));<br />    InitialContext ctx=new InitialContext(env);<br />   DataSource ds=(DataSource)ctx.lookup("Book"); <p class="Ltw305"></p> <br />    Conn=ds.getConnection();<br />    Statement stat=conn.createStatement();;<br />    ResultSet rs=stmt.executeQuery(sql);<br />    while(rs.next()){<br />     int id=Integer.parseInt(rs.getString("userId"));<br />     String userName=rs.getString ("username");<br /> <br />    }<br />   }catch(SQLException e){<br />    e.printStackTrace();<br />   }finally{<br />    try{<br />     if(conn!=null){<br />      conn.close();<br />     }<br />    }catch(SQLException e){<br />     e.printStackTrace();<br />    }<br />   }<br />  }<br /> }; </font></span></span></div> <img src ="http://m.tkk7.com/lifenote/aggbug/195431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/lifenote/" target="_blank">LifeNote</a> 2008-04-24 10:36 <a href="http://m.tkk7.com/lifenote/archive/2008/04/24/195431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用动态代理实现用AOPҎ(gu)据库q行操作http://m.tkk7.com/lifenote/archive/2008/04/22/194687.htmlLifeNoteLifeNoteTue, 22 Apr 2008 01:54:00 GMThttp://m.tkk7.com/lifenote/archive/2008/04/22/194687.htmlhttp://m.tkk7.com/lifenote/comments/194687.htmlhttp://m.tkk7.com/lifenote/archive/2008/04/22/194687.html#Feedback0http://m.tkk7.com/lifenote/comments/commentRss/194687.htmlhttp://m.tkk7.com/lifenote/services/trackbacks/194687.html要实现对数据库的操作Q离不开数据源(DataSourceQ或者连接(ConnectionQ?但是通常来说Ҏ(gu)据库的操作都应该攑֜DAO中,而DAO又不应该与应用服务器相关联,所以一般都使用q接QConnectionQ。现在我们这里就有一个问题了Q怎么在拦截器中获得连接。我惛_以通过两种方式获得Q?br /> 在分别讨两种Ҏ(gu)之前Q我们需要先讨论一下在处理数据库的时候的异常的处理。我q里做了一个TransactionExceptionl承至RuntimeException然后在拦截器里面抛出Q再又应用框架处理这个异常。下面试q个cȝ代码Q?br /> public class TransactionException extends RuntimeException {
    private Throwable superException;
    private String myMessage;
    
    public TransactionException(Throwable throwable){
        super(throwable);
        this.superException = throwable;
    }
    
    public TransactionException(Throwable throwable,String message){
        super(message,throwable);
        this.superException = throwable;
        this.myMessage = message;
    }

    /**
     * @return Returns the myMessage.
     */
    public String getMessage() {
        return myMessage;
    }

    /**
     * @return Returns the superException.
     */
    public Throwable getSuperException() {
        return superException;
    }

    /**
     * @param myMessage The myMessage to set.
     */
    public void setMyMessage(String message) {
        this.myMessage = message;
    }

    /**
     * @param superException The superException to set.
     */
    public void setSuperException(Throwable superException) {
        this.superException = superException;
    }
    
    
}
1Q?nbsp;   通过Ҏ(gu)的第一个参Cq去
l    DAO
import java.sql.Connection;

public class TestDao {
    public void insertA(Connection con,String a,String b,……){
        …………………………………………
一pd操作
…………………………………………
    }
    
    public String queryA(Connection con,…….){
    …………………………………………
一pd操作
…………………………………………
}

    public void updateA(Connection con,…….){
        …………………………………………
一pd操作
…………………………………………
}
}

l    拦截?br /> import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class TransactionInterceptor implements Interceptor {

    public void before(InvokeJniInfo invInfo) {
        if(isNeedTransactions(invInfo)){
            Connection conn = (Connection) invInfo.getArgs()[0];
            try {
                conn.setAutoCommit(false);
            } catch (SQLException e) {
                throw new TransactionException(e);
            }
        }
    }

    public void after(InvokeJniInfo invInfo) {
        if(isNeedTransactions(invInfo)){
            Connection conn = (Connection) invInfo.getArgs()[0];
            try {
                conn.commit();
            } catch (SQLException e) {
                throw new TransactionException(e);
            }finally{
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        throw new TransactionException(e,"Close Connection is failure!");
                    }
                }
            }
        }
    }

    public void exceptionThrow(InvokeJniInfo invInfo) {
        if(isNeedTransactions(invInfo)){
            Connection conn = (Connection) invInfo.getArgs()[0];
            try {
                conn.rollback();
            } catch (SQLException e) {
                throw new TransactionException(e);
            }finally{
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        throw new TransactionException(e,"Close Connection is failure!");
                    }
                }
            }
        }
    }
    
    private List getNeedTransaction(){
        List needTransactions = new ArrayList();
        needTransactions.add("insert");
        needTransactions.add("update");
        return needTransactions;
    }
    
    private boolean isNeedTransactions(InvokeJniInfo invInfo){
        String needTransaction = "";
        List needTransactions = getNeedTransaction();
        for(int i = 0;i             needTransaction = (String)needTransactions.get(i);
            if(invInfo.getMethod().getName().startsWith(needTransaction)){
                return true;
            }
        }
        return false;
    }
}

需要注意的是:getNeedTransaction是需要进行事务处理的Ҏ(gu)的开_q个Ҏ(gu)可以写成一个从配置文g里面去读Q这里我写d里面了。只是对insert和update开头的Ҏ(gu)q行事务控制?br /> 2Q?nbsp;   Connection对象攑֜ThreadLocal?br /> l    ConnectionUtilc:
import java.sql.Connection;

public final class ConnectionUtil {
    private static ThreadLocal connections = new ThreadLocal();
    public static Connection getConnection(){
        Connection conn = null;
        conn = (Connection) connections.get();
        if(conn == null){
            conn = getRealConnection();
            connections.set(conn);
        }
        return conn;
    }
    public static void realseConnection(Connection conn){
        connections.set(null);
    }
    private static Connection getRealConnection() {
        实现自己获取q接的代?br />         return null;
    }
}
l    DAOc?br /> public class TestDao {
    public void insertA(String a,String b){
        Connection conn = getConnection();
        …………………………………………
一pd操作
…………………………………………
    }
        public String queryA(Connection con,…….){
        Connection conn = getConnection();
    …………………………………………
一pd操作
…………………………………………
}

    public void updateA(Connection con,…….){
Connection conn = getConnection();
        …………………………………………
一pd操作
…………………………………………
}

    private Connection getConnection(){
        return ConnectionUtil.getConnection();
    }
    
}
l    拦截?br /> import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class TransactionInterceptor implements Interceptor {

    public void before(InvokeJniInfo invInfo) {
        if(isNeedTransactions(invInfo)){
            Connection conn = getConnection();
            try {
                conn.setAutoCommit(false);
            } catch (SQLException e) {
                throw new TransactionException(e);
            }
        }
    }

    public void after(InvokeJniInfo invInfo) {
        if(isNeedTransactions(invInfo)){
            Connection conn = getConnection();
            try {
                conn.commit();
            } catch (SQLException e) {
                throw new TransactionException(e);
            }finally{
                if(conn != null){
                    try {
                        conn.close();
                        releaseConnection(conn);
                    } catch (SQLException e) {
                        throw new TransactionException(e,"Close Connection is failure!");
                    }
                }
            }
        }
    }

    public void exceptionThrow(InvokeJniInfo invInfo) {
        if(isNeedTransactions(invInfo)){
            Connection conn = getConnection();
            try {
                conn.rollback();
            } catch (SQLException e) {
                throw new TransactionException(e);
            }finally{
                if(conn != null){
                    try {
                        conn.close();
                        releaseConnection(conn);
                    } catch (SQLException e) {
                        throw new TransactionException(e,"Close Connection is failure!");
                    }
                }
            }
        }
    }
    
    private Connection getConnection(){
        return ConnectionUtil.getConnection();
    }
    
    private void releaseConnection(Connection conn){
        ConnectionUtil.releaseConnection(conn);
    }
    private List getNeedTransaction(){
        List needTransactions = new ArrayList();
        needTransactions.add("insert");
        needTransactions.add("update");
        return needTransactions;
    }
    
    private boolean isNeedTransactions(InvokeJniInfo invInfo){
        String needTransaction = "";
        List needTransactions = getNeedTransaction();
        for(int i = 0;i             needTransaction = (String)needTransactions.get(i);
            if(invInfo.getMethod().getName().startsWith(needTransaction)){
                return true;
            }
        }
        return false;
    }
}
    最后将q个拦截器添加到AOP拦截框架中去QInterceptorHandlercM的getIntercetorsҎ(gu)中添加一个:

    private synchronized List getIntercetors(){
        if(null == interceptors){
            interceptors = new ArrayList();
            ……………………………………
interceptors.add(new TransactionInterceptor ());
            ……………………………………
        }
        return interceptors;
}


LifeNote 2008-04-22 09:54 发表评论
]]>
如何获得鼠标的当前位|?/title><link>http://m.tkk7.com/lifenote/archive/2008/03/27/189055.html</link><dc:creator>LifeNote</dc:creator><author>LifeNote</author><pubDate>Thu, 27 Mar 2008 08:52:00 GMT</pubDate><guid>http://m.tkk7.com/lifenote/archive/2008/03/27/189055.html</guid><wfw:comment>http://m.tkk7.com/lifenote/comments/189055.html</wfw:comment><comments>http://m.tkk7.com/lifenote/archive/2008/03/27/189055.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/lifenote/comments/commentRss/189055.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/lifenote/services/trackbacks/189055.html</trackback:ping><description><![CDATA[用window.event对象的属性,d有四对属性用来取得鼠标位|?分别是:   <br />   clientX和clientY         screenX和screenY       offsetX和offsetY         x和y   <br />   一   clientX和clientY   <br />           讄或接收相对于览器窗口客户区的鼠标x、y坐标Q客户区不包括窗口滚动条及边?  <br />           大小(MSDN原文:Sets   or   retrieves   the   x-coordinate/y-coordinate   of   the   mouse     <br />           pointer's   position   relative   to   the   client   area   of   the   window,   excluding     <br />           window   decorations   and   scroll   bars.)   <br />     <br />           在IE4里,q一对属性只M可写QIE5及以后版本里则可d?MSDN原文:The     <br />           property   is   read-only   in   Microsoft&reg;   Internet   Explorer   4.0,   and   read/write     <br />           in   Microsoft&reg;   Internet   Explorer   5   and   later.)   <br />     <br />           语法:     event.clientX=[iPos]     event.clientY=[iPos]         iPos应该是一个整?  <br />     <br />   ?  screenX和screenY   <br />           讄或接收相对于用户屏幕的鼠标坐?  <br />     <br />           在IE4里,q一对属性只M可写QIE5及以后版本里则可d?  <br />     <br />           语法:     event.screenX=[iSize]     event.screenY=[iSize]         iSize应该是一个整?  <br />     <br />   ?  offsetX和offsetY   <br />           讄或接攉标指针在鼠标所在的元素上的偏移?  <br />     <br />           在IE4里,q一对属性只M可写QIE5及以后版本里则可d?  <br />     <br />           语法:     event.screenX=[iCoord]     event.screenY=[iCoord]       iCoord应该是一个整?  <br />     <br />   ?  x和y   <br />           讄或接收相对于鼠标所在的元素的父元素的坐?MSDN原文:Sets   or   retrieves   <br />           the     x-coordinate,   in   pixels,   of   the   mouse   pointer's   position   relative   to     <br />           the   parent   element.)   <br />     <br />           在IE4里,q一对属性只M可写QIE5及以后版本里则可d?但IE5以前的版式本?  <br />           x和y坐标q不相对于鼠标所在的元素的父元素Q只相对于浏览器H口的客户区   <br />     <br />           如果在检鼠标位|时Q鼠标却在浏览器H口的外面,则x和y都返?1   <br />     <br /> <img src ="http://m.tkk7.com/lifenote/aggbug/189055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/lifenote/" target="_blank">LifeNote</a> 2008-03-27 16:52 <a href="http://m.tkk7.com/lifenote/archive/2008/03/27/189055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript----文g操作http://m.tkk7.com/lifenote/archive/2008/03/25/188417.htmlLifeNoteLifeNoteTue, 25 Mar 2008 01:39:00 GMThttp://m.tkk7.com/lifenote/archive/2008/03/25/188417.htmlhttp://m.tkk7.com/lifenote/comments/188417.htmlhttp://m.tkk7.com/lifenote/archive/2008/03/25/188417.html#Feedback6http://m.tkk7.com/lifenote/comments/commentRss/188417.htmlhttp://m.tkk7.com/lifenote/services/trackbacks/188417.html     要在javascript中实现文件操作功能,主要是依靠FileSystemobject对象?br /> 二、FileSystemObject~程
使用FileSystemObject 对象q行~程很简单,一般要l过如下的步骤: 创徏FileSystemObject对象、应用相x法、访问对象相兛_??
Q一Q创建FileSystemObject对象
创徏FileSystemObject对象的代码只?行:
var fso = new ActiveXObject("Scripting.FileSystemObject");
上述代码执行后,fso成Z个FileSystemObject对象实例?
Q二Q应用相x?
创徏对象实例后,可以用对象的相关Ҏ(gu)了。比如,使用CreateTextFileҎ(gu)创徏一个文本文Ӟ
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.createtextfile("c:\\myjstest.txt",true");
Q三Q访问对象相兛_?
要访问对象的相关属性,首先要徏立指向对象的句柄Q这p通过getpdҎ(gu)实现QGetDrive负责获取驱动器信息,GetFolder负责获取文g夹信息,GetFile负责获取文g信息。比如,指向下面的代码后Qf1成为指向文件c:\test.txt的句柄:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.GetFile("c:\\myjstest.txt");
然后Q用f1讉K对象的相兛_性。比如:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.GetFile("c:\\myjstest.txt");
alert("File last modified: " + f1.DateLastModified);
执行上面最后一句后Q将昄c:\myjstest.txt的最后修Ҏ(gu)期属性倹{?
但有一点请注意Q对于用createҎ(gu)建立的对象,׃必再使用getҎ(gu)获取对象句柄了,q时直接使用createҎ(gu)建立的句柄名U就可以Q?
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.createtextfile("c:\\myjstest.txt",true");
alert("File last modified: " + f1.DateLastModified);
三、操作驱动器QDrivesQ?
使用FileSystemObject对象来编E操作驱动器QDrivesQ和文g夹(FoldersQ很Ҏ(gu)Q这p在Windows文g览器中Ҏ(gu)件进行交互操作一P比如Q拷贝、移动文件夹Q获取文件夹的属性?
Q一QDrives对象属?
Drive对象负责攉pȝ中的物理或逻辑驱动器资源内容,它具有如下属性:
l TotalSizeQ以字节QbyteQؓ单位计算的驱动器大小?
l AvailableSpace或FreeSpaceQ以字节QbyteQؓ单位计算的驱动器可用I间?
l DriveLetterQ驱动器字母?
l DriveTypeQ驱动器cdQ取gؓQremovableQ移动介质)、fixedQ固定介质)、networkQ网l资源)、CD-ROM或者RAM盘?
l SerialNumberQ驱动器的系列码?
l FileSystemQ所在驱动器的文件系l类型,取gؓFAT、FAT32和NTFS?
l IsReadyQ驱动器是否可用?
l ShareNameQ共享名U?
l VolumeNameQ卷标名U?
l Path和RootFolderQ驱动器的\径或者根目录名称?
Q二QDrive对象操作例程
下面的例E显C驱动器C的卷标、d量和可用I间{信息:
var fso, drv, s ="";
fso = new ActiveXObject("Scripting.FileSystemObject");
drv = fso.GetDrive(fso.GetDriveName("c:\\"));
s += "Drive C:" + " - ";
s += drv.VolumeName + "\n";
s += "Total Space: " + drv.TotalSize / 1024;
s += " Kb" + "\n";
s += "Free Space: " + drv.FreeSpace / 1024;
s += " Kb" + "\n";
alert(s);
四、操作文件夹QFoldersQ?
涉及到文件夹的操作包括创建、移动、删除以及获取相兛_性?
Folder对象操作例程 :
下面的例E将l习获取父文件夹名称、创建文件夹、删除文件夹、判断是否ؓ根目录等操作Q?
var fso, fldr, s = "";
// 创徏FileSystemObject对象实例
fso = new ActiveXObject("Scripting.FileSystemObject");
// 获取Drive 对象
fldr = fso.GetFolder("c:\\");
// 昄父目录名U?
alert("Parent folder name is: " + fldr + "\n");
// 昄所在drive名称
alert("Contained on drive " + fldr.Drive + "\n");
// 判断是否为根目录
if (fldr.IsRootFolder)
alert("This is the root folder.");
else
alert("This folder isn't a root folder.");
alert("\n\n");
// 创徏新文件夹
fso.CreateFolder ("C:\\Bogus");
alert("Created folder C:\\Bogus" + "\n");
// 昄文g夹基名称Q不包含路径?
alert("Basename = " + fso.GetBaseName("c:\\bogus") + "\n");
// 删除创徏的文件夹
fso.DeleteFolder ("C:\\Bogus");
alert("Deleted folder C:\\Bogus" + "\n");
五、操作文ӞFilesQ?
Ҏ(gu)件进行的操作要比以上介绍的驱动器QDriveQ和文g夹(FolderQ操作复杂些Q基本上分ؓ以下两个cdQ对文g的创建、拷贝、移动、删除操作和Ҏ(gu)件内容的创徏、添加、删除和d操作。下面分别详l介l?
Q一Q创建文?
一共有3U方法可用于创徏一个空文本文gQ这U文件有时候也叫做文本(text streamQ?
W一U是使用CreateTextFileҎ(gu)。代码如下:
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
W二U是使用OpenTextFileҎ(gu)Qƈd上ForWriting属性,ForWriting的gؓ2。代码如下:
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);
W三U是使用OpenAsTextStreamҎ(gu)Q同栯讄好ForWriting属性。代码如下:
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c:\\test1.txt");
f1 = fso.GetFile("c:\\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);
Q二Q添加数据到文g
当文件被创徏后,一般要按照“打开文gQ?gt;填写数据Q?gt;关闭文g”的步骤实现添加数据到文g的目的?
打开文g可用FileSystemObject对象的OpenTextFileҎ(gu)Q或者用File对象的OpenAsTextStreamҎ(gu)?
填写数据要用到TextStream对象的Write、WriteLine或者WriteBlankLinesҎ(gu)。在同是实现写入数据的功能下Q这3者的区别在于QWriteҎ(gu)不在写入数据末尾d新换行符QWriteLineҎ(gu)要在最后添加一个新换行W,而WriteBlankLines则增加一个或者多个空行?
关闭文g可用TextStream对象的CloseҎ(gu)?
Q三Q创建文件及d数据例程
下面的代码将创徏文g、添加数据、关闭文件几个步骤结合v来进行应用:
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 创徏新文?
tf = fso.CreateTextFile("c:\\testfile.txt", true);
// 填写数据Qƈ增加换行W?
tf.WriteLine("Testing 1, 2, 3.") ;
// 增加3个空?
tf.WriteBlankLines(3) ;
// 填写一行,不带换行W?
tf.Write ("This is a test.");
// 关闭文g
tf.Close();
Q四Q读取文件内?
从文本文件中d数据要用TextStream对象的Read、ReadLine或ReadAll Ҏ(gu)。ReadҎ(gu)用于d文g中指定数量的字符QReadLineҎ(gu)d一整行Q但不包括换行符QReadAllҎ(gu)则读取文本文件的整个内容。读取的内容存放于字W串变量中,用于昄、分析。在使用Read或ReadLineҎ(gu)d文g内容Ӟ如果要蟩q一些部分,p用到Skip或SkipLineҎ(gu)?
下面的代码演C打开文g、填写数据,然后d数据Q?
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
// 创徏文g
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
// 填写一行数?
f1.WriteLine("Hello World");
f1.WriteBlankLines(1);
// 关闭文g
f1.Close();
// 打开文g
ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
// d文g一行内容到字符?
s = ts.ReadLine();
// 昄字符串信?
alert("File contents = '" + s + "'");
// 关闭文g
ts.Close();
Q五Q移动、拷贝和删除文g
对于以上三种文g操作Qjavascript各有两种对应的方法:File.Move ?FileSystemObject.MoveFile用于Ud文gQFile.Copy ?FileSystemObject.CopyFile用于拯文gQFile.Delete ?FileSystemObject.DeleteFile用于删除文g?
下面的代码演C在驱动器C的根目录下创Z个文本文Ӟ填写一些内容,然后文件移动到\tmp目录下,再在目录\temp下面建立一个文件拷贝,最后删除这两个目录的文Ӟ
var fso, f1, f2, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
// 写一?
f1.Write("This is a test.");
// 关闭文g
f1.Close();
// 获取C:\根目录下的文件句?
f2 = fso.GetFile("c:\\testfile.txt");
// Ud文g到\tmp目录?
f2.Move ("c:\\tmp\\testfile.txt");
// 拯文g到\temp目录?
f2.Copy ("c:\\temp\\testfile.txt");
// 获取文g句柄
f2 = fso.GetFile("c:\\tmp\\testfile.txt");
f3 = fso.GetFile("c:\\temp\\testfile.txt");
// 删除文g
f2.Delete();
f3.Delete();
六、结 ?
通过以上对FileSystemObject的各U对象、属性和Ҏ(gu)的介l和CZQ相信你已经对如何用javascript语言在页面中操作驱动器、文件和文gҎ(gu)了清晰的认识。但是上q提及的例程都非常简单,要全面、灵zd掌握javascript文g操作技术,q需要大量的实践l习。而且q有一Ҏ(gu)醒大Ӟ׃涉及到在览器中q行文gdq样的高U操作,对于默认的浏览器安全U别而言Q在代码q行前都会有一个信息提C,q点请在实际环境中提C问者注意?

LifeNote 2008-03-25 09:39 发表评论
]]>
Hibernate中Criteria的完整用?http://m.tkk7.com/lifenote/archive/2008/03/12/185708.htmlLifeNoteLifeNoteWed, 12 Mar 2008 07:24:00 GMThttp://m.tkk7.com/lifenote/archive/2008/03/12/185708.htmlhttp://m.tkk7.com/lifenote/comments/185708.htmlhttp://m.tkk7.com/lifenote/archive/2008/03/12/185708.html#Feedback7http://m.tkk7.com/lifenote/comments/commentRss/185708.htmlhttp://m.tkk7.com/lifenote/services/trackbacks/185708.html 
设计上可以灵zȝҎ(gu) Criteria 的特Ҏ(gu)方便地进行查询条件的l装。现在对 Hibernate的Criteria 的用法进行ȝQ?/font>
   Hibernate 设计?CriteriaSpecification 作ؓ Criteria 的父接口Q下面提供了 Criteria和DetachedCriteria ?
   Criteria ?DetachedCriteria 的主要区别在于创建的形式不一P Criteria 是在U的Q所

以它是由 Hibernate Session q行创徏的;?DetachedCriteria 是离U的Q创建时无需
SessionQDetachedCriteria 提供?2 个静态方?forClass(Class) ?forEntityName(Name)
q行DetachedCriteria 实例的创建?Spring 的框架提供了getHibernateTemplate
().findByCriteria(detachedCriteria) Ҏ(gu)可以很方便地Ҏ(gu)DetachedCriteria 来返回查询结
果?
   Criteria ?DetachedCriteria 均可使用 Criterion ?Projection 讄查询条g。可以设

|?FetchMode( 联合查询抓取的模?) Q设|排序方式。对?Criteria q可以设|?FlushModel
Q冲?Session 的方式)?LockMode Q数据库锁模式)?
下面?Criterion ?Projection q行详细说明?/font>
     Criterion ?Criteria 的查询条件。Criteria 提供?add(Criterion criterion) Ҏ(gu)?/font>
d查询条g?br />      Criterion 接口的主要实现包括: Example ?Junction ?SimpleExpression 。?
Junction 的实际用是它的两个子类 conjunction ?disjunction Q分别是使用 AND ?OR ?/font>
作符q行来联l查询条仉合?br />      Criterion 的实例可以通过 Restrictions 工具cL创徏QRestrictions 提供了大量的静?/font>
Ҏ(gu)Q如 eq Q等于)?ge Q大于等于)?between {来Ҏ(gu)的创?Criterion 查询条g
QSimpleExpression 实例Q。除此之外, Restrictions q提供了Ҏ(gu)来创?conjunction ?
disjunction 实例Q通过往该实例的 add(Criteria) Ҏ(gu)来增加查询条件Ş成一个查询条仉?/font>
?br />      至于 Example 的创建有所不同Q?Example 本n提供了一个静态方?create(Object
entity) Q即Ҏ(gu)一个对象(实际使用中一般是映射到数据库的对象)来创建。然后可以设|一?/font>
qo条gQ?
Example exampleUser =Example.create(u)
.ignoreCase() // 忽略大小?
.enableLike(MatchMode.ANYWHERE);
// ?String cd的属性,无论在那里值在那里都匹配。相当于 %value%

  Project 主要是让 Criteria 能够q行报表查询Qƈ可以实现分组?Project 主要?
SimpleProjection ?ProjectionList ?Property 三个实现。其?SimpleProjection ?
ProjectionList 的实例化是由内徏?Projections 来完成,如提供的 avg ?count ?max ?
min ?sum 可以让开发者很Ҏ(gu)Ҏ(gu)个字D进行统计查询?
       Property 是对某个字段q行查询条g的设|,如通过Porperty.forName(“color”).in

(new String[]{“black”,”red”,”write”}); 则可以创Z?Project 实例。通过
criteria ?add(Project) Ҏ(gu)加入到查询条件中厅R?
    使用 Criteria q行查询Q主要要清晰的是 Hibernate 提供了那些类和方法来满开发中?/font>
询条件的创徏和组装,下面介绍几种用法Q?/font>
1. 创徏一个Criteria 实例
org.hibernate.Criteria接口表示特定持久cȝ一个查询。Session?Criteria实例的工厂?br /> Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
 
2. 限制l果集内?br /> 一个单独的查询条g是org.hibernate.criterion.Criterion 接口的一个实例?/font>

org.hibernate.criterion.Restrictionsc?定义了获得某些内|Criterioncd的工厂方法?br /> List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .add( Restrictions.between("weight", minWeight, maxWeight) )
    .list();


U束可以按逻辑分组?
 
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .add( Restrictions.or(
        Restrictions.eq( "age", new Integer(0) ),
        Restrictions.isNull("age")
    ) )
    .list();
 
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) )
    .add( Restrictions.disjunction()
        .add( Restrictions.isNull("age") )
        .add( Restrictions.eq("age", new Integer(0) ) )
        .add( Restrictions.eq("age", new Integer(1) ) )
        .add( Restrictions.eq("age", new Integer(2) ) )
    ) )
    .list();
 
Hibernate提供了相当多的内|criterioncd(Restrictions 子类), 但是其有用的是可以允许


你直接用SQL?br />  
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.sql("lower({alias}.name) like lower(?)", "Fritz%",


Hibernate.STRING) )
    .list();
 
{alias}占位W应当被替换查询实体的列别名?
Property实例是获得一个条件的另外一U途径。你可以通过调用Property.forName() 创徏一?/font>

Property?
 
  Property age = Property.forName("age");
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.disjunction()
        .add( age.isNull() )
        .add( age.eq( new Integer(0) ) )
        .add( age.eq( new Integer(1) ) )
        .add( age.eq( new Integer(2) ) )
    ) )
    .add( Property.forName("name").in( new String[] { "Fritz", "Izi", "Pk" } ) )
    .list();
 
3. l果集排?br /> 你可以用org.hibernate.criterion.Order来ؓ查询l果排序?
 
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "F%")
    .addOrder( Order.asc("name") )
    .addOrder( Order.desc("age") )
    .setMaxResults(50)
    .list();
 
List cats = sess.createCriteria(Cat.class)
    .add( Property.forName("name").like("F%") )
    .addOrder( Property.forName("name").asc() )
    .addOrder( Property.forName("age").desc() )
    .setMaxResults(50)
    .list();
 
4. 兌
你可以用createCriteria()非常Ҏ(gu)的在互相兌的实体间建立 U束?br />  
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "F%")
    .createCriteria("kittens")
        .add( Restrictions.like("name", "F%")
    .list();



注意W二?createCriteria()q回一个新?Criteria实例Q该实例引用kittens 集合中的元素?
接下来,替换形态在某些情况下也是很有用的?br />  
List cats = sess.createCriteria(Cat.class)
    .createAlias("kittens", "kt")
    .createAlias("mate", "mt")
    .add( Restrictions.eqProperty("kt.name", "mt.name") )
    .list();



(createAlias()q不创徏一个新?Criteria实例?
Cat实例所保存的之前两ơ查询所q回的kittens集合?没有被条仉qo的。如果你希望只获?/font>

W合条g的kittensQ?你必M用returnMaps()?
 
List cats = sess.createCriteria(Cat.class)
    .createCriteria("kittens", "kt")
    .add( Restrictions.eq("name", "F%") )
    .returnMaps()
    .list();
Iterator iter = cats.iterator();
while ( iter.hasNext() ) {
    Map map = (Map) iter.next();
    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);
    Cat kitten = (Cat) map.get("kt");
}


5. 动态关联抓?br /> 你可以用setFetchMode()在运行时定义动态关联抓取的语义?
 
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .setFetchMode("mate", FetchMode.EAGER)
    .setFetchMode("kittens", FetchMode.EAGER)
    .list();
 
q个查询可以通过外连接抓取mate和kittens?br />  
6. 查询CZ
org.hibernate.criterion.Examplecd怽通过一个给定实?构徏一个条件查询?br />  
Cat cat = new Cat();
cat.setSex('F');
cat.setColor(Color.BLACK);
List results = session.createCriteria(Cat.class)
    .add( Example.create(cat) )
    .list();



版本属性、标识符和关联被忽略。默认情况下gؓnull的属性将被排除?
可以自行调整Example使之更实用?
 
Example example = Example.create(cat)
    .excludeZeroes()           //exclude zero valued properties
    .excludeProperty("color")  //exclude the property named "color"
    .ignoreCase()              //perform case insensitive string comparisons
    .enableLike();             //use like for string comparisons
List results = session.createCriteria(Cat.class)
    .add(example)
    .list();



甚至可以使用examples在关联对象上攄条g?br />  
List results = session.createCriteria(Cat.class)
    .add( Example.create(cat) )
    .createCriteria("mate")
        .add( Example.create( cat.getMate() ) )
    .list();



7. 投媄(Projections)、聚合(aggregationQ和分组QgroupingQ?br /> org.hibernate.criterion.Projections?Projection 的实例工厂。我们通过调用


setProjection()应用投媄C个查询?
 
List results = session.createCriteria(Cat.class)
    .setProjection( Projections.rowCount() )
    .add( Restrictions.eq("color", Color.BLACK) )
    .list();
 
List results = session.createCriteria(Cat.class)
    .setProjection( Projections.projectionList()
        .add( Projections.rowCount() )
        .add( Projections.avg("weight") )
        .add( Projections.max("weight") )
        .add( Projections.groupProperty("color") )
    )
    .list();




在一个条件查询中没有必要昑ּ的?"group by" 。某些投q型就是被定义?分组投媄Q他


们也出现在SQL的group by子句中?

可以选择把一个别名指z一个投影,q样可以使投影DU束或排序所引用。下面是两种不同?/font>

实现方式Q?br />  
List results = session.createCriteria(Cat.class)
    .setProjection( Projections.alias( Projections.groupProperty("color"), "colr" ) )
    .addOrder( Order.asc("colr") )
    .list();




List results = session.createCriteria(Cat.class)
    .setProjection( Projections.groupProperty("color").as("colr") )
    .addOrder( Order.asc("colr") )
    .list();
 
alias()和as()Ҏ(gu)便的一个投影实例包装到另外一?别名的Projection实例中。简而言之,


当你d一个投影到一个投影列表中?你可以ؓ它指定一个别名:
 
List results = session.createCriteria(Cat.class)
    .setProjection( Projections.projectionList()
        .add( Projections.rowCount(), "catCountByColor" )
        .add( Projections.avg("weight"), "avgWeight" )
        .add( Projections.max("weight"), "maxWeight" )
        .add( Projections.groupProperty("color"), "color" )
    )
    .addOrder( Order.desc("catCountByColor") )
    .addOrder( Order.desc("avgWeight") )
    .list();



List results = session.createCriteria(Domestic.class, "cat")
    .createAlias("kittens", "kit")
    .setProjection( Projections.projectionList()
        .add( Projections.property("cat.name"), "catName" )
        .add( Projections.property("kit.name"), "kitName" )
    )
    .addOrder( Order.asc("catName") )
    .addOrder( Order.asc("kitName") )
    .list();



也可以用Property.forName()来表C投影:
 
List results = session.createCriteria(Cat.class)
    .setProjection( Property.forName("name") )
    .add( Property.forName("color").eq(Color.BLACK) )
    .list();

List results = session.createCriteria(Cat.class)
    .setProjection( Projections.projectionList()
        .add( Projections.rowCount().as("catCountByColor") )
        .add( Property.forName("weight").avg().as("avgWeight") )
        .add( Property.forName("weight").max().as("maxWeight") )
        .add( Property.forName("color").group().as("color" )
    )
    .addOrder( Order.desc("catCountByColor") )
    .addOrder( Order.desc("avgWeight") )
    .list();



8. ȝ(detached)查询和子查询
DetachedCriteriacM你在一个session范围之外创徏一个查询,q且可以使用L?Session?/font>

执行它?br />  
DetachedCriteria query = DetachedCriteria.forClass(Cat.class)
    .add( Property.forName("sex").eq('F') );
//创徏一个Session
Session session = .;
Transaction txn = session.beginTransaction();
List results = query.getExecutableCriteria(session).setMaxResults(100).list();
txn.commit();
session.close();



DetachedCriteria也可以用以表C子查询。条件实例包含子查询可以通过 Subqueries或?/font>
Property获得?br />  
DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)
    .setProjection( Property.forName("weight").avg() );
session.createCriteria(Cat.class)
    .add( Property.forName("weight).gt(avgWeight) )
    .list();

DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)
    .setProjection( Property.forName("weight") );
session.createCriteria(Cat.class)
    .add( Subqueries.geAll("weight", weights) )
    .list();


怺兌的子查询也是有可能的Q?br />  
DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "cat2")
    .setProjection( Property.forName("weight").avg() )
    .add( Property.forName("cat2.sex").eqProperty("cat.sex") );
session.createCriteria(Cat.class, "cat")
    .add( Property.forName("weight).gt(avgWeightForSex) )
    .list();



LifeNote 2008-03-12 15:24 发表评论
]]>
越梦想----动感十的福特S-MAXhttp://m.tkk7.com/lifenote/archive/2008/03/09/184858.htmlLifeNoteLifeNoteSun, 09 Mar 2008 09:30:00 GMThttp://m.tkk7.com/lifenote/archive/2008/03/09/184858.htmlhttp://m.tkk7.com/lifenote/comments/184858.htmlhttp://m.tkk7.com/lifenote/archive/2008/03/09/184858.html#Feedback0http://m.tkk7.com/lifenote/comments/commentRss/184858.htmlhttp://m.tkk7.com/lifenote/services/trackbacks/184858.html    d刚刚毕业q没有急于扑ַ作而是在家里先dNQ经q一D|间的学习l于拿到了驾驶证Qƈ且来到北京这个繁华的国际大都市,L着自己的梦惻I我希望有一天我能够向那?/span>富和积极向上的C会成功人士一P开着属于自己的RI梭在城市中Q?/span>

      今天在网上搜索汽车寻找自׃意的车型Q无意中看见长安特S-MAX一Ƒ֊感设计的车型吸引了我Q于是浏览更多的相关信息Q发现在北京富特S-MAX有一个春日踏青自驾游zd。我的梦想终于可以实CQ虽然只是一ơ活动,但这也会让我更加珍惜q次Z而且会更加促使我不断努力为梦惌前q?/span>

三月春天明媚照hQ这L季节Q带着全家老小Q自背行囊沿着一路游下去好不惬意。这时候你是不是ؓ轿R的空间烦|不要让这些小事媄响你的出游计划。这Ƒ֮位ؓ都市多功能用?/span>”的新佳乐hMPV的空_SUV的款式;MPV的实用,SUV的稳固。在解决你对I间的烦g余,也不输掉对家人的保护?/span>S-MAX是福特第一N用了特Ƨ洲动感设计(Kinetic Design)的R型,取代了较早的新边锋设计,其充满运动和时尚风格的造型设计体现?/span>q动中的能量?br />  
      S-MAX
前端以鲜明的楔角车头为特征,富于动感的前照灯为它的外表增M一U果断?span style="color: #000099">雄是嵌入式的,高高地布|在前保险杠上,赋予汽R一U动感美。牌照板下的大型梯Ş格栅与上格栅形成互补
—?/span>q是特的特征,同时也给前部外观qx一分霸气。下格栅两侧cM?/span>鲨鱼?/span>的设计,形成了自q有的特色?br />
  从福?/span>S-MAXq动式的侧媄QZ隄出福特动感设计的意图所在。流U的车顶U条带着拱曲汇入发动机罩Q突出的轮拱带有后沿出风口ƈ以独特的上弯与窗ȝ后部相接。所有这一切都无不体现出福?/span>S-MAX是一部魅力四、活力迸发的汽R?/span>

q忧郁什么呢q么好的车,q么好这么难得的ZN不心动么Q赶快去参加自驾游活动吧Q这ơ试驾活动在3月底?/span>4月中旬D行,现在正是报名旉哦我已经报名了!而且更惊喜的是还有机会获得v外旅游大奖啊Q我最大的希望是能够有一天带着我的爸爸妈妈出去交游一天,q么好的Z我是l对不能错过了!

tag:特QS-MAXQSAVQFORDQ长安福特,公务Q商务,安全Q中URQ高URQ私家R



LifeNote 2008-03-09 17:30 发表评论
]]>
深入理解Tapestry的Rewindhttp://m.tkk7.com/lifenote/archive/2008/03/08/184695.htmlLifeNoteLifeNoteSat, 08 Mar 2008 08:03:00 GMThttp://m.tkk7.com/lifenote/archive/2008/03/08/184695.htmlhttp://m.tkk7.com/lifenote/comments/184695.htmlhttp://m.tkk7.com/lifenote/archive/2008/03/08/184695.html#Feedback0http://m.tkk7.com/lifenote/comments/commentRss/184695.htmlhttp://m.tkk7.com/lifenote/services/trackbacks/184695.html 我们来看一下最单的TextFieldlgQ组件定义如?
Java代码 复制代码
  1. <input  jwcid="price@TextField" type="text" value="ognl:picture.price"  translator="translator:number,pattern=##.##"  validators="validators:min=0" displayName="h" class="input_text"/>  

再看一下TextField中的rewindFormComponentlgҎ(gu)
Java代码 复制代码
  1. protected void rewindFormComponent(IMarkupWriter writer, IRequestCycle cycle) {   
  2.        //从请求中得到参数?  
  3.         String value = cycle.getParameter(getName());   
  4.   
  5.         try {   
  6.              //用translator来{换?  
  7.             Object object = getTranslatedFieldSupport().parse(this, value);   
  8. //用validators来验证?  
  9.             getValidatableFieldSupport().validate(this, writer, cycle, object);   
  10.             //赋值给容器或者页?  
  11.             setValue(object);   
  12.         } catch (ValidatorException e) {   
  13.             getForm().getDelegate().record(e);   
  14.         }   
  15.     }  

可以看到在rewindFormComponent中,主要是从h中取得用戯入的|然后q行处理Q最后赋值给容器或者页面,上面的例子中会调用页面类的getPicture().setPrice(“用户输入的?#8221;)来进行赋倹{这h个表单的提交可以理解ؓ所有的表单lgd用户输入的值ƈ赋值给面的过E?
整个表单提交的详l处理过E如下:
    * initialize():面初始?
    * pageBeginRender() ("rewind"):getRequestCycle().isRewinding()为true
    * rewind of the form / setting of properties:所有表单组件调用rewindFormComponent来取D?
    * Deferred listeners (for Submit components):调用Submitlg的listener
    * Form's listenerQ调用Formlg的listener
    * pageEndRender() ("rewind"): getRequestCycle().isRewinding()为true
    * pageBeginRender() (normal): getRequestCycle().isRewinding()为false
    * pageEndRender() (normal): getRequestCycle().isRewinding()为false
我们可以看到pageBeginRender和pageEndRender被调用了两次Q两ơ中的区别ؓRequestCycle().isRewindingQ因为我们在使用时经常利用pageBeginRender的初始化|所以这里有很多使用上的误区Q如果在pageBeginRender中从数据库读取数据来初始化跟表单提交无关的变量的话,可能被调用两次Q这个是应该避免的。什么叫跟表单提交无关的变量呢,是表单lg中跟赋值无关的Q例如上Ҏ(gu)到的value="ognl:picture.price",q时picture是与表单提交相关的变量Q如果你没有初始化,那么在赋值时调用getPicture().setPrice()׃出现I指针异常,因ؓq是的picture为null。我们D个例子来看一下表单无关的变量Q假如这个picture面会显CZ个创建picture的表单和所有picture的列表,那这个picture的列表就是与表单提交无关的变量,如果你在pageBeginRender中初始化的话Q就需要区分是否rewindQ否则表单提交时׃被初始化两次Q让我们看一下代码:
Java代码 复制代码
  1. public abstract void setPictures(List<Picture> pictures);   
  2. public abstract void setPictureInList();//用于For中的value   
  3. public abstract void setPicture(Picture picture);//用于表单创徏   
  4. public abstract Picture getPicture();   
  5. public void pageBeginRender(PageEvent event) {   
  6. if(getPicture()==null){   
  7. setPicture(new Picture());   
  8. }   
  9. setPictures(getPictureService().findAll());   
  10. }  
判断picture是否为nullq赋值在面昄和rewind中都是需要的Q因为页面显C时Q需要调用getPicture().getPrice(),面rewindӞ需要调用getPicture().setPrice(),q两个阶D中的picture都不能ؓnull。但setPictures会在表单提交时被调用两次Q在rewind阶段初始化它是没有用处的Q所以这时就要对是否rewindq行判断。修改后的代码如下:
Java代码 复制代码
  1. public void pageBeginRender(PageEvent event) {   
  2. if(getPicture()==null){   
  3. setPicture(new Picture());   
  4. }   
  5. if (!event.getRequestCycle().isRewinding()) {   
  6. setPictures(getPictureService().findAll());   
  7. }   
  8. }  
q样可以避免在rewind时对picturesq行不必要的赋倹{这里还要提到的一Ҏ(gu)面昄和提交后的页面很可能不是同一个页面类的实例,大家都知道页面类的实例是从实例池取到的,用户打开面昄表单完后的页面类实例和用h交表单时的用来rewind的页面类实例不一定是同一个,即是一个实例,也是被重新初始化q的Q不要想当然的认为显C单后再提交那个实例应该保存原来显C的东西Q这个应该理清楚?

原文地址Qhttp://www.javaeye.com/article/41724

LifeNote 2008-03-08 16:03 发表评论
]]>
վ֩ģ壺 Ů糱ëƬѲ| ŮƵһ| Ұ߹ۿ3| ƬѸ߿| һ| Ļ߹ۿձ| ޾Ʒ˾߹ۿ| 99Ƶ߾Ʒѹۿ6| ƷƵ׽Ƶ| һëƬѲһ| ŷͽȺ| Ƭ߹ۿ| ޾ƷһƷ99| AV˳ۺ| 鶹˳Ƶ| 99ƵоƷƵѹۿ| aëƬѹۿƵ| һAëƬѹۿþþƷ | ҹ޹Ʒ| ޳վ߹ۿ| ۾ƷҹӰ| ޳һ| AVרAVëվ| ۺϾƷþ| һɫƵ| vvvv99պƷ| ߹ۿaëƬ| ڵƵ| պƷƵ| bbbbbbƵ| ҹѸ߹ۿ| ˹ۿëƬ| ȫƵѸ| aëƬƵۿ| ӰԺһҳСƵ߹ۿ | 2018| ˳7777| ҹþþþС˵| ŷպۺϰȥ| ޳aƬӰԺĦ| ھƷþþþӰԺ|