??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩一区二区三区四区
,亚洲第一免费播放区,伊人一区二区三区久久精品 http://www.aygfsteel.com/naruke/category/23270.htmlzh-cn Wed, 25 Jul 2007 17:29:48 GMT Wed, 25 Jul 2007 17:29:48 GMT 60 SiteMesh qo(h)不装饰的面 http://www.aygfsteel.com/naruke/archive/2007/07/25/132335.html扭曲的铅W?/dc:creator>扭曲的铅W?/author>Wed, 25 Jul 2007 08:25:00 GMT http://www.aygfsteel.com/naruke/archive/2007/07/25/132335.html http://www.aygfsteel.com/naruke/comments/132335.html http://www.aygfsteel.com/naruke/archive/2007/07/25/132335.html#Feedback 0 http://www.aygfsteel.com/naruke/comments/commentRss/132335.html http://www.aygfsteel.com/naruke/services/trackbacks/132335.html 阅读全文 ]]> SiteMesh~码 http://www.aygfsteel.com/naruke/archive/2007/06/11/123336.html扭曲的铅W?/dc:creator>扭曲的铅W?/author>Mon, 11 Jun 2007 03:19:00 GMT http://www.aygfsteel.com/naruke/archive/2007/06/11/123336.html http://www.aygfsteel.com/naruke/comments/123336.html http://www.aygfsteel.com/naruke/archive/2007/06/11/123336.html#Feedback 0 http://www.aygfsteel.com/naruke/comments/commentRss/123336.html http://www.aygfsteel.com/naruke/services/trackbacks/123336.html 阅读全文 ]]> SiteMesh常用标签?/title> http://www.aygfsteel.com/naruke/archive/2007/06/11/123334.html扭曲的铅W?/dc:creator>扭曲的铅W?/author>Mon, 11 Jun 2007 02:58:00 GMT http://www.aygfsteel.com/naruke/archive/2007/06/11/123334.html http://www.aygfsteel.com/naruke/comments/123334.html http://www.aygfsteel.com/naruke/archive/2007/06/11/123334.html#Feedback 0 http://www.aygfsteel.com/naruke/comments/commentRss/123334.html http://www.aygfsteel.com/naruke/services/trackbacks/123334.html 阅读全文 ]]> SiteMesh介绍Q{Q?/title> http://www.aygfsteel.com/naruke/archive/2007/06/11/123313.html扭曲的铅W?/dc:creator>扭曲的铅W?/author>Mon, 11 Jun 2007 02:36:00 GMT http://www.aygfsteel.com/naruke/archive/2007/06/11/123313.html http://www.aygfsteel.com/naruke/comments/123313.html http://www.aygfsteel.com/naruke/archive/2007/06/11/123313.html#Feedback 0 http://www.aygfsteel.com/naruke/comments/commentRss/123313.html http://www.aygfsteel.com/naruke/services/trackbacks/123313.html 以前我通常使用旧式的方法来建立自己的web应用Q手工排版,仔细使用每一个字节其工作在Unicode 下,同时使用make文g来适应不同的CPU……
或许现在我们可以换一U方式?/p>
管我从没有感觉到需要用assembly (CISC or RISC)来徏立web应用Q但也会(x)偶尔觉得我的开发伙伴的工作相当J琐。特别是我发现很多的开发者在痛苦的寻求一U比较好的方式来控制web应用的基本模块:(x)例如那些
1 头 2 尾3 D?br>4 打印面5 手持讑֤的轻量面
以及(qing)其他更多的问题。到?jin)最后,令h惊异的是大部分h都采用了(jin)落后的includes和复制粘贴方式?/p>
Ҏ(gu)l验Q我可以采用?java.net 上开源的servlet qo(h)?SiteMeshn来简单明?jin)ƈ优雅的解册些问题。作ZU替代新的templating语言QXSLTQ或部v(zhn)的面到新的系l的解决Ҏ(gu)Q应用SiteMesh可以相当Ҏ(gu)处理你的面Q这一切只需要普通的HTMLQJSPQservlet(包括Struts)Q以?qing)其他常用的技术?/p>
一 Q工作原?/strong> SiteMesh利用?jin)一U?font color=#0000ff>很少人知道的servlet规范实现?jin)一U页面过滤器。设想一下,现在有一个简单的jsp面用来q回当前的日期和旉。通常q个面h来到应用服务器,面被处理,最后处理结果返回到web览器。SiteMesh作ؓ(f)一个页面过滤器Q在面被处理之后,q回web览器之前,寚w面做?jin)一些附加的操作。这个变化简单描qCؓ(f)图一和图二所C的附加步骤?br>图二QSiteMesh寚w面处理情?/em>
现在看一个简单的例子?/p>
< html > < head > < title > Simple Document </ title > </ head > < body > Hello World ! < br /> <%= 1 + 1 %> </ body > </ html >
你会(x)发现q个面有一个title和bodyQ类似普通的HTML面Q。你也会(x)发现一段JSP代码——它?yu)?x)如同你期望的那样被处理。同时你可以使用M你想使用的JSP语法和特性来替换q一段代码?
现在来看一个简单的SiteMesh "装饰QdecoratorQ?面。列?昄?jin)一个被SiteMesh调用的JSP面?/p>
<% @ taglib uri = " sitemesh-decorator " prefix = " decorator " %> < html > < head > < title > My Site - < decorator:title default = " Welcome! " /> </ title > < decorator:head /> </ head > < body > < h1 > < decorator:title default = " Welcome! " /> </ h1 > < p > < decorator:body /> </ p > < p > < small > ( < a href = " /?printable=true " > printable version </ a > ) </ small > </ p > </ body > </ html >
查看q个装饰器(decoratorQ,我们能看C些有的东西。首先,在第一行申明了(jin)一个SiteMesh标签库。这个标{ֺ包含?jin)与原始面一起工作时所需的所有东ѝ你能看到我们用了(jin)两个SiteMesh的装饰标{(declared tagsQ,
1 < decorator:title > 2 < decorator:body >
不要惊讶于标{?lt;decorator:title>在原始页面中昄<title>标签中的内容Q?<decorator:body> 中的内容也是如此。我们在q个面的HEAD和BODY元素都用了(jin)同一个title标签,同时Q我们还增加?jin)一个到可打印版本页面的链接?/p>
作ؓ(f)对照Q图三显CZ(jin)原始处理面Q图四显CZ(jin)被修饰过的处理页面。留意被装饰面在浏览器H口昄的标题文字和HTML内容。同时也可以看到增加?jin)一个可打印面的链接——这个我们回头再说?
图三Q原始未修饰面 囑֛Q被修饰面
很明显,Ҏ(gu)起用include
例如 < jsp:include page = " foo.jsp " flush = " true " />
来说Q以q样的方式用页头、页l结构要清晰得多。这U方式更易移植、更易理解,同时也鼓׃(jin)JSP面不再使用D或其他类似的表现层代码。我发现在JSP面中用装饰器和CSS的组合比标准HTML的标{更Ҏ(gu)去除格式信息?/p>
?Q?安装SiteMesh 注意下面的屏q截图是ZWindows XP ProfessionalQ?Tomcat 5.0.19Q和Java 2 SDK 1.4.2_03的环境之上的。在q里我假定你的Tomcat已经安装完毕q且可以正常工作?jin)。你或许?x)有一些淆,但我们已l成功地在Tomcat 4.1 ?WebLogic 试q,同时 SiteMesh 也支持大部分的web应用服务器?
本文描述的SiteMesh 2.0.1可以?下蝲到?在java.net 上SiteMesh's 的项目库中有四个文g可以下蝲。sitemesh-2.0.1.jar 是其核心(j) JAR 文gQ?sitemesh-2.0.1-sources.zip 的作用正如同其名字所qͼ sitemesh-example.war 则提供了(jin)一个复杂的例子用来昄一些SiteMesh的高U特性?/p>
Z(jin)使描q更加简单,我们从sitemesh-blank.war 文g开始。将该WAR文g攑օTomcat 的webapps 目录QW(xu)AR包将自动解压昄内容QSoSo注:(x)q里的前提是你的tomcat已经开始工作)(j)Q如图五所C?/p>
图五Q?SiteMesh_blank.WAR解开后的内容
我们q旉描述一下这些文件的作用?/p>
1 : web.xml
首先Q?em>WEB-INF/web.xml 文g昄如列?Q这些语句用来安装SiteMesh qo(h)器和标签库。如果你军_在一个已有的Web应用中用SiteMeshQ你必须把这些语句添加到你的WEB-INF/web.xml 文g中?/p>
<? xml version = " 1.0 " encoding = " ISO-8859-1 " ?> <! DOCTYPE web - app PUBLIC " -//Sun Microsystems, Inc.//DTD Web Application 2.3//EN " " http://java.sun.com/dtd/web-app_2_3.dtd " > < web - app > < filter > < filter - name > sitemesh </ filter - name > < filter - class > com.opensymphony.module.sitemesh.filter.PageFilter </ filter - class > </ filter > < filter - mapping > < filter - name > sitemesh </ filter - name > < url - pattern >* .jsp </ url - pattern > </ filter - mapping > < taglib > < taglib - uri > sitemesh - page </ taglib - uri > < taglib - location >/ WEB - INF / sitemesh - page.tld </ taglib - location > </ taglib > < taglib > < taglib - uri > sitemesh - decorator </ taglib - uri > < taglib - location >/ WEB - INF / sitemesh - decorator.tld </ taglib - location > </ taglib > </ web - app >
注意Q这里需要注意一下url-pattern的写?- 如果使用的是Tomcat 5Q而不?Tomcat 4 Q,需要将默认?修改?.jsp的Ş式。最新的servlet规范不再支持*样式?/p>
2 : decorators.xml
WEB-INF/decorators.xml 文g用来一个装饰器名字同一个专门的JSP装饰文gl定
< decorators defaultdir = " /decorators " > < decorator name = " main " page = " main.jsp " > < pattern >*</ pattern > </ decorator > < decorator name = " panel " page = " panel.jsp " /> < decorator name = " printable " page = " printable.jsp " /> </ decorators >
正如我们在代码列表里看到的一P我们定义?jin)三个装饰器Q他们分别绑定了(jin)三个cM的JSP面。我们可以看C个默认装饰器Qmain.jspQ,它将被默认运用于所有文件?/p>
2.1 : ~省的,SiteMesh使用下面的逻辑来选择使用哪一个装饰器Q?/p>
q个逻辑?em>sitemesh-2.0.1.jar 包的 \com\opensymphony\module\sitemesh\factor\sitemesh-default.xml 文g里被描述?br>sitemesh-default.xml :
< sitemesh > < property name = " decorators-file " value = " /WEB-INF/decorators.xml " /> < excludes file = " ${decorators-file} " /> < page - parsers > < parser content - type = " text/html " class = " com.opensymphony.module.sitemesh.parser.FastPageParser " /> </ page - parsers > < decorator - mappers > //面是否使用meta装饰器标{(meta decorator tagQ特别指定了(jin)一个装饰器Q?br> < mapper class = " com.opensymphony.module.sitemesh.mapper.PageDecoratorMapper " > < param name = " property.1 " value = " meta.decorator " /> < param name = " property.2 " value = " decorator " /> </ mapper > //面是否是一个框枉Q是的话则不应用装饰器)(j)Q? < mapper class = " com.opensymphony.module.sitemesh.mapper.FrameSetDecoratorMapper " /> //面是否使用?jin)printable=true 参数Q是的话则用打印装饰器Q?br> < mapper class = " com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper " > < param name = " decorator " value = " printable " /> < param name = " parameter.name " value = " printable " /> < param name = " parameter.value " value = " true " /> </ mapper > //面时候用装饰器文g名特别指定了(jin)一个装饰器 < mapper class = " com.opensymphony.module.sitemesh.mapper.FileDecoratorMapper " /> //面是否匚w decorators.xml 文g里描q的样式Q?br> < mapper class = " com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper " > < param name = " config " value = " ${decorators-file} " /> </ mapper > </ decorator - mappers > </ sitemesh >
你可以针对诸如:(x)客户端操作系l,web览器,用户代理{在WEB-INF\sitemesh.xml 文g里,通过一个变量覆盖这个行? 可以?em>sitemesh-example.war 扑ֈ例子?
通常W一条规则仅用来定该装饰器是否被用(Conceptually, the first rule that evaluates to true determines the decorator that is used. Q在上面的例子中Q当出现printable=true 参数的时候,装饰器printable.jsp Q规?#3Q替代了(jin) main.jsp Q规?#5Q。在SiteMesh中,q些规则被描qCؓ(f) mappers?/em>
3 : decorators/*.jsp
q三个decorators目录下的文g?em>decorators.xml文g中描q的不同装饰器JSP文g。上面是一个简单的装饰器例子,在后面我们将讨论更复杂的CZ?/p>
4 : sitemesh-2.0.1.jar
q是SiteMesh最主要的二q制文gQ通常被安装在 WEB-INF/lib 目录下。可以在www.opensymphony.com/sitemesh/api 扑ֈq个库的javadoc?/p>
*.tld
SiteMesh使用两个标签库,但大多数人都只需?em>sitemesh-decorator.tld。还有一个是 Qsitemesh-page.tld 你可以在 www.opensymphony.com/sitemesh/tags.html 扑ֈ相应的文档。我们已l讲qC(jin)最主要的标{:(x)headQtitle和body。在下一章我们来讨论剩下的标{:(x)getProperty?/p>
]]>
վ֩ģ壺
|
|
ξ |
|
|
|
|
뵺 |
ˮ |
|
|
|
|
ɳ |
|
|
|
ƽ |
|
¡ |
ʯ |
³ |
|
˶ |
ν |
|
° |
ƽ |
ͼľ |
ѳ |
³ |
ͩ |
ɳ |
|
|
㺺 |
ҵ |
|
ͬ |
|
|