莫相离 发表于 2015-1-18 11:30:37

JAVA网页编程之用Struts完成模板

用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。模板假如不必框架来开辟一个流派站点将会是一件很坚苦的事。利用模版能够削减些贫苦。他可让你在眨眼之间便利的更新与部署站点上的内容。用Struts模版标签能够匡助你开辟以模版为基本的流派站点。
这篇文章注释了与流派有关的一些基础的模版头脑,先容了Struts关于模版的撑持,环绕着Struts模版标签举行了会商。本文还论述了其他的一些模版机制。

取得Struts
收集使用程序框架利用MVC形式,能简化收集站点的开辟。Struts恰是如许的一个框架。它供应了类集、标签库和一些能作为Web开辟基本的接口。Struts是Jakarta-Apache论坛下的一个开源项目。

和一切Jakarta的项目一样,Struts供应原代码和二进制程序的下载。这篇文章里,我们利用Struts的1.1b2版本。固然这不是一个正式的版本,但这个版本比起1.0.2版有很多严重的改善。

起首,解紧缩二进制程序到你所指定的目次。会有一个名为jakarta-struts-1.1-b2的目次创立。在它之下有两个子目次,分离为lib和webapps。Lib目次包括我们所必要的一切库、DTD文件、TLD文件(标签库界说),我们必要把它们增加到使用程序的classpath中。Webapps目次包括了很多.war(web程序包)文件。这些可安装运转的war文件能够放就任意servlet容器的webapps目次中。我们利用Tomcat作为servlet容器。

模板基本
我们经由过程模版能够创立良多布局类似的工具。模版匡助我们将会改动的工具回档打包,制止很多反复的事情。这对创立收集使用程序切实其实是一件很便利的事变。

在年夜多半的收集使用程序中,常常必要改换的是内容。JSP很简单做到这一点。由于JSP默许供应一个include机制――<jsp:include>标签。因而一个尺度页面能够经由过程改动include文件来改动它的内容。可是我们怎样能云云便利的改动一个页面的结构呢?当我们必要改动的不单单是页面的内容,还包含这个页面的结构时情形会怎样呢?我们等会就会回覆这些成绩。

用Java供应的结构办理机制能够帮我们更抽象的了解这些成绩。Java提出了结构办理器、组件、容器的观点来创立图形界面的使用程序。

当容器中的组件改动时,结构办理器会决意怎样将新的组件部署到容器中。别的,容器自己也能够做为其他容器的组件从而完成了嵌套。在一些复杂的情形下,JSP就能够做为一个收集使用程序的模版,其功效就等价于结构办理器。模版埋没了web页面结构的完成办法。换句话说,它埋没了结构的法例。假设结构法例必要改动,那末这些改动将回受限于模版。Web页面经由过程完成这个模版来做其内容上的改动。

假如模版等价于结构办理器,那响应的容器和组件又是甚么呢?响应的组件就是实践的内容文件:JSP文件、HTML文件、图像文件等等。容器将这些可见的组件会萃在一个单位里。一个JSP文件就是一个容器。容器必要关于模版的信息来部署这些组件。用JavaGUI举例来讲,一个面板(容器,汇合单位)能够包括按钮和文本区(组件和内容),利用一个网格结构办理器(GridLayout)来部署这些组件。

如今我们能够往返答先条件出的谁人成绩了。我们晓得模版集成了结构法例,当要改动结构是,我们要做的仅仅改动模版。这些改动会一同相干页面结构的改动,而不必要往改动这些页面自己。在流派使用程序中,这就意味着当大批页面必要接纳一样结构时在工夫上的节俭。

Struts用三个模版标签来完成模版。

拔出标签InsertTag――<template:insert>。
在容器/汇合单位文件(collectingunitfile)中利用。它界说了以后容器要利用的模版。相似于JavaGUI中的container.setLayout(layout)办法。在它以后用<template:put>标签订义组件。

放进标签PutTag――<template:put>。
在容器/汇合单位文件(collectingunitfile)中利用。他界说了构成容器/汇合单位的组件/内容。它相似于JavaGUI中的container.add(component)办法。每一个PutTag标签必需有一个相干组件的称号。

取得标签GetTag――<template:get>。
在模版文件中利用。它告知模版由PutTag标签订义的分歧组件的称号。它相似于JavaGUI中的layout.addLayoutComponent(componentName,component)办法。
一个复杂的例子

你能够下载这个例子。我们将要创立两套内容文件、容器(汇合单位)文件和模版文件。当我们有了这些文件后,就能够就能够交换他们的模版,看到他们在结构上的改动。
复制Struts-blank.war到Tomcat的webapps目次而且将他更名为template-example.war。重起Tomcat。template-example会由Tomcat主动部署。删除pages目次和index.jsp文件。他们与我们的会商临时有关。

让我们界说又界说我们本人的内容文件做为一个入手下手。在template-example下创建一个名为content的目次,而且在个中创立六个文件:top1.htm,top2.htm,bottom1.htm,bottom2.htm,middle1.jsp,andmiddle2.jsp。
放进甚么文件是取决于你的,可是关于初学者,静态的.htm文件更简单了解。举个例子来讲,top.htm包含以下的内容:

Thisisthe<b>TOP</b>Contentforthe<b>First</b>
example.Thisisastatichtmlfile.



相似的,middle1.jsp包含以下内容:

Thisisthe<b>MIDDLE</b>Contentforthe<b>First</b>
example.ThisisadynamicJSPfileandthe
currentdateandtimeis<%=newDate()%>



界说了内容以后,让我们来界说两个模版。
在template-example下创建名为templates的目次,并在其下创立两个文件template1.jsp和template2.jsp。
这些模版界说了两种结构体例,以下图所示。
screen.width-430)this.width=screen.width-430"align=centerborder=0>
screen.width-430)this.width=screen.width-430"align=centerborder=0>

我们以下来界说这两个模版:


<%@tagliburi=/WEB-INF/struts-
template.tldprefix=template%>
<html>
<head>
<title><template:getname=title/>
</title>
</head>
<body>
<tableborder=1>
<tr>
<td><template:getname=top/></td>
</tr>
<tr>
<tdbgcolor="#FF55FF">
<template:getname=middle/></td>
</tr>
<tr>
<td><template:getname=bottom/></td>
</tr>
</table>
</body>
</html>
界说Template1






<%@tagliburi=/WEB-INF/struts-
template.tldprefix=template%>
<html>
<head>
<title><template:getname=title/>
</title>
</head>
<body>
<tableborder=1>
<tr>
<td><template:getname=top/></td>
<tdbgcolor="#FF55FF">
<template:getname=middle/></td>
<td><template:getname=bottom/></td>
</tr>
</table>
</body>
</html>
界说Template2



注重到这两个模版界说了两种结构体例,换句话说,它们界说了两种分歧的结构法例。
我们已有了我们本人的内容和模版。如今我们必要的是容器文件。在tomcat-example目次下创立两个容器文件分离名为container1.jsp和container2.jsp。容器文件必要包括组件(内容)。一样,容器文件使用templateinsert和puttags标签来逐一界说利用和到场的组件(内容)。

让我们带着这些观点看一下个中的一个容器文件(container1.jsp)。

<%@tagliburi=/WEB-INF/struts-template.tldprefix=template%>
<template:inserttemplate=/templates/template1.jsp>
<template:putname=titlecontent=Templatesdirect=true/>
<template:putname=topcontent=/content/top1.htm/>
<template:putname=middlecontent=/content/middle1.jsp/>
<template:putname=bottomcontent=/content/bottom1.htm/>
</template:insert>




我们能够翻开扫瞄器,输出http://localhost:8080/template-example/container1.jsp看看这个文件的实践输入。你会看到以下的页面:
screen.width-430)this.width=screen.width-430"align=centerborder=0>
在这个页面的前面,container1.jsp利用模版template1.jsp来界说输入页面的结构而且从分歧的组件中包括内容。注重这里属性direct的用法<template:putname=titlecontent=Templatesdirect=true/>。当direct设置为true时,content标签订义的内容将会被间接挪用。它不寻觅一个内部的文件。(Whendirectissettotrue,thecontentspecifiedbythecontentattributeisuseddirectly.Itisnotlookedupinanexternalfile.有点疑问,翻的欠好)

Container2相似,所分歧的只是他利用template2,页面输入以下:
screen.width-430)this.width=screen.width-430"align=centerborder=0dypop="按此在新窗口扫瞄图片">

我们到今朝地位所做的事情的长处是不言而喻的。举例来讲,我们能够用template2交换template1(经由过程复杂的复制和粘贴用template2.jsp交换template2.js1)。以后container1.jsp会即刻酿成以下的容貌。我们改动了容器的结构却没有碰container1!这就是模版的感化。
screen.width-430)this.width=screen.width-430"align=centerborder=0dypop="按此在新窗口扫瞄图片">
StrutsTemplatevs.Tiles

从Struts1.1入手下手,引进了另外一种模版机制――Tiles。如今它已成了模版机制的一个次要分支。Tiles机制订义与Tiles收集站点中,而且与Struts界说的模版标签兼容。现实上,Tiles是模版标签的一个扩大集。那为何我们要要Tiles来替换模版呢?

Tiles同意我们传送参数,从而对容器有更多的把持权。当我想使模版和容用具有静态特征时变的十分有效。别的,Tiles与Struts举措组件(Strutsactioncomponents)分离的更加严密。

可是,Tiles会使代码变的更加庞大。并且更加主要的是我们还要花更多的工夫来把握它。

结语
利用模版能够便利你办理收集使用程序。这篇文章是了解Struts模版的入手下手。这里只先容了关于模版的很少的一部分常识,另有良多好比基于脚色(role-based)和可选内容(optionalcontent)的常识要靠人人本人往进修。但愿我的这篇文章能鼓励人人往探究更多的关于模版的特性。


java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),

飘灵儿 发表于 2015-1-21 08:55:46

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

若相依 发表于 2015-1-22 22:05:13

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

再现理想 发表于 2015-1-24 15:33:21

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

变相怪杰 发表于 2015-2-1 20:31:35

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

透明 发表于 2015-2-7 14:56:38

你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?

乐观 发表于 2015-2-21 21:08:14

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

再见西城 发表于 2015-3-2 10:53:53

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

兰色精灵 发表于 2015-3-7 10:26:24

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

小妖女 发表于 2015-3-14 21:36:09

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

飘飘悠悠 发表于 2015-3-21 14:11:11

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页: [1]
查看完整版本: JAVA网页编程之用Struts完成模板