【Jsp精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了Jsp精品源码-【精品】JSP入门教程 - 互联网的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
JSP 入门教程JavaServer Pages
JSP是基于Java的技术,用于创建可支持跨平台及跨Web服务器的动态网页。
JSP可与微软的Active Server Pages ASP相媲美,但
JSP使用的是类似于HTML的标记和Java 代码片段而不是用VBScript。
当你使用不提供ASP本地支持的Web服务器(例如 Apache或Netscape服务器)时,你就可以考虑使用
JSP了。
你虽然也可以为这些服务器弄一个ASP附加软件模块,但是太昂贵了。
现在Sun公司并不 ,况且用于Solaris、 Linux以及Windows系统的组件都很容易会因你使用
JSP向你收费(虽然将来可能要收)获得。
不要把
JSP与服务器端的JavaScript语言搞混了。
Web服务器自动将通过
JSP生成的Java代码片段转换成Java片段(servlets)
JSP也可自动控制许多功能,如过去用Perl脚本编写功能程序或像ASP这样的服务器专用 。
API(应用编程接口) 。
我们马上就要开始帮助你建立一个使用
JSP 技术的网站范例了。
准备好计算机以使用
JSP你需要Java2 软件开发工具箱(J2SDK) 、JavaServer 网络开发工具箱 ,过去称之为Java开发工具箱(JDK) 、Tomcat,或者其它能支持
JSP的Web服务器。
升阳公司为Windows、Solaris以及 Linux平台提供(JSWDK)免费的J2SDK和JSWDK。
如果你想在现有的Web服务器上使用
JSP,而此服务器本身不支持
JSP和Java 代码片段,可以试用Allaire公司的Jrun。
它可以为Netscape的Enterprise Server和Fasttrack Server、微软的Internet Information Server(IIS)和Personal Web Server(PWS) 、Apache以及其他服务器充当Web服务器附件。
你也可以使用Apache服务器的Java版,其中包含最新的JSWDK。
下载并安装所需的软件目前,版本号为 1.2.2-001 的J2SDK可下载版以可安装的归档文件形式出现。
这个大约 20MB的下载量软件可提供一个彻底的Java开发环境,让你创造任何基于Java并且利用了而标准核心API的解决方案。
其实,你的Web服务器使用
JSP的唯一条件是要有Java编辑器。
要让Web服务器知道编辑器的位置,需要JAVA_HOME环境变量设置为J2SDK安装目录。
如果你已经在Windows系统中进行了安装并且接受了默认目录, 请将“setJAVA_HOMEC:1.2.2”添加到你的“autoexec.bat”文件中,然后重新启动。
安装J2SDK后,下载并安装JSWDK或者是Tomcat β版,即基于Java的Apache Web服务器的β版。
你把JSWDK放在什么地方是无关紧要的,只要你以后能找到它就行。
通常,将其放在顶层目录中,这样你在替换JSWDK或JSDK时无需删除另一个软件。
安装好这个文件后,准备工作已经就绪,你可以开始
JSP开发工作了。
正确地安装JSWDK后,请运行“startserver”脚本程序,以启动Web服务器,使其按照默认情况监听 8080 端口 。
你 要 在 启 动 服 务 器 之 后 查 看 您 是 否 已 正 确 地 安 装 了 此 工 具 , 请 加 载 一 个
JSP 样 本 文 件 。
如果你能成功地运行这些样本文件,说明你已经正确地安装了这个软(http://locahost:8080/examples/
jsp/)件。
如果你在用来启动服务器的控制台窗口中看到报错信息,你就需要做些修改。
最经常发生的问题是没有设置或不正确地设置了JAVA_HOME环境变量。
要看到当前环境变量设置情况,要请在DOS提示符下键入“set”设置。
开始在解释
JSP语法前,创建一个快捷网页,显示目当前的日期和时间,并然后将之其保存为sample.
jsp:lthtmlgtltheadgtlttitlegtFirst Pagelt/titlegtlt/headgtltbodygtltH3gtToday is:lt new java.util.Date gtlt/H3gtlt/bodygtlt/htmlgt.把 这 个 文 件 以 及 你 所 有 的 HTML 和
JSP 页 面 放 在 JSWDK 安 装 目 录 下 的 网 页 目 录 里 。
你 可 以 从http://localhost:8080/sample.
jsp加载此网页。
该网页首次被访问时,Web服务器会把
JSP编译成Java代码片段,这样你就能够看到当前的日期和时间了。
你已经下载、安装并配置好了开发环境,你可以开始学习
JSP语法并创建自己的基于
JSP的解决方案了。
JSP基本语法讲完安装问题后,现在进入来讨论
JSP语法。
一个投机取巧的办法是下载语法卡片。
如果你不熟悉Java编程,也许你想看一下Sun的指南 。
然而网页创建者并不需要进行太多的Java开发。
除了一些方法调用,在你的
JSP网页里应尽可能少用Java代码。
记住以上提示,我们首先来看一看
JSP指令和脚本元素,之后我们会解释JavaBeans和隐含对象。
共有五种
JSP指令和脚本元素。
在
JSP 1.0 版中,大部分
JSP被一个以“lt” 开头和以“gt”结尾的的标记括在其中。
在更新的
JSP 1.1 规范出台后,就有了与XML兼容的版本。
JSP指令和脚本元素Directives lt directive gtDeclarations lt declaration gtExpressions lt expression gtCode Fragment/Scriptlet lt code fragment gtComments lt-- comment --gt指令
JSP指令是为
JSP引擎而设计的。
他们并不直接产生任何可见输出,而只是告诉引擎如何处理其余
JSP页面。
这些指令始终被括在 “lt gt”标记中。
两个最重要的指令是“pagePage”和“Include”。
“Taglib”指令不在讨论之列,但是在用
JSP1.1 创建自定义标记可以使用它。
几乎在所有
JSP页面顶部都会看到“Page”指令。
尽管不是必须的,但它可以让你指定:到何处查找起支持作用的Java类别:lt page importquotjava.util.Datequot gt出现Java运行问题时,将网上冲浪者引向何处:lt page errorPagequoterrorPage.jspquot gt还有你是否需要管理用户的会话级信息,这些信息可能来自多个网页(在下面的JavaBeans一节将对此做进一步讲)述:lt page sessionquottruequot gt.“Include”指令可以把你的内容分成更多可管理的元素,比如包括一个普通页面页眉或页脚的元素。
包含的网页可以是一个固定的HTML 页面或更多的
JSP内容:lt include filequot200453092147.htm.jspquot gt声明
JSP声明用来让你定义页面级变量,以保存信息或定义
JSP页面的其余部分可能需要的支持方法。
如果你发现代码太多,通常最好把它们写成一个独立的Java类别。
声明一般都在“lt gt”标记中。
(; 一定要以分号 )结束变量声明,因为任何内容都必须是有效的Java语句:lt int i0 gt。
表达式有了
JSP表达式,表达式评估结果会被转换成一个字符串,并且被直接包括在输出页面之内。
JSP 表达式包含在“lt gt” 标记中,没有分号,除非在加引号的字符串部分使用分号。
lt i gtlt quotHelloquot gt .代码片段/脚本片段代码片段/脚本片段(Scriptlets)
JSP代码片段或脚本片段是嵌在“lt gt”标记中的。
这种Java代码在Web服务器响应请求时就会运行。
在脚本片段周围可能是原始的HTML或XML语句,在这些地方,代码片段可以使你创建条件执行代码,或要用到另外一段代码的代码。
例如,以下的代码组合使用表达式和代码片段,显示H1、H2、H3 和H4 标记中的字符串“Hello”。
代码片段并不局限于一行源代码:lt for int i1 ilt4 i gtltHltigtgtHellolt/Hltigtgtlt gt.注释最后一个主要的
JSP元素是嵌入式注释。
尽管你始终可以在文件中加入HTML注释,但用户在查看页面源代码时会看到这些注释。
如果你不想让用户看到它,你就应该将其嵌入“lt-- --gt” 标记中:lt-- comment for server side only --gt.带JavaBean 的
JSP虽然你可以把大段的代码放在脚本片段(scriptlet)内,但是绝大多数的Java代码属于可重复使用的名为JavaBea的组件。
JavaBean类似于ActiveX控件:他们都能提供常用功能并且可以重复使用。
JavaBean的值是通过一些属性获得的,你可通过这些属性访问JavaBean设置。
以一个人来打比方,这个人就是一个JavaBean,这个人的名字、身份证号码以及住址就是其属性。
在
JSP网站,你基本上就是通过玩“Connect the beans)”来使你的网站动态化。
假设JavaBean先于网站被创建出来,你需要做的第一件事就是告诉
JSP页面它将要用到一个“Bean”。
你可以用“ltjsp:useBeangt”标记来做到这一点:ltjsp:useBean idquotlocalNamequot classquotcom.jguru.Personquot scopequotapplicationquot /gt。
“ltjsp:useBeangt”标记要求你用“id”属性来识鉴别Bean。
这里你提供一个名字来
JSP页面其余部分的Bean。
除了“id”属性,你还须告诉网页面从何处查找Bean,或者它的Java类别名是什么。
这种类别属性提供确 认Bean的功能,其他一些方法也可以做到这一点。
最后一个必需的元素是“scope”属性。
有了“scope”属性的帮助,你就能告诉Bean为单一页面(默认情况)scopequotpagequot、为scopequotrequestquot请求为会话scopequotsessionquot,或者为整个应用程序scopequotapplicationquot保持留信息。
有了会话范围,你就能非常容易地在
JSP网页面上维护购物车等项目。
一旦你声名了一个JavaBean,你就可以访问它的属性来定制它。
要获得属性值,请用“ltjsp:getPropertygt”标记。
有了这个标记,你就能指定将要用到的Bean名称(从useBean的quotidquot字段得到)以及你想得到其值的属性。
实际的值被放在输出中:ltjsp:getProperty idquotlocalNamequot propertyquotnamequot /gt。
要改变JavaBean属性,你必须使用“ltjsp:setPropertygt”标记。
对这个标记,你需要再次识别Bean和属性,以修改并额外提供新值。
如果命名正确,这些值可以从一个已提交的表中直接获得:参数获得:ltjsp:setProperty idquotlocalNamequot propertyquotquot /gt可以从一个参数获得,但你必须直接命名属性和参数:ltjsp:setProperty idquotlocalNamequot propertyquotserialNumberquot valuequotstringquot /gt或者直接用一个名字称和值来设置: ltjsp:setProperty idquotlocalNamequot propertyquotserialNumberquot value ltexpression gt /gt.关于JavaBean 的最后一件事: 为了Web服务器能找到JavaBean,你需要将其类别文件放在一个特殊位置。
用JSWDK,最 方便的位置是安装目录下的类别目录,如jswdk-1.0.1classes。
JSP隐含对象与
JSP语法相关的最后的元素是一些叫做“隐含对象”的东西。
在
JSP代码片段中,你可以利用这些隐含对象与
JSP页面的代码片段执行环境产生互动。
应尽量少访问这些内置隐含对象。
但是,在一某些情况下,访问隐含对象是可被接受的。
若要充分利用隐含对象,就需了解最新的Java Servlet API。
下表列出可用的隐含对象集合。
隐含对象说明request 客户端请求,包括从GET/POST请求传递过来的参数response 网页传回客户端的反应pageContext 在此管理网页属性session 与请求关联的会话application 代码片段的运行环境out 传送响应的输出流config 代码片段配置对象page
JSP网页本身exception 有错的网页中未被捕获的例外这些都是用来做什么的,你又如何来使用它们呢?基本上说,在你的脚本片段里,你可以用它们进入执行
JSP代码的代码片段。
用不着深入了解太多的Servlet API细节,我们来看看能用它们来做到的某些事情:你可以不用表达式,直接进入“Out”隐含对象,将某些内容输出到响应中:lt out.printlnquotHelloquot gt。
用不着把一个参数直接送到JavaBean,你可以从请求对象获取参数值:lt String namerequest.getParameterquotnamequot out.printlnname gt.在你用
JSP进行开发的过程中,进行更多的开发的过程中,如果创建了JavaBeans或发现
JSP文件中加入了太多的Java源代码,你就需要创建起支持作用的Java分类(class)了,它可以协助你重复利用源代码并减少
JSP网页编译时间。
当你需要创建Java分类文件时,你必须:将JDSWK installation in目录添加到PATH中。
在autoexec.bat文件PATH行的末尾,加入“C:1.2.2/bin”。
用这个命令将JAR文件复制到“jrelibext:”目录中: copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext.创建一个
JSP网站现在该是把所有这些
JSP语法派上用场的时候了。
我们将创建一个网页,它有一个输入表单,可以使用户输入一个股票代号以获得出当前股价(有 20 分钟) 。
如果输入有误,则显示报错网页。
quote.
jsp首先,用 这个代码 创建一个quote.
jsp网页并将其保存在JSWDK安装目录下的网页目录中。
大多数的网页是标准的HTML,其间散布着
JSP代码。
第六行是一个网页指示,表示将把所有错误发送到“errorPage.
jsp”文中。
第 13 到 15 行是一个脚本片段,主要说明只有提供“符号”参数才会显示表格。
“If”代码段在 32 到 34行结束。
第 17 行定义了要用的JavaBean,第 18 行从参数加载JavaBean的符号属性。
第 27 行到 29 行显示Bean的属性。
除了quotif quot代码段,实际上并不涉及其它Java代码。
errorPage.
jsp下一步,将下列
JSP源代码保存到网页目录中的“errorPage.
jsp”文件中。
“这是一个错误网页”的提示为第一行,它将isErrorPage网页提示属性设置为真。
上一页说了明错误网页的位置,本页则说明这就是错误网页。
其它
JSP文件中的
JSP专用代码只有访问隐含例外对象才用到。
网页只显示其值:lt page isErrorPagequottruequot gtlthtmlgtltheadgtlttitlegtError Pagelt/titlegtlt/headgtltbodygtlth1gtOur Error Pagelt/h1gtlt/fontgtlt-- Print Exception --gtWe got ourselves an exception:lt exception gtlta hrefquotquote.jspquotgtRestartlt/agtlt/bodygtlt/htmlgt。
Quotes.javaQuotes JavaBean 利 用 Yahoo 资 源 来 获 得 股 票 价 格 。
需 要 将 此 资 源 保 存 到 JSWDK 安 装 目 录 下“classescomjguru”目录中的“quotes.java”文件中。
请在此用JSDK中的Javac编辑器来编辑它。
你的第一个
JSP网页。
创建了这两个
JSP文件,建立了JavaBean资源文件并编辑了它后,你就可以从http://localhost:8080/quote.
jsp加载“quote.
jsp”文件以查看结果,假设你没有更改JSWDK安装设置,转而使用别的端口。
这个网页当然能做得更漂亮,但是它已实现了需要实现的功能,并且很好地展示了
JSP的功能。
欢迎使用JavaServer Pages以下简称
JSP技术—制作动态内容网页的方法。
如果你希望学习这篇教程的话,我想你一定是这项技术的新手。
你可能想成为一名利用
JSP技术开发网络应用程序的程序员或者网页设计师。
本教程中包含了一系列
JSP的技巧和一些简单的代码的写法,每一步都举了一组例子来讲述原理。
我建议你在学习本教程之前先去看一看FAQ,了解如果配置你的服务器好让他能支持并运行
JSP。
那样你就可以跳过前边的内容直接看你感兴趣的内容了。
OK,费话少说,Let’s go!第一课:真正的开始现在开始做我们的第一个
JSP页面。
图 1-1 展示了一个最简单的
JSP页面,接下来是两段代码。
dukebanner.htmllttable border”0” width”400” cellspacing”0” cellpadding”0”gtlttrgtlttd height”150” width”150”gt ampnbsp lt/tdgtlttd width”250”gt ampnbsp lt/tdgtlt/trgtlttrgtlttd width”150”gt ampnbsp lt/tdgtlttd align”right” width”250”gtltimg src”duke.waving.gif”gtlt/tdgtlt/trgtlt/tablegtltbrgthelloworld.jsplt page infoquota hello world examplequot gtlthtmlgtltheadgtlttitlegtHello Worldlt/titlegtlt/headgtltbody bgcolorquotffffffquot backgroundquotbackground.gifquotgtlt include filequotdukebanner.htmlquot gtlttablegtlttrgtlttd width150gt ampnbsp lt/tdgtlttd width250 alignrightgt lth1gtHello Worldlt/h1gt lt/tdgtlt/trgtlt/tablegtlt/bodygtlt/htmlgt页面说明:在很多
JSP文件中你都要写上这样的说明。
在helloword.
jsp中:lt page infoquota hello world examplequot gt傻瓜也看得出来,这句话没什么大用,只是简要的说明一下这段代码的作用。
你可以在
JSP文件中的任何地方写这种代码,但是好的习惯是把他写在最前面,还有,因为他是
JSP标签,记住一定要放在lthtmlgt前面,呵include说明:include用来在主
JSP文件中调用本地的一个其他文件,通常是一些版权信息啦,脚本语言啦等其他任何你想在其他文件中重复使用的代码。
在这个例子中就是调用了一个图片其实。
大家明白这个意思就得了。
随便说两句:在
JSP中对写法非常敏感,不可以有一点错误。
举个例子,把ltjsp:useBeangt写成ltjsp:usebeangt那样服务器会出现错误信息。
一些如类名,包名,路径名还有其他的敏感的标签等千万不要写错。
有一些
JSP标签拿不准的话就去查一下JavaServer Pages语法卡片。
代码写好了,如何试验一下呢?我这里写的UNIX下的方法,如果你用Windows,那么换一下路径就可以了1、 先建一个目录:../jswdk-1.0/examples/
jsp/tutorial/helloworld2、 把这些文件拷过去background.gif duke.waving.gif dukebanner.html and helloworld.
jsp3、 cd ../jswdk-1.0,然后startserver4、 开一个浏览器,5、 http://yourMachineName:8080/examples/
jsp/tutorial/helloworld/helloworld.jspgt第二课:用HTML表单大多数情况下,商业的网站都要有一些表单,比如说输入一下消费者的姓名啦,地址啦,或者敲一个词来用搜索引擎来查一下啦,或者市场人员从来访者处收集一些数据供参考什么的。
那些表单传回的数据怎么处理的?来访者通过表单向
JSP引擎输入了数据,并保存在了request对象中,那么接下来怎么办?图 2-1 向你展示了数据流是如何在服务器和客户之间传递的(至少在SUN的
JSP reference implementation是这么做的,别的
JSP引擎工作起来可能会有一点点的不同,其实大同小异,都差不多)字儿太小了,可能看不大清吧?俺来解释一下了只好。
首先,
JSP引擎把存放在request对象中的数据发到
JSP页面指定的服务器端的组件(JavaBeans组件 servlet或者enterprise bean) ,组件收到这些个数据以后,有可能再存这些数据到数据库或者其他的地方存放起来,同时,返回一个response对象给
JSP引擎。
JSP引擎再把response对象传给
JSP页面,这时的页面包含了定义好的格式和从服务器端得到的数据。
这时
JSP引擎和Web服务器再发送一个整理好的完整的页面给客户,也就是这们在浏览器上看到的结果。
客户和服务器间的通信协议可以用HTTP,当然也可以用其他的。
Request和Response对象在你制作的
JSP原代码中起作用。
到于request对象到底怎么用,我要在接下来详细的讲给你听。
如何创建表单用HTML定义一些有代表性的表单做成一个
JSP文件,然后用
JSP标签在表单和服务器端对象(通常都用Bean)传递数据。
一般情况下是这么干的:1、 写
JSP原文件,创建一些HTML的表单并命名。
2、 在Java文件里写Bean,定义属性,GET或者SET方法来配合已经被你指定好名字的表单。
3、 回到
JSP原文件中,增加ltjsp:useBeangt标签来创建一个或者调用一个现成的Bean。
4、 增加ltjsp:setPropertygt标签设置HTML表单中需要SET方法的Bean的属性。
5、 增加ltjsp:getPropertygt标签设置HTML表单中需要GET方法的Bean的属性。
6、 如果需要处理更多的用户数据,用request对象。
说了半天你可能看不懂,其实看一个例子你就懂了。
先看一个简单的hello的例子吧:这段程序其实还是计算机程序里那个最经典的“helloworld”的程序,只不过呢,我使他挠了一点弯儿,使他看起来比较智能和复杂。
首先你输入你的名字,然后Duke跟你说:“hello”看看代码吧:dukebanner.htmllttable borderquot0quot widthquot400quot cellspacingquot0quot cellpaddingquot0quotgtlttrgtlttd heightquot150quot widthquot150quotgt ampnbsp lt/tdgtlttd widthquot250quotgt ampnbsp lt/tdgtlt/trgtlttrgtlttd widthquot150quotgt ampnbsp lt/tdgtlttd alignquotrightquot widthquot250quotgtltimg srcquotduke.waving.gifquotgt lt/tdgtlt/trgtlt/tablegtltbrgt主
JSP文件:hellouser.jsplt page importquothello.NameHandlerquot gtltjsp:useBean idquotmybeanquot scopequotpagequot classquothello.NameHandlerquot /gtltjsp:setProperty namequotmybeanquot propertyquotquot /gtlthtmlgtltheadgtlttitlegtHello Userlt/titlegtlt/headgtltbody bgcolorquotffffffquot backgroundquotbackground.gifquotgtlt include filequotdukebanner.htmlquot gtlttable borderquot0quot widthquot700quotgtlttrgtlttd widthquot150quotgt ampnbsp lt/tdgtlttd widthquot550quotgtlth1gtMy name is Duke. Whats yourslt/h1gtlt/tdgtlt/trgtlttrgtlttd widthquot150quot ampnbsp lt/tdgtlttd widthquot550quotgtltform methodquotgetquotgtltinput typequottextquot namequotusernamequot sizequot25quotgtltbrgtltinput typequotsubmitquot valuequotSubmitquotgtltinput typequotresetquot valuequotResetquotgtlt/tdgtlt/trgtlt/formgtlt/tablegtltIf request.getParameterquotusernamequot null gtlt include filequotresponse.jspquot gtlt gtlt/bodygtlt/htmlgt回应文件:response.jsplttable borderquot0quot widthquot700quotgtlttrgtlttd widthquot150quotgt ampnbsp lt/tdgtlt.