仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 887|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA网页设计Sitemesh进修[1]

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-18 11:49:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
利用sitemesh创建复合视图-2.粉饰器decorator

利用sitemesh创建复合视图-1.hello

利用sitemesh创建复合视图-2.粉饰器<-now

利用sitemesh创建复合视图-3.别的会商
粉饰器decorator观点创建可复用的web使用程序,一个通用的办法是创建一个分层体系,好像上面一个一般的web使用:前端,front-end:JSP和Servlets,或jakarta的velocity把持层框架Controller:(Struts/Webwork)营业逻辑Business:次要营业逻辑
耐久化框架:hibernate/jdo

可糟的是前真个页面逻辑很难被复用,当你在每个页面顶用数之不尽的include来复用大众的header,stylesheet,scripts,footer时,一个成绩呈现了-反复的代码,每一个页面必需用copy来复用页面布局,而当你必要创意性的改动页面布局时,劫难就爱上了你。

sitemesh经由过程filter截取request和response,并给原始的页面到场必定的粉饰(大概为header,footer...),然后把了局前往给客户端,而且被粉饰的原始页面其实不晓得sitemesh的粉饰,这也就到达了脱耦的目标。

听说行将新出台的Portlet标准会匡助我们尺度的完成比这些更多更cool的设法,但不幸的我还不懂它究竟是一个什末东东,有乐趣的人能够研讨jetspeed,或JSR(JavaSpecificationRequest)168,但我想sitemesh云云复杂,我们无妨先用着。

 
让我们看看如何设置情况除要copy到WEB-INF/lib中的sitemesh.jar,copy到WEB-INF中的sitemesh-decorator.tld,sitemesh-page.tld文件外,另有2个文件要创建到WEB-INF/:sitemesh.xml(可选)decorators.xmlsitemesh.xml能够设置2种信息:
PageParsers:卖力读取stream的数据到一个Page对象中以被SiteMesh剖析和操纵。(不太经常使用,默许便可)

DecoratorMappers:分歧的粉饰器品种,我发明2种对照有效都列鄙人面。一种通用的mapper,能够指定粉饰器的设置文件名,另外一种可打印的粉饰器,能够同意你当用http://localhost/aaa/a.html?printable=true体例会见时给出原始页面以供打印(以免把header,footer等的花梢的图片也搭上)(但一样平常不必创建它,默许设置充足了:com/opensymphony/module/sitemesh/factory/sitemesh-default.xml):

典范:
<sitemesh><page-parsers><parserdefault="true"class="com.opensymphony.module.sitemesh.parser.DefaultPageParser"/><parsercontent-type="text/html"class="com.opensymphony.module.sitemesh.parser.FastPageParser"/><parsercontent-type="text/html;charset=ISO-8859-1"class="com.opensymphony.module.sitemesh.parser.FastPageParser"/></page-parsers><decorator-mappers><mapperclass="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"><paramname="config"value="/WEB-INF/decorators.xml"/></mapper><mapperclass="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper"><paramname="decorator"value="printable"/><paramname="parameter.name"value="printable"/><paramname="parameter.value"value="true"/></mapper></decorator-mappers></sitemesh>
decorators.xml:界说组成复合视图的一切页面构件的形貌(次要布局页面,header,footer...),以下例:
<decoratorsdefaultdir="/_decorators"><decoratorname="main"page="main.jsp"><pattern>*</pattern></decorator><decoratorname="printable"page="printable.jsp"role="customer"webapp="aaa"/></decorators>

defaultdir:包括粉饰器页面的目次page:页面文件名name:别号role:脚色,用于平安webapp:能够别的指定此文件寄存目次Patterns:婚配的路径,能够用*,那些被会见的页面必要被粉饰。
 
最主要的是写出粉饰器自己(也就是那些要复用页面,和布局页面)。实在,主要的事情就是制造粉饰器页面自己(也就是包括布局和划定规矩的页面),然后把他们形貌到decorators.xml中。
让我们来先看一看最复杂的用法:实在最经常使用也最复杂的用法就是我们的hello例子,面临云云浩瀚的手艺,我想只需到达功效点到为止便可,没需要往研讨太深(除非您有更深的需求)。

<%@pagecontentType="text/html;charset=GBK"%><%@tagliburi="sitemesh-decorator"prefix="decorator"%><html><head><title><decorator:titledefault="粉饰器页面..."/></title><decorator:head/></head><body>sitemesh的例子<hr><decorator:body/><hr>chen56@msn.com</body></html>

我们在粉饰器页面只用了2个标签:

<decorator:titledefault="粉饰器页面..."/>:把哀求的原始页面的title内容拔出到<title></title>两头。

<decorator:body/>:把哀求的原始页面的body内的全体内容拔出到响应地位。

然后我们在decorator.xml中到场以下形貌便可:

<decoratorname="main"page="main.jsp"><pattern>*</pattern></decorator>

如许,哀求的一切页面城市被从头处置,并依照main.jsp的格局从头展示在你眼前。

 
让我们看看更多的用法。(剽窃sitemesh文档)以以下着全体标签:DecoratorTagsPageTags被用于创建粉饰器页面.被用于从原始内容页面会见粉饰器.<decorator:head/><decorator:body/><decorator:title/><decorator:getProperty/><decorator:usePage/><page:applyDecorator/><page:param 
<decorator:head/>

拔出原始页面(被包装页面)的head标签中的内容(不包含head标签自己)。
<decorator:body/>
拔出原始页面(被包装页面)的body标签中的内容。

<decorator:title[default="..."]/>

拔出原始页面(被包装页面)的title标签中的内容,还能够增加一个缺省值。

例:

/_decorator/main.jsp中(粉饰器页面):<title><decorator:titledefault="却省title-hello"/>-附加题目</title>

/aaa.jsp中(原始页面):<title>aaa页面</title>

会见/aaa.jsp的了局:<title>aaa页面-附加题目</title>

<decorator:getPropertyproperty="..."[default="..."][writeEntireProperty="..."]/>

在标签处拔出原始页面(被包装页面)的原本的标签的属性中的内容,还能够增加一个缺省值。

sitemesh文档中的例子很好了解:Thedecorator:<bodybgcolor="white"<decorator:getPropertyproperty="body.onload"writeEntireProperty="true"/>>Theundecoratedpage:<bodyonload="document.someform.somefield.focus();">Thedecoratedpage:<bodybgcolor="white"onload="document.someform.somefield.focus();">

注重,writeEntireProperty="true"会在拔出内容前到场一个空格。

<decorator:usePageid="..."/>象jsp页面中的<jsp:useBean>标签一样,可使用被包装为一个Page对象的页面。(懒的用)

例:可用<decorator:usePageid="page"/>:<%=page.getTitle()%>到达<decorator:title/>的会见了局。

 

<page:applyDecoratorname="..."[page="..."title="..."]><page:paramname="...">...</page:param><page:paramname="...">...</page:param></page:applyDecorator>

使用包装器到指定的页面上,一样平常用于被包装页面中自动使用包装器。这个标签有点欠好了解,我们来看一个例子:

包装器页面/_decorators/panel.jsp:<p><decorator:title/></p>...<p><decorator:body/></p>而且在decorators.xml中有<decoratorname="panel"page="panel.jsp"/>一个大众页面,行将被panel包装:/_public/date.jsp:...<%=newjava.util.Date()%>...<decorator:getPropertyproperty="myEmail"/>被包装页面/page.jsp:<title>page的使用</title>.....<page:applyDecoratorname="panel"page="/_public/date.jsp"><page:paramname="myEmail">chen_p@neusoft.com</page:param></page:applyDecorator>

最初会是什末了局呢?除/page.jsp会被默许的包装页面包装上header,footer外,page.jsp页面中还内嵌了date.jsp页面,而且此date.jsp页面还会被panel.jsp包装为一个title加body的有2段的页面,第1段是date.jsp的title,第2段是date.jsp的body内容。

别的,page:applyDecorator中包括的page:param标签所声明的属性值还能够在包装页面顶用decorator:getProperty标签会见到。

java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.
金色的骷髅 该用户已被删除
18#
发表于 2015-4-17 10:05:45 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
第二个灵魂 该用户已被删除
17#
发表于 2015-4-6 23:58:59 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
乐观 该用户已被删除
16#
发表于 2015-3-25 14:40:18 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
小女巫 该用户已被删除
15#
发表于 2015-3-18 09:41:26 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
老尸 该用户已被删除
14#
发表于 2015-3-17 22:09:33 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
变相怪杰 该用户已被删除
13#
发表于 2015-3-17 04:07:48 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
莫相离 该用户已被删除
12#
发表于 2015-3-16 18:19:17 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
小魔女 该用户已被删除
11#
发表于 2015-3-12 10:25:24 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
简单生活 该用户已被删除
10#
发表于 2015-3-8 15:55:08 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
9#
发表于 2015-2-26 16:02:20 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
飘飘悠悠 该用户已被删除
8#
发表于 2015-2-19 03:49:25 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
谁可相欹 该用户已被删除
7#
 楼主| 发表于 2015-2-17 09:58:34 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
再见西城 该用户已被删除
6#
发表于 2015-2-10 13:54:05 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
柔情似水 该用户已被删除
5#
发表于 2015-2-8 02:33:08 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
不帅 该用户已被删除
地板
发表于 2015-2-7 18:28:19 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
分手快乐 该用户已被删除
板凳
发表于 2015-2-6 15:44:38 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
蒙在股里 该用户已被删除
沙发
发表于 2015-1-30 20:35:36 | 只看该作者
是一种使用者不需花费很多时间学习的语言
冷月葬花魂 该用户已被删除
楼主
发表于 2015-1-21 15:49:07 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-17 06:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表