??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产V高清在线观看,亚洲日产乱码一二三区别,亚洲国产无线乱码在线观看 http://www.tkk7.com/stone840/学我者生Q像我者死zh-cnSun, 11 May 2025 16:02:24 GMTSun, 11 May 2025 16:02:24 GMT60JPA注解记录http://www.tkk7.com/stone840/archive/2013/03/05/396062.html老天老天Tue, 05 Mar 2013 03:51:00 GMThttp://www.tkk7.com/stone840/archive/2013/03/05/396062.htmlhttp://www.tkk7.com/stone840/comments/396062.htmlhttp://www.tkk7.com/stone840/archive/2013/03/05/396062.html#Feedback1http://www.tkk7.com/stone840/comments/commentRss/396062.htmlhttp://www.tkk7.com/stone840/services/trackbacks/396062.htmlQ-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br />@NotFound(action=NotFoundAction.IGNORE)
使用hibernate
注解配置实体cȝ兌关系Q在many-to-one,one-to-one兌中,一边引用自另一边的属性,如果属性gؓ某某的数据在数据库不存在了,hibernate默认会抛出异常。解x问题Q加上如下注解就可以了:
@NotFound(action=NotFoundAction.IGNORE)Q意思是找不到引用的外键数据时忽略,NotFound默认是exception

Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?/strong>
cascade = CascadeType.REFRESHQcascade=CascadeType.ALL

cascade表示U联操作  


   CascadeType.MERGEU联更新Q若items属性修改了那么order对象保存时同时修改items里的对象。对应EntityManager的mergeҎ

 
   CascadeType.PERSISTU联hQ获取order对象里也同时也重新获取最新的items时的对象。对应EntityManager的refresh(object)Ҏ有效。即会重新查询数据库里的最新数?nbsp; 
  

  CascadeType.REFRESHU联保存Q对order对象保存时也对items里的对象也会保存。对应EntityManager的presistҎ  
  

  CascadeType.REMOVEU联删除Q对order对象删除也对items里的对象也会删除。对应EntityManager的removeҎ  

CascadeType.PERSIST只有AcL增时Q会U联B对象新增。若B对象在数据库存(跟新Q在则抛异常Q让B变ؓ持久态)

CascadeType.MERGE指AcL增或者变化,会联B对象Q新增或者变化)

CascadeType.REMOVE只有Acd除时Q会U联删除Bc;

CascadeType.ALL包含所有;

CascadeType.REFRESH没用q?

lgQ大多数情况用CascadeType.MERGEp辑ֈU联跟新又不报错Q用CascadeType.ALL时要斟酌下CascadeType.REMOVE

@Fetch:

定义了加载关联关pȝ获取{略. FetchMode 可以?

SELECT (在需要加载关联的时候触发select操作),     SUBSELECT(只对集合有效,使用了子查询{略,详情参考Hibernate参考文?

JOIN (在加载主实体(owner entity)的时候用SQL JOIN来加载关联关p?.

JOIN 覆写Q何gq属?(通过 JOIN{略加蝲的关联将不再h延迟?.



Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?/strong>
fetch=FetchType.LAZY
Hibernate的数据加载方式:
1.x加蝲 immediately loading

       实体加蝲完成?/span>Q立卛_载其兌的数据?/span>
2.延迟加蝲lazy loading

       实体相关联的数据?span style="color: rgb(255, 0, 0);">W一ơ访?/span>时再q行d?
3.预先加蝲 eager loading

        与immediately loadingcMQ但实体和相兌的数据是通过一条sql同时d?br />4.扚w加蝲 batch loading
        Q?br />


Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-
EntityManager 的API
下面是EntityManager的一些主要的接口ҎQ?
void persist(Object entity)
      通过调用EntityManager的persist()ҎQ新实体实例{换ؓ受控状态。这意谓着当persist()Ҏ所在的事务提交Ӟ实体的数据将保存到数据库中。如果实体已l被持久化,那么调用persist()操作不会发生M事情。如果对一个已l删除的实体调用persist()操作Q删除态的实体又{变ؓ受控态。如果对游离状的实体执行persist()操作Q将抛出IllegalArgumentException?在一个实体上调用persist()操作Q将q播到和实体兌的实体上Q执行相应的U联持久化操作;

void remove(Object entity)
      通过调用remove()Ҏ删除一个受控的实体。如果实体声明ؓU联删除(cascade=REMOVE 或者cascade=ALL )Q被兌的实体也会被删除。在一个新建状态的实体上调用remove()操作Q将被忽略。如果在游离实体上调用remove()操作Q将抛出IllegalArgumentExceptionQ相关的事务回滚。如果在已经删除的实体上执行remove()操作Q也会被忽略Q?

void flush()
      受控态的实体数据同步到数据库中;

T merge(T entity)
      一个游L的实体持久化到数据库中Qƈ转换为受控态的实体Q?

T find(Class entityClass, Object primaryKey)
      以主键查询实体对象,entityClass是实体的c,primaryKey是主键|如以下的代码查询Topic实体Q?Topic t = em.find(Topic.class,1); Query createQuery(String qlString) ҎJPA的查询语句创Z个查询对象QueryQ如下面的代码:
Query q= em.createQuery(""SELECT t FROM Topic t WHERE t.topicTitle LIKE :topicTitle")"); Query createNativeQuery(String sqlString)
使用本地数据库的SQL语句创徏一个Query对象QQuery通过getResultList()Ҏ执行查询后,q回一个Listl果集,每一行数据对应一个Vector?
使用本地数据库的SQL语句创徏一个Query对象QQuery通过getResultList()Ҏ执行查询后,q回一个Listl果集,每一行数据对应一个Vector?
看来要学习的东东q有好多啊~~努力吧!


 



老天 2013-03-05 11:51 发表评论
]]>
ssh框架整合开发杂?/title><link>http://www.tkk7.com/stone840/archive/2013/01/15/394256.html</link><dc:creator>老天</dc:creator><author>老天</author><pubDate>Tue, 15 Jan 2013 08:54:00 GMT</pubDate><guid>http://www.tkk7.com/stone840/archive/2013/01/15/394256.html</guid><wfw:comment>http://www.tkk7.com/stone840/comments/394256.html</wfw:comment><comments>http://www.tkk7.com/stone840/archive/2013/01/15/394256.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/stone840/comments/commentRss/394256.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/stone840/services/trackbacks/394256.html</trackback:ping><description><![CDATA[<div><font style="background-color: #c7edcc">Struts2的下载地址Q?br /><a >http://struts.apache.org/download.cgi</a><br />目前下蝲版本Q?.2.1GA?br /><br />Hibernate下蝲地址Q?br /><a >http://www.hibernate.org/downloads<br /></a>目前下蝲版本Q?.6.0 Final?br /><br />Spring的下载地址Q?br /><a >http://www.springsource.org/download<br /></a>目前下蝲版本Q稳定版3.0.5<br /><br /></font></div> <div><font style="background-color: #c7edcc"></font> </div> <div><font style="background-color: #c7edcc"></font> </div> <div><font style="background-color: #c7edcc"></font> </div> <div><font style="background-color: #c7edcc">2013-1-15   <br />1、struts2  top关键字理解?nbsp; <br />1).top 指代当前q代元素Q可以ؓ对象Q?br />2).q里的top可用[0].top替代Q但不能使用[0];[0]代表整个栈对象。如果单U调用[0]会调用?toString()Ҏ输出对象信息Q?br /><br /><br /><br />2、删除信息时错误日志Q?br /><font size="2"><font color="#cc0000">java.lang.IllegalArgumentException:</font> <font color="#cc0000">Removing</font> <font color="#cc0000">a</font> <font color="#cc0000">detached</font> <font color="#cc0000">instance<br /><br /> Detached - a detached instance is an object that has been persistent, but its Session has been closed. The reference to the </div> <p>      object is still valid, of course, and the detached instance might even be modified in this state. A detached instance can be </p> <p>      reattached to a new Session at a later point in time, making it (and all the modifications) persistent again</p> <p>      现在应该明白了吧Q在删除之前把这个Detached instancel定到当前的SesssionQ在用当前Sesssion删除此instance。修改后的代码如</p> <div><br />解决办法Q?br />public void delete(SASVo  vo) {<br />               entityManager.remove( entityManager.merge(vo));<br />        }</font></font></font></div><img src ="http://www.tkk7.com/stone840/aggbug/394256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/stone840/" target="_blank">老天</a> 2013-01-15 16:54 <a href="http://www.tkk7.com/stone840/archive/2013/01/15/394256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOM、JDOM、DOM4J的区?.http://www.tkk7.com/stone840/archive/2012/12/17/393109.html老天老天Mon, 17 Dec 2012 08:19:00 GMThttp://www.tkk7.com/stone840/archive/2012/12/17/393109.htmlhttp://www.tkk7.com/stone840/comments/393109.htmlhttp://www.tkk7.com/stone840/archive/2012/12/17/393109.html#Feedback0http://www.tkk7.com/stone840/comments/commentRss/393109.htmlhttp://www.tkk7.com/stone840/services/trackbacks/393109.html

dom是解析xml的底层接口之一(另一U是sax)  
而jdom和dom4j则是Z底层api的更高񔞮装   
dom是通用的,而jdom和dom4j则是面向java语言?nbsp;
  
    DOM 是用与^台和语言无关的方式表C?XML 文档的官?W3C 标准。DOM 是以层次l构l织的节Ҏ信息片断的集合。这个层ơ结构允许开发h员在树中L特定信息。分析该l构通常需要加载整个文档和构造层ơ结构,然后才能做Q何工作。由于它是基于信息层ơ的Q因?DOM 被认为是Z树或Z对象的。DOM 以及q义的基于树的处理具有几个优炏V首先,׃树在内存中是持久的,因此可以修改它以便应用程序能Ҏ据和l构作出更改。它q可以在M时候在树中上下DQ而不是像 SAX 那样是一ơ性的处理。DOM 使用h也要单得多?/span>
XML的四U解析器(dom,sax,jdom,dom4j)原理及性能比较(转自zsq)    
1、DOM
    DOM 是用与^台和语言无关的方式表C?XML 文档的官?W3C 标准。DOM 是以层次l构l织的节Ҏ信息片断的集合。这个层ơ结构允许开发h员在树中L特定信息。分析该l构通常需要加载整个文档和构造层ơ结构,然后才能做Q何工作。由于它是基于信息层ơ的Q因?DOM 被认为是Z树或Z对象的。DOM 以及q义的基于树的处理具有几个优炏V?br />    首先Q由于树在内存中是持久的Q因此可以修改它以便应用E序能对数据和结构作出更攏V它q可以在M时候在树中上下DQ而不是像 SAX 那样是一ơ性的处理。DOM 使用h也要单得多?br />    另一斚wQ对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这L数据会更好。这些基于事件的模型Q比?SAX?
2、SAX 
    q种处理的优炚w常类g媒体的优点。分析能够立卛_始,而不是等待所有的数据被处理。而且Q由于应用程序只是在d数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优炏V事实上Q应用程序甚至不必解析整个文档;它可以在某个条g得到满时停止解析。一般来_SAX q比它的替代?DOM 快许多?br />3、选择 DOM q是选择 SAX Q?/strong> 
    对于需要自q写代码来处理 XML 文档的开发h员来_选择 DOM q是 SAX 解析模型是一个非帔R要的设计决策?nbsp;
    DOM 采用建立树Şl构的方式访?XML 文档Q?SAX 采用的事件模型?nbsp;
    DOM 解析器把 XML 文档转化Z个包含其内容的树Qƈ可以Ҏq行遍历。用 DOM 解析模型的优Ҏ~程ҎQ开发h员只需要调用徏树的指oQ然后利用navigation APIs讉K所需的树节点来完成Q务。可以很Ҏ的添加和修改树中的元素。然而由于?DOM 解析器的时候需要处理整?XML 文档Q所以对性能和内存的要求比较高,其是遇到很大的 XML 文g的时候。由于它的遍历能力,DOM 解析器常用于 XML 文档需要频J的改变的服务中?br />    SAX 解析器采用了Z事g的模型,它在解析 XML 文档的时候可以触发一pd的事Ӟ当发现给定的tag的时候,它可以激zM个回调方法,告诉该方法制定的标签已经扑ֈ。SAX 对内存的要求通常会比较低Q因为它让开发h员自己来军_所要处理的tag。特别是当开发h员只需要处理文档中所包含的部分数据时QSAX q种扩展能力得到了更好的体现。但?SAX 解析器的时候编码工作会比较困难Q而且很难同时讉K同一个文档中的多处不同数据?br />4、JDOM 
    JDOM的目的是成ؓ Java 特定文档模型Q它化与 XML 的交互ƈ且比使用 DOM 实现更快。由于是W一?Java 特定模型QJDOM 一直得到大力推q和促进。正在考虑通过“Java 规范h JSR-102”它最l用?#8220;Java 标准扩展”。从 2000 q初已l开始了 JDOM 开发?br />    JDOM ?DOM 主要有两斚w不同。首先,JDOM 仅用具体类而不使用接口。这在某些方面简化了 APIQ但是也限制了灵zL。第二,API 大量使用?Collections c,化了那些已经熟悉q些cȝ Java 开发者的使用?br />    JDOM 文档声明其目的是“使用 20%Q或更少Q的_֊解决 80%Q或更多QJava/XML 问题”Q根据学习曲U假定ؓ 20%Q。JDOM 对于大多?Java/XML 应用E序来说当然是有用的Qƈ且大多数开发者发?API ?DOM Ҏ理解得多。JDOM q包括对E序行ؓ的相当广泛检查以防止用户做Q何在 XML 中无意义的事。然而,它仍需要您充分理解 XML 以便做一些超出基本的工作Q或者甚至理解某些情况下的错误)。这也许是比学习 DOM ?JDOM 接口都更有意义的工作?br />    JDOM 自n不包含解析器。它通常使用 SAX2 解析器来解析和验证输?XML 文档Q尽它q可以将以前构造的 DOM 表示作ؓ输入Q。它包含一些{换器以将 JDOM 表示输出?SAX2 事g、DOM 模型?XML 文本文档。JDOM 是在 Apache 许可证变体下发布的开放源码?br />5、DOM4J 
    虽然 DOM4J 代表了完全独立的开发结果,但最初,它是 JDOM 的一U智能分支。它合ƈ了许多超出基?XML 文档表示的功能,包括集成?XPath 支持、XML Schema 支持以及用于大文档或化文档的基于事件的处理。它q提供了构徏文档表示的选项Q它通过 DOM4J API 和标?DOM 接口hq行讉K功能。从 2000 下半q开始,它就一直处于开发之中?br />    为支持所有这些功能,DOM4J 使用接口和抽象基本类Ҏ。DOM4J 大量使用?API 中的 Collections c,但是在许多情况下Q它q提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是Q虽?DOM4J 付出了更复杂?API 的代P但是它提供了?JDOM 大得多的灉|性?br />    在添加灵zL、XPath 集成和对大文档处理的目标ӞDOM4J 的目标与 JDOM 是一LQ针?Java 开发者的易用性和直观操作。它q致力于成ؓ?JDOM 更完整的解决ҎQ实现在本质上处理所?Java/XML 问题的目标。在完成该目标时Q它?JDOM 更少防止不正的应用E序行ؓ?br />    DOM4J 是一个非帔R怼U的Java XML APIQ具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的Y件。如今你可以看到来多?Java 软g都在使用 DOM4J 来读?XMLQ特别值得一提的是连 Sun ?JAXM 也在?DOM4J?br />6、总述 
    JDOM ?DOM 在性能试时表C佻I在测?10M 文档时内存溢出。在文档情况下q值得考虑使用 DOM ?JDOM。虽?JDOM 的开发者已l说明他们期望在正式发行版前专注性能问题Q但是从性能观点来看Q它实没有值得推荐之处。另外,DOM 仍是一个非常好的选择。DOM 实现q泛应用于多U编E语a。它q是许多其它?XML 相关的标准的基础Q因为它正式获得 W3C 推荐Q与Z非标准的 Java 模型相对Q,所以在某些cd的项目中可能也需要它Q如?javascript 中?DOMQ?br />    SAX表现较好Q这要依赖于它特定的解析方式。一?SAX 即到来的XML,但ƈ没有载入到内存(当然当XML被dӞ会有部分文档暂时隐藏在内存中Q?br />    无疑QDOM4J是最好的Q目前许多开源项目中大量采用 DOM4JQ例如大名鼎鼎的 Hibernate 也用 DOM4J 来读?XML 配置文g。如果不考虑可移植性,那就采用DOM4J吧!



老天 2012-12-17 16:19 发表评论
]]>
log4j配置详细讲解http://www.tkk7.com/stone840/archive/2012/12/05/392505.html老天老天Wed, 05 Dec 2012 09:00:00 GMThttp://www.tkk7.com/stone840/archive/2012/12/05/392505.htmlhttp://www.tkk7.com/stone840/comments/392505.htmlhttp://www.tkk7.com/stone840/archive/2012/12/05/392505.html#Feedback0http://www.tkk7.com/stone840/comments/commentRss/392505.htmlhttp://www.tkk7.com/stone840/services/trackbacks/392505.htmllog4j配置解
W一步:加入log4j-1.2.8.jar到lib下?/span>

W二步:在CLASSPATH下徏立log4j.properties。内容如下:

1 log4j.rootCategory=INFO, stdout , R

2

3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender

4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

5 log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

6

7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

8 log4j.appender.R.File=D:\Tomcat 5.5\logs\qc.log

9 log4j.appender.R.layout=org.apache.log4j.PatternLayout

10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

11

12 log4j.logger.com.neusoft=DEBUG

13 log4j.logger.com.opensymphony.oscache=ERROR

14 log4j.logger.net.sf.navigator=ERROR

15 log4j.logger.org.apache.commons=ERROR

16 log4j.logger.org.apache.struts=WARN

17 log4j.logger.org.displaytag=ERROR

18 log4j.logger.org.springframework=DEBUG

19 log4j.logger.com.ibatis.db=WARN

20 log4j.logger.org.apache.velocity=FATAL

21

22 log4j.logger.com.canoo.webtest=WARN

23

24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

25 log4j.logger.org.hibernate=DEBUG

26 log4j.logger.org.logicalcobwebs=WARN

W三步:相应的修改其中属性,修改之前必ȝ道这些都是干什么的Q在W二部分讲解?/span>

W四步:在要输出日志的类中加入相兌句:

定义属性:protected final Log log = LogFactory.getLog(getClass());

在相应的Ҏ中:

if (log.isDebugEnabled())

{

log.debug(“System …..”);

}

二、Log4j说明

1 log4j.rootCategory=INFO, stdout , R

此句为将{为INFO的日志信息输出到 stdout和Rq两个目的地Qstdout和R的定义在下面的代码,可以L起名。等U可分ؓOFF?FATAL、ERROR、WARN、INFO、DEBUG、ALLQ如果配|OFF则不打出M信息Q如果配|ؓINFOq样只显CINFO, WARN, ERROR的log信息Q而DEBUG信息不会被显C,具体讲解可参照第三部分定义配|文件中的logger?/span>

3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender

此句为定义名为stdout的输出端是哪U类型,可以?/span>

org.apache.log4j.ConsoleAppenderQ控制台Q,

org.apache.log4j.FileAppenderQ文ӞQ?/span>

org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文ӞQ?/span>

org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文Ӟ

org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)

具体讲解可参照第三部分定义配|文件中的Appender?/span>

4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

此句为定义名为stdout的输出端的layout是哪U类型,可以?/span>

org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q,

org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q,

org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q,

org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)

具体讲解可参照第三部分定义配|文件中的Layout?/span>

5 log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

如果使用pattern布局p指定的打C息的具体格式ConversionPatternQ打印参数如下:

%m 输出代码中指定的消息

%p 输出优先U,即DEBUGQINFOQWARNQERRORQFATAL

%r 输出自应用启动到输出该log信息耗费的毫U数

%c 输出所属的cȝQ通常是所在类的全?/span>

%t 输出产生该日志事件的U程?/span>

%n 输出一个回车换行符QWindowsq_?#8220;rn”QUnixq_?#8220;n”

%d 输出日志旉点的日期或时_默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyyy MMM dd HH:mm:ss,SSS}Q输出类|2002q?0?8?22Q?0Q?8Q?21

%l 输出日志事g的发生位|,包括cȝ名、发生的U程Q以及在代码中的行数?/span>

[QC]是log信息的开_可以ZQ意字W,一般ؓ目U?/span>

输出的信?/span>

[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'

具体讲解可参照第三部分定义配|文件中的格式化日志信息?/span>

7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

此句与第3行一栗定义名为R的输出端的类型ؓ每天产生一个日志文件?/span>

8 log4j.appender.R.File=D:\Tomcat 5.5\logs\qc.log

此句为定义名为R的输出端的文件名为D:\Tomcat 5.5\logs\qc.log

可以自行修改?/span>

9 log4j.appender.R.layout=org.apache.log4j.PatternLayout

与第4行相同?/span>

10 log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

与第5行相同?/span>

12 log4j.logger.com. neusoft =DEBUG

指定com.neusoft包下的所有类的等UؓDEBUG?/span>

可以把com.neusoft改ؓ自己目所用的包名?/span>

13 log4j.logger.com.opensymphony.oscache=ERROR

14 log4j.logger.net.sf.navigator=ERROR

q两句是把这两个包下出现的错误的{设ؓERRORQ如果项目中没有配置EHCacheQ则不需要这两句?/span>

15 log4j.logger.org.apache.commons=ERROR

16 log4j.logger.org.apache.struts=WARN

q两句是struts的包?/span>

17 log4j.logger.org.displaytag=ERROR

q句是displaytag的包。(QC问题列表面所用)

18 log4j.logger.org.springframework=DEBUG

此句为Spring的包?/span>

24 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

25 log4j.logger.org.hibernate=DEBUG

此两句是hibernate的包?/span>

以上q些包的讄可根据项目的实际情况而自行定制?/span>

三、log4j详解

1、定义配|文?/span>

Log4j支持两种配置文g格式Q一U是XML格式的文Ӟ一U是JavaҎ文件log4j.propertiesQ键=|。下面将介绍使用log4j.properties文g作ؓ配置文g的方?

、配|根Logger

Logger 负责处理日志记录的大部分操作?/span>

其语法ؓQ?/span>

log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中Qlevel 是日志记录的优先U,分ؓOFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的别。Log4j只用四个别,?先从高C分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的U别Q您可以控制到应用程序中相应U别的日志信息的开兟뀂比如在q里?义了INFOU别Q只有等于及高于q个U别的才q行处理Q则应用E序中所有DEBUGU别的日志信息将不被打印出来。ALL:打印所有的日志QOFFQ关 闭所有的日志输出?appenderName是指定日志信息输出到哪个地斏V可同时指定多个输出目的地?/span>

、配|日志信息输出目的地 Appender

Appender 负责控制日志记录操作的输出?/span>

其语法ؓQ?/span>

log4j.appender.appenderName = fully.qualified.name.of.appender.class

log4j.appender.appenderName.option1 = value1



log4j.appender.appenderName.optionN = valueN

q里的appenderName为在①里定义的Q可L起名?/span>

其中QLog4j提供的appender有以下几U:

org.apache.log4j.ConsoleAppenderQ控制台Q,

org.apache.log4j.FileAppenderQ文ӞQ?/span>

org.apache.log4j.DailyRollingFileAppenderQ每天生一个日志文ӞQ?/span>

org.apache.log4j.RollingFileAppenderQ文件大到达指定尺寸的时候生一个新的文ӞQ可通过 log4j.appender.R.MaxFileSize=100KB讄文g大小Q还可通过 log4j.appender.R.MaxBackupIndex=1讄Z存一个备份文件?/span>

org.apache.log4j.WriterAppenderQ将日志信息以流格式发送到L指定的地方)

例如Qlog4j.appender.stdout=org.apache.log4j.ConsoleAppender

定义一个名为stdout的输出目的地QConsoleAppender为控制台?/span>

、配|日志信息的格式Q布局QLayout

Layout 负责格式化Appender的输出?/span>

其语法ؓQ?/span>

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1 = value1



log4j.appender.appenderName.layout.optionN = valueN

其中QLog4j提供的layout有以下几U:

org.apache.log4j.HTMLLayoutQ以HTML表格形式布局Q,

org.apache.log4j.PatternLayoutQ可以灵zd指定布局模式Q,

org.apache.log4j.SimpleLayoutQ包含日志信息的U别和信息字W串Q,

org.apache.log4j.TTCCLayoutQ包含日志生的旉、线E、类别等{信息)

2、格式化日志信息

Log4J采用cMC语言中的printf函数的打印格式格式化日志信息Q打印参数如下:

%m 输出代码中指定的消息

%p 输出优先U,即DEBUGQINFOQWARNQERRORQFATAL

%r 输出自应用启动到输出该log信息耗费的毫U数

%c 输出所属的cȝQ通常是所在类的全?/span>

%t 输出产生该日志事件的U程?/span>

%n 输出一个回车换行符QWindowsq_?#8220;rn”QUnixq_?#8220;n”

%d 输出日志旉点的日期或时_默认格式为ISO8601Q也可以在其后指定格式,比如Q?d{yyyy MMM dd HH:mm:ss,SSS}Q输出类|2002q?0?8?22Q?0Q?8Q?21

%l 输出日志事g的发生位|,包括cȝ名、发生的U程Q以及在代码中的行数?/span>

3、在代码中用Log4j

我们在需要输出日志信息的cM做如下的三个工作Q?/span>

1、导入所有需的commongs-loggingc:

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

2、在自己的类中定义一个org.apache.commons.logging.LogcȝU有静态类成员Q?/span>

private final Log log = LogFactory.getLog(getClass());

LogFactory.getLog()Ҏ的参C用的是当前类的class?/span>

3、用org.apache.commons.logging.Logcȝ成员Ҏ输出日志信息Q?/span>

if (log.isDebugEnabled())
{
log.debug("111");
}
if (log.isInfoEnabled())
{
log.info("222");
}
if (log.isWarnEnabled())
{
log.warn("333");
}
if (log.isErrorEnabled())
{
log.error("444");
}
if (log.isFatalEnabled())
{
log.fatal("555")
}


老天 2012-12-05 17:00 发表评论
]]>
SSH里的注释集锦http://www.tkk7.com/stone840/archive/2012/12/03/392359.html老天老天Mon, 03 Dec 2012 03:09:00 GMThttp://www.tkk7.com/stone840/archive/2012/12/03/392359.htmlhttp://www.tkk7.com/stone840/comments/392359.htmlhttp://www.tkk7.com/stone840/archive/2012/12/03/392359.html#Feedback0http://www.tkk7.com/stone840/comments/commentRss/392359.htmlhttp://www.tkk7.com/stone840/services/trackbacks/392359.html1、@Transient 
使用场景Q一般在模型中对应某一个字D늚属性中的set和getҎ中。作用是数据与数据库中不一一对应。如Q?br />/*@Transient
 public String getModulename() {
  return modulename;
 }
 public void setModulename(String modulename) {
  this.modulename = modulename;
 }*/

2、@ManyToOne
多对一。可以把另一个模型对应过来。在查询Ӟ无需要联表查询?br /> @JoinColumn(name="moduleid",insertable=false,updatable=false)
 @NotFound(action=NotFoundAction.IGNORE)
 public CateModule getCateModule() {
  return cateModule;
 }
 public void setCateModule(CateModule cateModule) {
  this.cateModule = cateModule;
 }

老天 2012-12-03 11:09 发表评论
]]>
循环模型中set和getҎ里的属?/title><link>http://www.tkk7.com/stone840/archive/2012/12/03/392357.html</link><dc:creator>老天</dc:creator><author>老天</author><pubDate>Mon, 03 Dec 2012 02:49:00 GMT</pubDate><guid>http://www.tkk7.com/stone840/archive/2012/12/03/392357.html</guid><wfw:comment>http://www.tkk7.com/stone840/comments/392357.html</wfw:comment><comments>http://www.tkk7.com/stone840/archive/2012/12/03/392357.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/stone840/comments/commentRss/392357.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/stone840/services/trackbacks/392357.html</trackback:ping><description><![CDATA[private Object filterHTMLTag(Object obj) throws Exception{<br />  if(obj==null) return obj;<br />  Class objCls=obj.getClass();<br />  Field[] allFields=objCls.getDeclaredFields();<br />  if(allFields!=null && allFields.length!=0){<br />   HTMLFilter filter=new HTMLFilter();<br />   for(Field field: allFields){<br />    if(field!=null){<br />     if(field.getType().equals(String.class)){<br />      String getMethod="get"+upperCaseFirstChar(field.getName());<br />      String setMethod="set"+upperCaseFirstChar(field.getName());<br />      try {<br />       //String value=(String)objCls.getMethod(getMethod).invoke(obj);<br />       //value=filter.filter(value);<br />       //objCls.getMethod(setMethod, value.getClass()).invoke(obj, value);<br />      } catch (Exception e) {<br />       throw e;<br />      }<br />     }<br />    }<br />   }<br />  }<br />  return obj;<br /> }<img src ="http://www.tkk7.com/stone840/aggbug/392357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/stone840/" target="_blank">老天</a> 2012-12-03 10:49 <a href="http://www.tkk7.com/stone840/archive/2012/12/03/392357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL语句记录http://www.tkk7.com/stone840/archive/2012/11/28/392154.html老天老天Wed, 28 Nov 2012 10:21:00 GMThttp://www.tkk7.com/stone840/archive/2012/11/28/392154.htmlhttp://www.tkk7.com/stone840/comments/392154.htmlhttp://www.tkk7.com/stone840/archive/2012/11/28/392154.html#Feedback1http://www.tkk7.com/stone840/comments/commentRss/392154.htmlhttp://www.tkk7.com/stone840/services/trackbacks/392154.htmlALTER TABLE "public"."base_contract"
ADD COLUMN "isrejected" int2 DEFAULT 0 NOT NULL;

ALTER TABLE "public"."base_contract"
ADD COLUMN "userid" int8 DEFAULT 0 NOT NULL;

ALTER TABLE "public"."base_user"
ADD COLUMN "telphone" varchar(20) DEFAULT ''::character varying NOT NULL;


INSERT INTO "base_role" VALUES ('21', '代理?, '只能查看对属于自q所有合?);

update base_contract a set userid=(SELECT b.userid from base_user b where a.username=b.username LIMIT 1)

delete from base_menu;

BEGIN;
INSERT INTO "base_menu" VALUES ('1', 'infoMenu', null, '公用菜单', null, null, null, null, 'Y', '0');
INSERT INTO "base_menu" VALUES ('2', 'ediUser', 'infoMenu', '修改个h资料', 'Note', 'ediUser.jsp', 'top', '2', 'N', '0');
COMMIT;

 



老天 2012-11-28 18:21 发表评论
]]>
Centos6.0下Nginx+Resin配置http://www.tkk7.com/stone840/archive/2012/11/20/391659.html老天老天Tue, 20 Nov 2012 10:40:00 GMThttp://www.tkk7.com/stone840/archive/2012/11/20/391659.htmlhttp://www.tkk7.com/stone840/comments/391659.htmlhttp://www.tkk7.com/stone840/archive/2012/11/20/391659.html#Feedback1http://www.tkk7.com/stone840/comments/commentRss/391659.htmlhttp://www.tkk7.com/stone840/services/trackbacks/391659.html一、安装环境:
pȝ版本:Centos 6.0 x86_64
Nginx版本Q?.0.11
Jdk版本Q?.7.0
Resin版本Q?.0.23
首先下蝲需要安装的软gQ【JDK可以去java官网下蝲?br />wget http://nginx.org/download/nginx-1.1.11.tar.gz 下蝲nginx
wget http://www.caucho.com/download/resin-pro-4.0.23.tar.gz 下蝲resin
下蝲?usr/src ?br />二、安装nginx
useradd www ;yum install pcre-devel && tar -xzf nginx-1.0.10.tar.gz && cd nginx-1.0.11; sed -i -e ‘s/1.0.11//g’ -e ‘s/nginx\//TDWS/g’ -e ‘s/”NGINX”/”TDWS”/g’ src/core/nginx.h &&./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module &&make &&make install

三、安装jdkq且配置resin
下蝲jdk1.7.0Qƈ且解压到/usr/java/?l果昄?/usr/java/jdk1.7.0
cd /usr/src/ && tar xzf resin-pro-4.0.23.tar.gz &&cd resin-pro-4.0.23 &&./configure –with-java-home=/usr/java/jdk1.7.0 &&make &&make install 卛_Q?br />安装完后resin的日志目录在 /var/log/resin/?br />启动resin命o如下 /etc/init.d/resin start 卛_Q然后访问http://ip:8080

四、nginx整合resin的方式跟nginx整合tomcat一P再这里就不重复了Q?br />提供我上一文章地址:http://chinaapp.sinaapp.com/?p=1922

五、resin配置优化:
以下是我的配|文?贴出一部分修改的,其他的保持不变,在回复下面!



老天 2012-11-20 18:40 发表评论
]]>
freemarker 基本指o http://www.tkk7.com/stone840/archive/2012/11/15/391367.html老天老天Thu, 15 Nov 2012 03:30:00 GMThttp://www.tkk7.com/stone840/archive/2012/11/15/391367.htmlhttp://www.tkk7.com/stone840/comments/391367.htmlhttp://www.tkk7.com/stone840/archive/2012/11/15/391367.html#Feedback0http://www.tkk7.com/stone840/comments/commentRss/391367.htmlhttp://www.tkk7.com/stone840/services/trackbacks/391367.html一Qif指oQ?br /><#if condition>...
<#elseif condition2>...
<#elseif condition3>...
...<#else>...
</#if>

二:switch
<#switch value>
<#case refValue1>...<#break>
<#case refValue2>...<#break>...
<#case refValueN>...<#break>
<#default>...</#switch>

三:listQbreak
<#list sequence as item>
...
</#list>
两个Ҏ的@环变量:
item_index: 当前变量的烦引倹{?br />item_has_next: 是否存在下一个对象?/p>

可以?lt;#break/>指odloop循环?/p>

四:include指o
<#include filename>或?br /><#include filenameoptions>
filename: 表达式{换ؓ字符?br />options: encoding=encoding, parse=parse encoding: 表达式{换ؓ字符?br />parse: 表达式{换ؓ逻辑|是否作ؓftl文g解析?br /><#include "/common/navbar.html" parse=false encoding="Shift_JIS">

<#include "*/footer.ftl">表示当前目录下以及所有父目录下的文g。如果当前模版在/foo/bar/template.ftl Q那么查找footer.ftl的顺序ؓQ?foo/bar/footer.ftl
/foo/footer.ftl/footer.ftlq种方式讲允许设计者将通用的模版放在父文g多w面?br />也可以只指定部分路径Q?lt;#include "*/commons/footer.ftl">

五:import指o<#import path as hash>
六:noparse
<#noparse>
...
</#noparse>

七:compress
<#compress>
...
</#compress>
八:escapeQnoescape
<#escape identifier as expression>
...
<#noescape>...</#noescape>
...
</#escape>

escape指obody区的ftl的interpolations都会被自动加上escape表达式。但是不会媄响字W串内的interpolations。而且也只会媄响到body内出现的interpolationsQ比如不会媄响到include的ftl的interpolations?br /><#escape x as x?html>
First name: ${firstName}
Last name: ${lastName}
Maiden name: ${maidenName}</#escape>
{同于:

First name: ${firstName?html}
Last name: ${lastName?html}
Maiden name: ${maidenName?html}

escape指o在解析模版时起作用,而不是运行时起作用?/p>

escape指oq能嵌套使用Q子l承父的escape规则?/p>

<#escape x as x?html>
Customer Name: ${customerName}
Items to ship:
<#escape x as itemCodeToNameMap[x]>
${itemCode1}
${itemCode2}
${itemCode3}
${itemCode4}
</#escape></#escape>
{同于:Customer Name: ${customerName?html}
Items to ship:
${itemCodeToNameMap[itemCode1]?html}
${itemCodeToNameMap[itemCode2]?html}
${itemCodeToNameMap[itemCode3]?html}
${itemCodeToNameMap[itemCode4]?html}

九:assign指o
<#assign name=value>or<#assign name1=value1name2=value2... nameN=valueN>or<#assign same as above... in namespacehash>or<#assign name> capture this</#assign>or<#assign name in namespacehash> capture this</#assign>创徏或者替换一个已l存在的变量Q只能作用于层变量。不好的做法Q?lt;#assign x>Hello ${user}!</#assign>更改为:<#assign x="Hello ${user}!">
十:global指o
<#global name=value>
or
<#global name1=value1name2=value2... nameN=valueN>or<#global name>
capture this
</#global>
十一Qlocal指o
<#local name=value>
or
<#local name1=value1name2=value2... nameN=valueN>or<#local name>
capture this
</#local>只能用于macro的定义body中?/p>


十二Qsetting指oQ?/p>

<#setting name=value>
name的取D_
localQnumber_formatQ?br />boolean_format:~省gؓ"true,false"
date_format, time_format, datetime_format
time_zoneQurl_escaping_charset
classic_compatible

十三Q用戯定义指o
<@macro_or_transfparam1=val1param2=val2...paramN=valN/><@macro_or_transfparam1=val1param2=val2...paramN=valN ; lv1, lv2, ..., lvN/><@macro_or_transf...> ...</@macro_or_transf><@macro_or_transf...> ...</@><@macro_or_transfval1, val2, ..., valN/>
十四Qmacro,nested,return
<#macro nameparam1param2... paramN>
...
<#nested loopvar1, loopvar2, ..., loopvarN>
...
<#return>
...
</#macro>

十五Qfunction, return
<#function nameparam1param2... paramN>
... <#return returnValue>
...
</#function>

<#function avg x y>
<#return (x + y) / 2>
</#function>
${avg(10, 20)}

十六Qflush
<#flush>

十七Qstop
<#stop>
or
<#stop reason>取消处理模版?/p>

十八Qftl指o
<#ftl param1=value1param2=value2...paramN=valueN>
ftl指o必须攑֜ftl文g的最上面?/p>

参数范围Q?br />encodingQ?br />strip_whitespace
strip_text
strict_syntax

十九Qt, lt, rt
二十Qattempt, recover
<#attempt>
attempt block<#recover>
recover block
</#attempt>

<#attempt>
Optional content: ${thisMayFails}
<#recover>
Ops! The optional content is not available.
</#attempt>



老天 2012-11-15 11:30 发表评论
]]>
解决png在ie6中透明的效?/title><link>http://www.tkk7.com/stone840/archive/2012/11/15/391359.html</link><dc:creator>老天</dc:creator><author>老天</author><pubDate>Thu, 15 Nov 2012 02:26:00 GMT</pubDate><guid>http://www.tkk7.com/stone840/archive/2012/11/15/391359.html</guid><wfw:comment>http://www.tkk7.com/stone840/comments/391359.html</wfw:comment><comments>http://www.tkk7.com/stone840/archive/2012/11/15/391359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/stone840/comments/commentRss/391359.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/stone840/services/trackbacks/391359.html</trackback:ping><description><![CDATA[<span>  <p><font color="#666666"><!-- <a ><font color="#333333" size="2">http://www.iefans.net/ie8-filteralpha-png-touming/</font></a>  </font></p> <p>IE8里可以这样写 -ms-filter:”progid:DXImageTransform.Microsoft.Alpha(opacity=50)”;</p> <p>IE7里可以这样写 filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);</p> <p><a ><font color="#333333" size="2">IE6</font></a>,IE7,IE8里都可以q样写 filter:alpha(opacity=50)</p> <p>--></p> <p><font color="#666666"></font> </p> <p><font color="#666666"></font> </p> <p><font color="#666666"></font> </p> <p><font color="#666666"></font> </p> <p><font color="#666666">from:http://unc0pyrightable.blog.163.com/blog/static/1313300602010021526561/</font></p> <p><font color="#666666">今天推荐一个最完美让ie6支持png透明的js,Z么说它最完美呢?</font></p> <p><font color="#666666">只因为它<strong>支持background-position和background-repeat</strong></font></p> <p><font color="#666666" size="+0">q是市面上的其它Ҏ比不上的</font></p> <p><font color="#666666" size="+0">首先,要在|页中引用js</font></p> <p><font color="#666666"><!--[if IE 6]><br /><script src="<font size="+0">http://www.dillerdesign.com/experiment/DD_belatedPNG/DD_belatedPNG_0.0.8a-min.js</font>"></script><br /><script><br />DD_belatedPNG.fix('<strong>.png_bg</strong>');<br /></script><br /><![endif]--></font></p> <p><font color="#666666">上面那个js路径是绝对\?大家最好还是把它下下来,以防|站挂了.</font></p> <p><font color="#666666">引用之后是更改W二?lt;script>里的.pngZ要实现效果的选择?</font></p> <p><font color="#666666">比??header引用了一个background,那你上面p改ؓ:</font></p> <p><font color="#666666">DD_belatedPNG.fix('<strong>#header</strong>');</font></p> <p><font color="#666666">q且它还支持l选择??</font></p> <p><font color="#666666">DD_belatedPNG.fix('<strong>#header,h1,h2,h3,#content</strong>');</font></p> <p><font color="#666666">很简单吧,只要把有透明png的标{或选择器写在里面就?/font></p> <p><font color="#666666">至于q里面能不能支持css3׃得而知?</font></p> <p><font color="#666666">官网:</font><a target="_blank"><em><font color="#666666" size="2">http://www.dillerdesign.com/experiment/DD_belatedPNG/</font></em></a></p> <p><font size="2"></font></p> <p><font size="2"></font></p> <p>q个JS内容Q?font color="#666666" size="3">DD_belatedPNG_0.0.8a-min.js</font>Q,备存Q?/p> <p>/**<br />* DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML <IMG/>.<br />* Author: Drew Diller<br />* Email: <a href="mailto:drew.diller@gmail.com"><font color="#333333" size="2">drew.diller@gmail.com</font></a><br />* URL: <a ><font color="#333333" size="2">http://www.dillerdesign.com/experiment/DD_belatedPNG/</font></a><br />* Version: 0.0.8a<br />* Licensed under the MIT License: <a ><font color="#333333" size="2">http://dillerdesign.com/experiment/DD_belatedPNG/#license</font></a><br />*<br />* Example usage:<br />* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector<br />* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement<br />**/<br />var DD_belatedPNG={<br />ns:"DD_belatedPNG",imgSize:{<br />},delay:10,nodesFixed:0,createVmlNameSpace:function () {<br />   if(document.namespaces&&!document.namespaces[this.ns]) {<br />    document.namespaces.add(this.ns,"urn:schemas-microsoft-com:vml")<br />   }<br />},createVmlStyleSheet:function () {<br />   var b,a;<br />   b=document.createElement("style");<br />   b.setAttribute("media","screen");<br />   document.documentElement.firstChild.insertBefore(b,document.documentElement.firstChild.firstChild);<br />   if(b.styleSheet) {<br />    b=b.styleSheet;<br />    b.addRule(this.ns+"<a><u><font color="#333333" size="2">\\:*","{behavior:url(#default#VML</font></u></a>)}");<br />    b.addRule(this.ns+"<a><u><font color="#333333" size="2">\\:shape","position:absolute</font></u></a>;");<br />    b.addRule("img."+this.ns+"_sizeFinder","behavior:none; border:none; position:absolute; z-index:-1; top:-10000px; visibility:hidden;");<br />    this.screenStyleSheet=b;<br />    a=document.createElement("style");<br />    a.setAttribute("media","print");<br />    document.documentElement.firstChild.insertBefore(a,document.documentElement.firstChild.firstChild);<br />    a=a.styleSheet;<br />    a.addRule(this.ns+"<a><u><font color="#333333" size="2">\\:*","{display</font></u></a>: none !important;}");<br />    a.addRule("img."+this.ns+"_sizeFinder","{display: none !important;}")<br />   }<br />},readPropertyChange:function () {<br />   var b,c,a;<br />   b=event.srcElement;<br />   if(!b.vmlInitiated) {<br />    return<br />   }if(event.propertyName.search("background")!=-1||event.propertyName.search("border")!=-1) {<br />    DD_belatedPNG.applyVML(b)<br />   }if(event.propertyName=="style.display") {<br />    c=(b.currentStyle.display=="none")?"none":"block";<br />    for(a in b.vml) {<br />     if(b.vml.hasOwnProperty (a)) {<br />      b.vml[a].shape.style.display=c<br />     }<br />    }<br />   }if(event.propertyName.search("filter")!=-1) {<br />    DD_belatedPNG.vmlOpacity(b)<br />   }<br />},vmlOpacity:function (b) {<br />   if(b.currentStyle.filter.search("lpha")!=-1) {<br />    var a=b.currentStyle.filter;<br />    a=parseInt(a.substring(a.lastIndexOf("=")+1,a.lastIndexOf(")")),10)/100;<br />    b.vml.color.shape.style.filter=b.currentStyle.filter;<br />    b.vml.image.fill.opacity=a<br />   }<br />},handlePseudoHover:function (a) {<br />   setTimeout(function () {<br />    DD_belatedPNG.applyVML(a)<br />   },1)<br />},fix:function (a) {<br />   if(this.screenStyleSheet) {<br />    var c,b;<br />    c=a.split(",");<br />    for(b=0;b<c.length;b++) {<br />     this.screenStyleSheet.addRule(c[b],"behavior:expression(DD_belatedPNG.fixPng(this))")<br />    }<br />   }<br />},applyVML:function (a) {<br />   a.runtimeStyle.cssText="";<br />   this.vmlFill(a);<br />   this.vmlOffsets(a);<br />   this.vmlOpacity(a);<br />   if(a.isImg) {<br />    this.copyImageBorders(a)<br />   }<br />},attachHandlers:function (i) {<br />   var d,c,g,e,b,f;<br />   d=this;<br />   c={<br />    resize:"vmlOffsets",move:"vmlOffsets"<br />   };<br />   if(i.nodeName=="A") {<br />    e={<br />     mouseleave:"handlePseudoHover",mouseenter:"handlePseudoHover",focus:"handlePseudoHover",blur:"handlePseudoHover"<br />    };<br />    for(b in e) {<br />     if(e.hasOwnProperty (b)) {<br />      c[b]=e[b]<br />     }<br />    }<br />   }for(f in c) {<br />    if(c.hasOwnProperty (f)) {<br />     g=function () {<br />      d[c[f]](i)<br />     };<br />     i.attachEvent("on"+f,g)<br />    }<br />   }i.attachEvent("onpropertychange",this.readPropertyChange)<br />},giveLayout:function (a) {<br />   a.style.zoom=1;<br />   if(a.currentStyle.position=="static") {<br />    a.style.position="relative"<br />   }<br />},copyImageBorders:function (b) {<br />   var c,a;<br />   c={<br />    borderStyle:true,borderWidth:true,borderColor:true<br />   };<br />   for(a in c) {<br />    if(c.hasOwnProperty (a)) {<br />     b.vml.color.shape.style[a]=b.currentStyle[a]<br />    }<br />   }<br />},vmlFill:function (e) {<br />   if(!e.currentStyle) {<br />    return<br />   }else {<br />    var d,f,g,b,a,c;<br />    d=e.currentStyle<br />   }for(b in e.vml) {<br />    if(e.vml.hasOwnProperty (b)) {<br />     e.vml[b].shape.style.zIndex=d.zIndex<br />    }<br />   }e.runtimeStyle.backgroundColor="";<br />   e.runtimeStyle.backgroundImage="";<br />   f=true;<br />   if(d.backgroundImage!="none"||e.isImg) {<br />    if(!e.isImg) {<br />     e.vmlBg=d.backgroundImage;<br />     e.vmlBg=e.vmlBg.substr(5,e.vmlBg.lastIndexOf('")')-5)<br />    }else {<br />     e.vmlBg=e.src<br />    }g=this;<br />    if(!g.imgSize[e.vmlBg]) {<br />     a=document.createElement("img");<br />     g.imgSize[e.vmlBg]=a;<br />     a.className=g.ns+"_sizeFinder";<br />     a.runtimeStyle.cssText="behavior:none; position:absolute; left:-10000px; top:-10000px; border:none; margin:0; padding:0;";<br />     c=function () {<br />      this.width=this.offsetWidth;<br />      this.height=this.offsetHeight;<br />      g.vmlOffsets(e)<br />     };<br />     a.attachEvent("onload",c);<br />     a.src=e.vmlBg;<br />     a.removeAttribute("width");<br />     a.removeAttribute("height");<br />     document.body.insertBefore(a,document.body.firstChild)<br />    }e.vml.image.fill.src=e.vmlBg;<br />    f=false<br />   }e.vml.image.fill.on=!f;<br />   e.vml.image.fill.color="none";<br />   e.vml.color.shape.style.backgroundColor=d.backgroundColor;<br />   e.runtimeStyle.backgroundImage="none";<br />   e.runtimeStyle.backgroundColor="transparent"<br />},vmlOffsets:function (d) {<br />   var h,n,a,e,g,m,f,l,j,i,k;<br />   h=d.currentStyle;<br />   n={<br />    W:d.clientWidth+1,H:d.clientHeight+1,w:this.imgSize[d.vmlBg].width,h:this.imgSize[d.vmlBg].height,L:d.offsetLeft,T:d.offsetTop,bLW:d.clientLeft,bTW:d.clientTop<br />   };<br />   a=(n.L+n.bLW==1)?1:0;<br />   e=function (b,p,q,c,s,u) {<br />    b.coordsize=c+","+s;<br />    b.coordorigin=u+","+u;<br />    b.path="m0,0l"+c+",0l"+c+","+s+"l0,"+s+" xe";<br />    b.style.width=c+"px";<br />    b.style.height=s+"px";<br />    b.style.left=p+"px";<br />    b.style.top=q+"px"<br />   };<br />   e(d.vml.color.shape,(n.L+(d.isImg?0:n.bLW)),(n.T+(d.isImg?0:n.bTW)),(n.W-1),(n.H-1),0);<br />   e(d.vml.image.shape,(n.L+n.bLW),(n.T+n.bTW),(n.W),(n.H),1);<br />   g={<br />    X:0,Y:0<br />   };<br />   if(d.isImg) {<br />    g.X=parseInt(h.paddingLeft,10)+1;<br />    g.Y=parseInt(h.paddingTop,10)+1<br />   }else {<br />    for(j in g) {<br />     if(g.hasOwnProperty (j)) {<br />      this.figurePercentage(g,n,j,h["backgroundPosition"+j])<br />     }<br />    }<br />   }d.vml.image.fill.position=(g.X/n.W)+","+(g.Y/n.H);<br />   m=h.backgroundRepeat;<br />   f={<br />    T:1,R:n.W+a,B:n.H,L:1+a<br />   };<br />   l={<br />    X:{<br />     b1:"L",b2:"R",d:"W"<br />    },Y:{<br />     b1:"T",b2:"B",d:"H"<br />    }<br />   };<br />   if(m!="repeat"||d.isImg) {<br />    i={<br />     T:(g.Y),R:(g.X+n.w),B:(g.Y+n.h),L:(g.X)<br />    };<br />    if(m.search("repeat-")!=-1) {<br />     k=m.split("repeat-")[1].toUpperCase();<br />     i[l[k].b1]=1;<br />     i[l[k].b2]=n[l[k].d]<br />    }if(i.B>n.H) {<br />     i.B=n.H<br />    }d.vml.image.shape.style.clip="rect("+i.T+"px "+(i.R+a)+"px "+i.B+"px "+(i.L+a)+"px)"<br />   }else {<br />    d.vml.image.shape.style.clip="rect("+f.T+"px "+f.R+"px "+f.B+"px "+f.L+"px)"<br />   }<br />},figurePercentage:function (d,c,f,a) {<br />   var b,e;<br />   e=true;<br />   b=(f=="X");<br />   switch(a) {<br />    case "left":case "top":d[f]=0;<br />    break;<br />    case "center":d[f]=0.5;<br />    break;<br />    case "right":case "bottom":d[f]=1;<br />    break;<br />    default:if(a.search("%")!=-1) {<br />     d[f]=parseInt(a,10)/100<br />    }else {<br />     e=false<br />    }<br />   }d[f]=Math.ceil(e?((c[b?"W":"H"]*d[f])-(c[b?"w":"h"]*d[f])):parseInt(a,10));<br />   if(d[f]%2===0) {<br />    d[f]++<br />   }return d[f]<br />},fixPng:function (c) {<br />   c.style.behavior="none";<br />   var g,b,f,a,d;<br />   if(c.nodeName=="BODY"||c.nodeName=="TD"||c.nodeName=="TR") {<br />    return<br />   }c.isImg=false;<br />   if(c.nodeName=="IMG") {<br />    if(c.src.toLowerCase().search(/\.png$/)!=-1) {<br />     c.isImg=true;<br />     c.style.visibility="hidden"<br />    }else {<br />     return<br />    }<br />   }else {<br />    if(c.currentStyle.backgroundImage.toLowerCase().search(".png")==-1) {<br />     return<br />    }<br />   }g=DD_belatedPNG;<br />   c.vml={<br />    color:{<br />    },image:{<br />    }<br />   };<br />   b={<br />    shape:{<br />    },fill:{<br />    }<br />   };<br />   for(a in c.vml) {<br />    if(c.vml.hasOwnProperty (a)) {<br />     for(d in b) {<br />      if(b.hasOwnProperty (d)) {<br />       f=g.ns+":"+d;<br />       c.vml[a][d]=document.createElement(f)<br />      }<br />     }c.vml[a].shape.stroked=false;<br />     c.vml[a].shape.appendChild(c.vml[a].fill);<br />     c.parentNode.insertBefore(c.vml[a].shape,c)<br />    }<br />   }c.vml.image.shape.fillcolor="none";<br />   c.vml.image.fill.type="tile";<br />   c.vml.color.fill.on=false;<br />   g.attachHandlers(c);<br />   g.giveLayout(c);<br />   g.giveLayout(c.offsetParent);<br />   c.vmlInitiated=true;<br />   g.applyVML(c)<br />}<br />};<br />try{<br />document.execCommand("BackgroundImageCache",false,true)<br />}catch(r) {<br />}DD_belatedPNG.createVmlNameSpace();<br />DD_belatedPNG.createVmlStyleSheet();</p> <p> </p> <p> </p> <p> </p> <p>或者:</p> <p><font style="font-size: 12px" color="#ff0000">让IE6支持PNG格式的图?/font></p> <p><font color="#ff0000"><font style="font-size: 12px"><strong>用法Q?br /><br /></strong></font>先复制下面的代码在记事本中,然后另存为pngbehavior.htcQ名字可以Q意)Q?br /><br /><public:componentlightWeight="true"><br /><public:attach event="onpropertychange"onevent="propertyChanged()" /><br /><public:attach event="onbeforeprint"onevent="beforePrint()" for="window"/><br /><public:attach event="onafterprint"onevent="afterPrint()" for="window"/><br /><script><br /><br /><br /><br />var supported = /MSIE ((5\.5)|[6789])/.test(navigator.userAgent)&&<br />navigator.platform== "Win32";<br /><br />var realSrc;<br />var blankSrc = "blank.gif";<br />var isPrinting = false;<br /><br />if (supported) fixImage();<br /><br />function propertyChanged() {<br />if (!supported || isPrinting) return;<br /><br />var pName = event.propertyName;<br />if (pName != "src") return;<br />// if not set to blank<br />if (!new RegExp(blankSrc).test(src))<br />fixImage();<br />};<br /><br />function fixImage() {<br />// get src<br />var src = element.src;<br /><br />// check for real change<br />if (src == realSrc&& /\.png$/i.test(src)) {<br />element.src =blankSrc;<br />return;<br />}<br /><br />if ( ! new RegExp(blankSrc).test(src)) {<br />// backup old src<br />realSrc = src;<br />}<br /><br />// test for png<br />if (/\.png$/i.test(realSrc)) {<br />// set blank image<br />element.src =blankSrc;<br />// set filter<br />element.runtimeStyle.filter= "progid:DXImageTransform.Microsoft." +<br />"AlphaImageLoader(src='"+ src + "',sizingMethod='scale')";<br />}<br />else {<br />// remove filter<br />element.runtimeStyle.filter= "";<br />}<br />}<br /><br />function beforePrint() {<br />isPrinting = true;<br />element.src = realSrc;<br />element.runtimeStyle.filter = "";<br />realSrc = null;<br />}<br /><br />function afterPrint() {<br />isPrinting = false;<br />fixImage();<br />}<br /><br /></script><br /></public:component><br /><br /><br />最后在你的css文g里面加上q么一D代码:</font></p><pre><span style="font-size: large"><span style="font-size: medium"><font style="font-size: 12px" color="#ff0000" size="3">img {<br />behavior: url("pngbehavior.htc");<br />}<br /></font></span></span></pre></span><img src ="http://www.tkk7.com/stone840/aggbug/391359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/stone840/" target="_blank">老天</a> 2012-11-15 10:26 <a href="http://www.tkk7.com/stone840/archive/2012/11/15/391359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://35xyz.com" target="_blank">AVһ</a>| <a href="http://maiertejx.com" target="_blank">131ŮëƬ</a>| <a href="http://wjjccw.com" target="_blank">ɫվapp߹ۿ </a>| <a href="http://adcacs.com" target="_blank">Ʒþþþþۺ</a>| <a href="http://wwwnewhtbook.com" target="_blank">þþѹ۳ӰԺ</a>| <a href="http://woaisouluo.com" target="_blank">99ŮŮѾƷƵ߹ۿ</a>| <a href="http://wx-jn.com" target="_blank">þþƷav鶹С˵ </a>| <a href="http://hongyue8.com" target="_blank">ձĻ</a>| <a href="http://kkjk123.com" target="_blank">˳߹ۿվ </a>| <a href="http://628669.com" target="_blank">Ʒwպ</a>| <a href="http://da666f.com" target="_blank">һa</a>| <a href="http://927ff.com" target="_blank">߹ۿѳ</a>| <a href="http://zhaosaohuo.com" target="_blank">AVɫ߹ۿ</a>| <a href="http://avdian126.com" target="_blank">ĻƷѾþӰԺ</a>| <a href="http://youyou8tv.com" target="_blank">޹ƷۺϾþþ</a>| <a href="http://pite2.com" target="_blank">www.999ƷƵۿ</a>| <a href="http://jimeng-99.com" target="_blank">mv</a>| <a href="http://meixiudashi.com" target="_blank">޾Ʒ</a>| <a href="http://720880.com" target="_blank">ɫվ</a>| <a href="http://shzzhsy.com" target="_blank">aëƬaѿԿ</a>| <a href="http://bjhuicui.com" target="_blank">޾Ʒ߹ۿ</a>| <a href="http://zg8k.com" target="_blank">޹˾þۺһ77</a>| <a href="http://misiranim.com" target="_blank">߹ۿ</a>| <a href="http://22nee.com" target="_blank">ʵƵѹۿ</a>| <a href="http://abbobo.com" target="_blank">sssձ߹ۿ</a>| <a href="http://1ygogo.com" target="_blank">þþƷۺ</a>| <a href="http://wwwkk5679.com" target="_blank">ëƬŮ-ٶ</a>| <a href="http://www09191z.com" target="_blank">պɫƵһ</a>| <a href="http://hhgcnet.com" target="_blank">һɫþۺ޾Ʒ</a>| <a href="http://kan63.com" target="_blank">þ99ۺϾƷ</a>| <a href="http://qzapp88.com" target="_blank">AvרDVD</a>| <a href="http://qsqse1.com" target="_blank">ŷƵһ </a>| <a href="http://yeshenghuowang.com" target="_blank">޾Ʒ³ĵӰ</a>| <a href="http://6006769.com" target="_blank">Ѿþþþþ</a>| <a href="http://7a37.com" target="_blank">AV߹ۿ</a>| <a href="http://shguojing.com" target="_blank">վɫƵ߹ۿaվ </a>| <a href="http://lzhuiding.com" target="_blank">츾AV߲</a>| <a href="http://9xav.com" target="_blank">131ŮëƬ</a>| <a href="http://bentuxinli.com" target="_blank">ؼavëƬѹۿ</a>| <a href="http://fense1.com" target="_blank">99riƷ</a>| <a href="http://xyhfloor.com" target="_blank">޵һվ˶</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>