第9章JSP技术.docx
- 文档编号:7324984
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:25
- 大小:34.16KB
第9章JSP技术.docx
《第9章JSP技术.docx》由会员分享,可在线阅读,更多相关《第9章JSP技术.docx(25页珍藏版)》请在冰点文库上搜索。
第9章JSP技术
第9章JSP技术
1JSP的概念1
1.1Java技术的三个分支1
1.2动态网页技术简介1
1.3JSP与ASP和PHP的比较2
2几个简单的JSP文件及运行4
3Directive6
3.1Include指令6
3.2Page指令9
4ScriptingElement13
4.1Declaration13
4.2Expression14
4.3Scriptlet15
5Action16
5.1 forward>16 5.2 getProperty>18 5.3 setProperty>24 5.4 useBean>27 6更深入的问题30 6.1JSP内置对象30 6.2PDF文档31 6.3与Servlet的配合使用32 7示例剖析32 参考文献34 1JSP的概念 JSP(JavaServerPages)与ASP、PHP同属动态网页技术。 刚推出是是独立发布的,在1999年SUN公司将它和Servlet、EJB等捆绑推出了J2EE,现在它已是J2EE中的重要组成部分。 1.1Java技术的三个分支 1999年SUN公司将Java技术兵分三路: J2ME、J2SE、J2EE。 J2ME主攻嵌入市场 J2SE主攻桌面市场 J2EE主攻服务器市场。 1.2动态网页技术简介 最早出现的动态页面发布技术是公共网关接口CGI(CommonGatewayInteface),通过CGI可以与访问Web页面的用户进行交互。 当用户请求一个Web页面时,服务器将启动一个CGI程序,并对用户要求进行处理,解决用户数据的输入、输出问题。 CGI可以使用几乎任何一种程序语言进行编程,常用的CGI编程语言有: Perl、C/C++、PHP、VisualBasic和ShellScript(Unix操作系统上的脚本语言)。 CGI程序的缺点是: 每一个用户请求都会启动一个CGI程序,当用户请求较多时,服务器的负担将相当沉重;CGI程序的编写很是不易,要求程序员了解Web服务器的通信及获取浏览器信息的方法等方面的知识。 针对CGI的缺点,Microsoft公司提出了ISAPI(InternetServerApplicationProgrammingInterface)和IDC(InternetDataConnector)。 ISAPI是IIS(InternetInformationServer)编程接口规范,专用于服务器端应用程序的开发。 ISAPI程序以DLL形式外挂到Web服务器上,所以使用ISAPI处理用户请求时,响应速度非常快,同时它占用的资源也很少。 Netscape公司也提出了对应的服务器端的API。 但是这些服务器端的API以C的形式提供API,非专业人员开发起来较为困难。 在这种情况下Microsoft公司推出了ASP技术,ASP提供了一种简单易学的脚本(VBScript或Jscript),并带有许多内置的对象,从而提供了一条简捷的编程之路。 更为重要的是,ASP中提供了ADO对象,让程序员可以轻松操作各种数据库,从而可以产生和运行动态的、交互的Web服务应用程序。 ASP不仅大大降低了Web开发难度,在编程和网页脚本的可读性方面也大大优于传统的技术方案。 与ASP相并列的是SUN推出的JSP,和PHP技术。 1.3JSP与ASP和PHP的比较 JSP是一个业界标准,得到Sun,IBM,Oracle,BEA,Apache等的支持,PHP只是一个开发组织并不强的freeware;PHP的性能不好,是解释型的,JSP采用JIT编译后,和c不相上下,而且支持多线程;JSP支持的平台众多,从Win98,NT,Unix,Linux,FreeBSD到AS/400,OS/390,而PHP支持的平台有限;JSP可以利用JDBC和众多主流关系数据库连接,而PHP目前只支持MySql和Oracle等有限的几种;JSP中的组件JavaBean和EJB开发非常容易,而且还可以在JSP中使用Java所有的类和功能。 而PHP只能用C写一些功能有限的组件,而且编写较为复杂; 利用JSP可以支持EJB,以支持Transaction和CORBA标准,而且还可以支持LDAP,Message等服务,使得访问ERP,CICS,MQ等企业应用非常容易。 而PHP在这方面先天不足,所以对于电子商务这样的Mission-critical的应用来说,PHP并不适合; Microsoft公司的ASP技术也是动态网页开发技术。 JSP和ASP从形式上非常相似,ASP程序员一眼就能认出<%%>以及<%=%>。 但是深入探究下去会发现它们很多的差别,其中最主要的有以下三点: 1、JSP的效率和安全性更高 ASP以源码形式存放,以解释方式运行,每次ASP网页调用都需要对源码进行解释,运行效率不高。 另外,IIS的漏洞曾使得许多网站源程序大曝光,包括笔者以前用ASP开发的网站,ASP程序全部被人下载了去。 JSP在执行以前先被编译成字节码(bytecode),字节码由Java虚拟机(JavaVirtualMachine)解释执行,比源码解释的效率高;服务器上还有字节码的Cache机制,能提高字节码的访问效率。 第一次调用JSP网页可能稍慢,因为它被编译成Cache,以后就快得多了。 同时,JSP源程序不大可能被下载,特别是JavaBean程序完全可以放到不对外的目录中。 2、JSP的组件(Component)方式更方便 ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或者复杂计算分离出来成为独立可重复利用的模块。 JSP通过JavaBean实现了同样的功能扩充。 在开发方面,COM的开发远比JavaBean复杂和繁琐,学会ASP不难,但学会开发COM可不简单。 而JavaBean就简单多了,从本文上述示例中可以看出开发JavaBean很方便。 在维护方面,COM必须在服务器上注册,如果修改了COM程序,就必须重新注册,甚至必须关机和重新启动。 JavaBean则不需要注册,放在CLASSPATH包含的目录中就行了。 如果JavaBean进行了修改,则JSWDK和Tomcat现在还需要关闭和重新运行(但不是关机),通过一定的配置您还可以不需要关闭和重新启动服务器。 另外JavaBean是完全的OOP,可以针对不同的业务处理功能方便地建立一整套可重复利用的对象库,例如用户权限控制、email自动回复等等。 3、JSP的适应平台更广 ASP目前仅适用于NT和IIS。 虽然Unix下有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。 JSP则不同,几乎所有平台都支持Java,JSP+JavaBean可以在所有平台下通行无阻。 NT下IIS通过一个插件,例如JRUN( 从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。 笔者将在NT下实验的JSP网页原封不动地拿到Linux下就运行起来了,感觉非常满意。 2几个简单的JSP文件及运行 对于静态网页大家应该不会陌生,在文件Hello.htm中输入如下的内容即得到一个简单的静态网页。 Hello 该望页在浏览器中显示出Hello。 现在您只须将Hello.htm改名为Hello.jsp即成为一个简单的JSP网页,改名为Hello.asp即成为一个简单的ASP网页。 但是要想得到同样的效果,您就不能像以前那样双击该文件,或者用浏览器中的文件—打开的方式。 我们必须做如下准备工作。 首先我们要下载并安装支持JSP的WEB服务器,支持JSP的WEB服务器很多,有WEBSPHERE,JBOSS,WEBLOGIC,TOMCAT等。 这里我们以TOMCAT为例。 Tomcat是Servlet2.2和JSP1.1规范的官方参考实现。 Tomcat既可以单独作为小型Servlet、JSP测试服务器,也可以集成到ApacheWeb服务器。 Tomcat和Apache一样是免费的。 不过,快速、稳定的Apache服务器安装和配置起来有点麻烦,Tomcat也有同样的缺点。 和其他商业级Servlet引擎相比,配置Tomcat的工作量显然要多一点。 具体请参见http: //jakarta.apache.org/。 安装成功后点starttomcat启动服务器。 然后我们要将刚才的文件复制到WEB文档目录,对TOMCAT即是%tomcat%/webapps/root目录。 然后在浏览器网址中输入http: //localhost: 8080/hello.jsp这是您就可以看到所需要的效果。 下面我们再来看两个示例文件: 在文件YOURHOST。 JSP中输入如下内容 yourhostis expression>request.getRemoteHost() expression> 这个程序运行后能够显示您的主机IP地址,在不同的机器上会有不同的结果,这下体验到静态与动态的区别了吧。 在文件COUNTER。 JSP中输入如下内容 <%! PivateintaccessCount=0;%> youarethe<%=++accessCount%>visitor 这个程序运行后能够显示该网页被访问的次数,一个很简单的记数器。 对于如上两个文件,我们既有点似曾相识,又有点陌生,那么JSP中究竟有些什么呢,我们从下节开始详细讲解。 总的来说JSP中的成分可分为三类: DIRECTIVE,SCRIPT,ACTION。 对于DIRECTIVE,SCRIPT既可用老的表示法,也可用新的表示法。 新的表示法更好使用,但更长,要看您自己的爱好选择其一使用。 3Directive JSP指令是为JSP引擎而设计的。 他们并不直接产生任何可见输出,而只是告诉引擎如何处理其余JSP页面。 这些指令始终被括在“<%@%>”或 directive…/>标记中。 两个最重要的指令是“page”和“Include”。 “Taglib”指令不在讨论之列,但是在用JSP1.1创建自定义标记可以使用它。 几乎在所有JSP页面顶部都会看到“Page”指令。 尽管不是必须的,但它可以让你指定: 到何处查找起支持作用的Java类别: <%@pageimport="java.util.Date"%>, 出现Java运行问题时,将网上冲浪者引向何处: <%@pageerrorPage="errorPage.jsp"%>, 还有你是否需要管理用户的会话级信息,这些信息可能来自多个网页(在下面的JavaBeans一节将对此做进一步讲)述: <%@pagesession="true"%>. “Include”指令可以把你的内容分成更多可管理的元素,比如包括一个普通页面页眉或页脚的元素。 包含的网页可以是一个固定的HTML页面或更多的JSP内容: <%@includefile="filename.jsp"%> 3.1Include指令 在JSP中包含一个静态的文件,同时解析这个文件中的JSP语句. JSP语法 <%@includefile="relativeURL"%>或 directive.includefile="url"\>. 例子 include.jsp: Thecurrentdateandtimeare <%@includefile="date.jsp"%>