仓酷云

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

[学习教程] JAVA编程:使用JSP 2.0开辟Web使用程序1

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:08:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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存在时前往真。
1:表达式言语运算符

运算符

申明

+

-

*

/或div

%或mod
模(求余)
==或=
即是
!=或!=
不即是
<或lt
小于
>或gt
年夜于
<=或le
小于即是
>=或ge
年夜于即是
&&或and
逻辑与
||oror
逻辑或
!或not
逻辑非
empty
反省是不是为空值
a?b:c
前提运算符
隐含对象

除运算符外,表达式言语还界说了一些隐含对象以撑持网页作者会见必要的使用程序数据。表达式言语界说的隐含对象如表2所示,前面将给出利用这些隐含对象的一个例子。
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
你将看到相似所示的画面。利用表达式言语就这么复杂!


1JSP表达式言语和隐含对象

注重:在本文中,一切的JSP文件都保留在c:Tomcat5.0webappsjsp-examplesjsp2-tutorial目次下。
添补表单例子

隐含对象可用于读取添补表单的数据。代码示例2给出了一个复杂的表单,该表单提醒用户输出一个名字。
代码示例2:form.jsp
  1. <HTML>
  2. <HEAD>
  3. <TITLE>FormContent</TITLE>
  4. </HEAD><BODY><H3>Fill-out-form</H3>
  5. <P>
  6. <FORMaction="form.jsp"method="GET">
  7. Name=<inputtype="text"name="name"value="${param[name]}">
  8. <inputtype="submit"value="SubmitName"></FORM>
复制代码
  1. <P>
  2. TheNameis:${param.name}
复制代码
  1. </BODY>
  2. </HTML>
复制代码
在本例中,当用户输出名字并单击“提交”按钮时,输出的名字就会显现统一页面中的“TheNameis:”字样前面,如所示。
一样,运转这个例子只必要把form.jsp复制到c:Tomcat5.0webappsjsp-examplesjsp2-tutorial下并用扫瞄器翻开它。


2:表单处置

界说和利用函数

表达式言语同意你界说可在表达式中挪用的函数。函数必需作为public类中的publicstatic办法编写。函数一经界说,它的署名(signature)就映照到标签库形貌符(TLD)中。
为了申明函数的利用,我们举一个复杂的例子,把两个数相加。起首要编写求两数之和的Java办法代码,如代码示例3所示,这里界说了一个静态办法,它吸收两个字符串参数,把它们剖析成整数并前往它们的和。
代码示例3:Compute.java
  1. packagejsp2.examples.el;
复制代码
  1. importjava.util.*;
复制代码
  1. publicclassCompute{
  2. publicstaticintadd(Stringx,Stringy){
  3. inta=0;
  4. intb=0;
  5. try{
  6. a=Integer.parseInt(x);
  7. b=Integer.parseInt(y);
  8. }catch(Exceptione){}
  9. returna+b;
  10. }
  11. }
复制代码
用javac把这段代码编译乐成后,下一步就要把函数的署名映照到标签库。代码示例4申明了怎样把add函数映照到包括函数完成和函数署名的类。前面将申明把这段代码增加到哪儿。
代码示例4:函数形貌符
  1. <function>
  2. <description>addxandy</description>
  3. <name>add</name>
  4. <function-class>jsp2.examples.el.Compute
  5. </function-class>
  6. <function-signature>int
  7. add(java.lang.String,java.lang.String)
  8. </function-signature>
  9. </function>
复制代码
如今我们就能够编写一个JSP页面来利用这个函数。代码示例5是包括两个字段的一个表单,用户输出两个数字并按下“乞降”按钮,就会挪用下面的函数并把两个数相加,了局在统一个页面中显现出来。
代码示例5:math.jsp
  1. <%@taglibprefix="my"
  2. uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib%>
复制代码
  1. <HEAD>
  2. <TITLE>Functions</TITLE>
  3. </HEAD>
复制代码
  1. <BODY>
复制代码
  1. <H3>AddNumbers</H3>
  2. <P>
  3. <FORMaction="math.jsp"method="GET">
  4. X=<inputtype="text"name="x"value="${param["x"]}">
  5. <BR>
  6. Y=<inputtype="text"name="y"value="${param["y"]}">
  7. <inputtype="submit"value="AddNumbers">
  8. </FORM>
复制代码
  1. <P>
  2. Thesumis:${my:add(param["x"],param["y"])}
复制代码
  1. </BODY>
  2. </HTML>
复制代码
要运转这个例子:

  • 复制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下;
  • 用扫瞄器翻开该文件。
假如统统一般,应当会看到相似如所示的窗口。


3:利用函数


java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),
莫相离 该用户已被删除
沙发
发表于 2015-1-20 14:55:30 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
乐观 该用户已被删除
板凳
发表于 2015-1-29 11:27:45 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
谁可相欹 该用户已被删除
地板
发表于 2015-2-6 00:31:28 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-14 16:27:28 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
深爱那片海 该用户已被删除
6#
发表于 2015-3-4 08:17:59 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
若相依 该用户已被删除
7#
发表于 2015-3-11 18:00:32 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
飘灵儿 该用户已被删除
8#
发表于 2015-3-19 05:45:45 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
海妖 该用户已被删除
9#
发表于 2015-3-27 08:22:16 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 23:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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