|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。js|web|程序 JSP(JavaServerPages)手艺是对Servlet的进一步笼统,它由JCP(JavaCommunityProcess)开辟,是用于天生静态内容的开放式的、可收费猎取的标准,也是J2EE(Java2EnterpriseEdition)标准的主要构成部分。很多贸易使用服务器如BEAWebLogic、IBMWebSphere、LiveJrun和Orion都撑持JSP手艺。
从机票预订体系、银行体系到购物体系,Web上各处都在使用JSP手艺。新公布的2.0版是对JSP1.2的晋级,增添了一些风趣的新特征。JSP2的方针是使静态网页的计划加倍简单,并且无需进修Java编程言语。
本文内容包含:
- 供应具有丰厚示例代码的教程来使你熟习JSP2.0
- 先容JSP2.0的新特征
- 供应使用JSP2.0开辟使用程序的一些体味
- 给出了一些示例代码,对这些代码略加修正便可用于你本人的使用程序。
假如你还不熟习JSP,那末间接从JSP2.0动手是一个不错的主张。可是假如但愿进修JSP1.2,大概你必要从JSP教程入手下手进修。
JSP2.0
JSP2.0是对JSP1.2的晋级,增添了几个风趣的新特征,可使Web使用程序计划职员和开辟职员的事情更简单一些。JSP2.0的方针是比之前更容易于利用,更主要的是不必进修Java言语自己就能够利用它。它增添了一种称为SimpleTag的新扩大机制来简化标签API(TagAPI)。
除其他一些改善外,JSP2.0引进的最次要的新特征包含:
- 一种复杂的表达式言语(EL),可以用来简单地从JSP页面会见数据,这类表达式言语简化了基于JSP的不含剧本的使用程序的编写,不必要利用JavaScriptlet大概Java表达式;
- 用于间接利用JSP手艺来界说可重用的自界说举动的新语法,该语法利用.tag和.tagx文件,这类文件可由开辟职员大概网页作者编写;
- 3XML语法失掉了本色性的改善,增添了新的尺度文件扩大名(.tagx用于标签文件,.jspx用于JSP文件)。
本文次要会商表达式言语、简化的标签API和标签文件。信任今朝的JSP开辟职员将会发明这些主要的特征不仅风趣,并且十分有效。
为什么要从1.2超过到2.0?
在Java规格哀求(JSR152)中版本号最后定为1.3。可是正如你将在前面看到的那样,因为这些新特征对JSP使用程序的开辟模子发生了云云深入的影响,专家组感应有需要把主版本号晋级到2.0,如许才干充实反应这类影响。别的,新的版本号也有助于把开辟职员的注重力吸引到这些风趣的新特征下去。使人欣喜的是,一切正当的JSP1.2页面同时也是正当的JSP2.0页面。
JSP2.0起步
在动手进修JSP2.0之前,你必要一个撑持JSP2.0和JavaServlet2.4标准的JSP情况。侥幸的是,JakartaTomcat5.0(alpha测试版)撑持新的JSP2.0和Servlet2.4标准,能够从http://jakarta.apache.org/builds/jakarta-tomcat/release/v5.0.4-alpha/下载并安装Tomcat5.0。
JSP表达式言语
向JSP网页传送信息是经由过程JSPscoped属性和哀求参数完成的。专门为网页作者量身定做的一种表达式言语(EL)把JSPscoped属性提拔为从营业逻辑向JSP页面传送信息的尺度体例。可是要注重,只管这类表达式言语是JSP的一个主要特征,它并非一种通用的程序言语。它仅仅是一种数据会见言语,能够便利地会见和处置使用程序数据,而无需利用scriptlet大概哀求时(request-time)表达式的值。
在JSP2.0之前,网页作者只能利用表达式<%=aName%>会见体系的值,好比上面的例子:
<someTags:aTagattribute="<%=pageContext.getAttribute("aName")%>">
大概利用自界说JavaBeans组件的值:
<%=aCustomer.getAddress().getCountry()%>
表达式言语同意网页作者利用复杂的语法会见对象。好比要会见一个复杂变量,能够像上面如许写:
<someTags:aTagattribute="${aName}">
而会见嵌套的JavaBeans属性,则能够像上面如许写:
${aCustomer.address.country}
你大概会问,这不是JavaScript的语法吗?完整准确!假如你利用过JavaScript,就会感应十分轻松,由于表达式言语恰是借用了会见布局化数据的JavaScript语法。
注重:表达式言语最后是作为JSP尺度标签库(JSTL)1.0的一部分而开辟的,JSTL是一种尺度标签库,它供应对通用的、布局化的义务的撑持,如迭代和前提、XML文档处置、国际化和使用SQL会见数据库等。JSTL标准是由JSR52专家组开辟的。关于JSTL的先容,请拜见FasterDevelopmentwithJSTL(利用JSTL减速开辟).
会见使用程序数据
可使用点号运算符(.)会见作为对象属性的使用程序数据,也可以使用方括号运算符[‘name’]会见定名的数组元素。
表达式${data}暗示名为data的scoped变量。可使用点号(.)或方括号([])运算符从汇合中检索属性值:
- 点号运算符用于会见定名的属性,好比表达式${customer.name}暗示scoped变量customer的name属性;
- 方括号运算符可用于检索定名的属性,好比在${customer[“name”]}中。也能够经由过程${customers[0]}的情势来会见汇合customers中的第一项。
表达式言语一致了对点号和方括号运算符的处置,因而${customer.name}与${customer[“name”]}是等价的。正如你看到的那样,表达式必需利用${和}包抄起来。
EL的标识符求值体例是利用PageContext.findAttribute(String),把标识符作为一个属性来查找它的值。假如没有找到该属性,则前往null。
运算符
表达式言语撑持算术运算符、干系运算符和逻辑运算符,以完成年夜多半的数据处置操纵。别的,它还供应了一个用于测试一个对象是不是为空的特别运算符。运算符如表1所示。你可使用empty运算符判别某个汇合或字符串是不是为空。例如说,只要当请求的定名参数param没有给出时,表达式${emptyparam.name}才前往真。Empty运算符能够与“!”运算符一同利用,好比${!emptyparam.name}当请求的定名参数param存在时前往真。
+
加
-
减
*
乘
/或div
除
%或mod
模(求余)
==或=
即是
!=或!=
不即是
<或lt
小于
>或gt
年夜于
<=或le
小于即是
>=或ge
年夜于即是
&&或and
逻辑与
||oror
逻辑或
!或not
逻辑非
empty
反省是不是为空值
a?b:c
前提运算符
隐含对象
除运算符外,表达式言语还界说了一些隐含对象以撑持网页作者会见必要的使用程序数据。表达式言语界说的隐含对象如表2所示,前面将给出利用这些隐含对象的一个例子。
applicationScope
使用程序局限内的scoped变量构成的汇合
cookie
一切cookie构成的汇合
header
HTTP哀求头部,字符串
headerValues
HTTP哀求头部,字符串汇合
initParam
全体使用程序参数名构成的汇合
pageContext
以后页面的javax.servlet.jsp.PageContext对象
pageScope
页面局限内一切对象的汇合
param
一切哀求参数字符串构成的汇合
paramValues
一切作为字符串汇合的哀求参数
requestScope
一切哀求局限的对象的汇合
sessionScope
一切会话局限的对象的汇合
表达式言语的例子
如你所言,网页作者不必进修Java也可以利用这类表达式言语。示例代码1显现了一些表达式的例子和隐含对象的利用。
代码示例1:ex1.jsp
要运转这个例子,请参照以下步骤,这里我们假定Tomcat5.0安装在c: omcat5.0下。
- 切换目次到c:Tomcat5.0webappsjsp-examples
- 创立新目次,名字能够是恣意的,好比jsp2-tutorial
- 切换到jsp2-tutorial
- 把ex1.jsp复制并保留到该目次下
- 启动Tomcat5服务器:指向“入手下手”->“程序”->“ApacheTomcat5.0”,单击“ApacheTomcat5.0”来启动Tomcat
- 在扫瞄器中输出http://localhost:8080/jsp-examples/jsp2-tutorial/ex1.jsp
你将看到相似所示的画面。利用表达式言语就这么复杂!
注重:在本文中,一切的JSP文件都保留在c:Tomcat5.0webappsjsp-examplesjsp2-tutorial目次下。
添补表单例子
隐含对象可用于读取添补表单的数据。代码示例2给出了一个复杂的表单,该表单提醒用户输出一个名字。
代码示例2:form.jsp- <HTML>
- <HEAD>
- <TITLE>FormContent</TITLE>
- </HEAD><BODY><H3>Fill-out-form</H3>
- <P>
- <FORMaction="form.jsp"method="GET">
- Name=<inputtype="text"name="name"value="${param[name]}">
- <inputtype="submit"value="SubmitName"></FORM>
复制代码- <P>
- TheNameis:${param.name}
复制代码 在本例中,当用户输出名字并单击“提交”按钮时,输出的名字就会显现统一页面中的“TheNameis:”字样前面,如所示。
一样,运转这个例子只必要把form.jsp复制到c:Tomcat5.0webappsjsp-examplesjsp2-tutorial下并用扫瞄器翻开它。
界说和利用函数
表达式言语同意你界说可在表达式中挪用的函数。函数必需作为public类中的publicstatic办法编写。函数一经界说,它的署名(signature)就映照到标签库形貌符(TLD)中。
为了申明函数的利用,我们举一个复杂的例子,把两个数相加。起首要编写求两数之和的Java办法代码,如代码示例3所示,这里界说了一个静态办法,它吸收两个字符串参数,把它们剖析成整数并前往它们的和。
代码示例3:Compute.java- publicclassCompute{
- publicstaticintadd(Stringx,Stringy){
- inta=0;
- intb=0;
- try{
- a=Integer.parseInt(x);
- b=Integer.parseInt(y);
- }catch(Exceptione){}
- returna+b;
- }
- }
复制代码 用javac把这段代码编译乐成后,下一步就要把函数的署名映照到标签库。代码示例4申明了怎样把add函数映照到包括函数完成和函数署名的类。前面将申明把这段代码增加到哪儿。
代码示例4:函数形貌符- <function>
- <description>addxandy</description>
- <name>add</name>
- <function-class>jsp2.examples.el.Compute
- </function-class>
- <function-signature>int
- add(java.lang.String,java.lang.String)
- </function-signature>
- </function>
复制代码 如今我们就能够编写一个JSP页面来利用这个函数。代码示例5是包括两个字段的一个表单,用户输出两个数字并按下“乞降”按钮,就会挪用下面的函数并把两个数相加,了局在统一个页面中显现出来。
代码示例5:math.jsp- <%@taglibprefix="my"
- uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib%>
复制代码- <HEAD>
- <TITLE>Functions</TITLE>
- </HEAD>
复制代码- <H3>AddNumbers</H3>
- <P>
- <FORMaction="math.jsp"method="GET">
- X=<inputtype="text"name="x"value="${param["x"]}">
- <BR>
- Y=<inputtype="text"name="y"value="${param["y"]}">
- <inputtype="submit"value="AddNumbers">
- </FORM>
复制代码- <P>
- Thesumis:${my:add(param["x"],param["y"])}
复制代码 要运转这个例子:
- 复制Compute.java并保留到C:Tomcat5.0webappsjsp-examplesWEB-INFclassesjsp2examplesel下;
- 利用javac编译Compute.java;
- 编纂文件C:Tomcat5.0webappsjsp-examplesWEB-INFjsp2jsp2-example-taglib.tld,把代码示例4中的代码段增加到文件中最初一个</function>标签以后,</taglib>标签之前;
- 复制math.jsp并保留到c:Tomcat5.0webappsjsp-examplesjsp2-tutorial下;
- 用扫瞄器翻开该文件。
假如统统一般,应当会看到相似如所示的窗口。
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), |
|