第二章JSP技术基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JSP页面构成JSP页面是通过在HTML语言中嵌入Java语句(脚本)来实现的。一个JSP页面由二大部分元素组成:HTML元素:可以是HTML标签、JavaScript脚本、CSS层叠样式表等。JSP元素:有指令标识、脚本标识、注释标识、动作标识等,在脚本标识里还可以使用JSP的内置对象。1.指令标识1全局指令page%@指示名[一个或多个指示属性]%page指令用于对JSP文件中的全局属性进行设置。page指令只能当前页有效,除了import属性之外,其它属性在一个页面中只能设置一次。属性说明默认值language指定JSP页面使用的脚本语言Javaimport引用包或类文件,即Java的import语句无session是否启用sessiontrueisELIgnored是否支持EL表达式falseisErrorPage本页是否是一个错误处理页面falseErrorPage设置处理错误的页面无contentType指定MIME类型和字符编码方式text/html;charset=ISO8895-12文件引用指令include%@includefile=”被引用文件”%include指令的目的是减少页面代码冗余。文件page.jsp:%@pagelanguage=javaimport=java.util.*pageEncoding=UTF-8%htmlheadtitleWelcometomyhomepage/title/headbody%@includefile=head.inc%Thisis......br%@includefile=foot.inc%/body/html3标签指令taglib%@tagliburi=”标签库URI”prefix=”前缀”%下面给出一个简单的例子:%@tagliburi=””prefix=”sql”%sql:queryvar=booksselect*frombooks/sql:query2.脚本标识1程序标识在JSP页面中,程序也称为“小脚本”,这些小脚本可以是任意的Java代码。%……//任意合法的Java代码%下面给出一个简单的例子:%@pageimport=java.util.Date%htmlbody%Datedate=newDate();out.print(当前日期是:+date);%/body/html2表达式标识表达式标识的作用是向页面输出一个表达式的值,它等价于out.println()。%=……//一个合法的Java表达式%下面给出一个简单的例子,它可以完成前述例子中的相同功能:%=当前日期是:+date%3声明标识使用小脚本标识和表达式标识所定义的是嵌入的Java语句,但是它不能声明方法,它所定义的变量仅仅是局部变量,如果要声明方法或成员方法,就必须使用声明标识,这些方法和成员变量将在小脚本和表达式中使用。%!……//Java声明语句%下面是一个完整的JSP页面的例子,用于说明声明标识与小脚本及表达式的区别:%@pagelanguage=javaimport=java.util.*pageEncoding=UTF-8%htmlheadtitleJSPDemo/titlebodyThisisaJSPDemopage.br%out.println(Thisisfromscriptlet.br);num=5;demo(out);%num=%=num%%!intnum;publicvoiddemo(JspWriterout){num++;try{out.println(Thisisfromdeclaretion.br);}catch(Exceptione){}}%/body/html这个JSP页面的显示结果是:ThisisaJSPDemopage.Thisisfromscriptlet.Thisisfromdeclaretion.num=63.注释标识1HTML注释!--注释内容--注释内容不会在用户的浏览器中显示,但是注释的内容会以源代码的方式传输到用户端,用户可以通过查看源代码的方式看到注释的内容。一般不建议使用。2JSP注释%--注释内容--%注释内容不会在用户的浏览器中显示,也不会以源代码的方式传输到用户,用户无论如何是看不到这类注释的。3脚本注释//单行注释/*多行注释*/由于JSP是将脚本运行的结果传送到客户端,因此脚本注释不会以源代码的方式传输到用户,用户无论如何是看不到这类注释的。4.动作标识Java语言是一种通用的语言,在JSP中是作为一种嵌入式的语言使用的,在JSP层次上还需要一些语句来定义JSP的动作,这就是动作标识。它采用严格的XML标签语法,嵌入在JSP文件中。1转发页面只有一个动作:formwardjsp:forwardpage=URL下面是二个例子:jsp:forwardpage=/util/errorPage.jspjsp:forwardpage=%=errPage%第一个例子是直接转向/util/errorPage.jsp页面,而第二个例子是先将要转向的页面保存在一个Java变量中,然后再输出到forward的page参数中.2包含文件或资源只有一个动作:include。jsp:include动作与include指令相似,同样是用于引用外部文件jsp:includepage=URLflush=true|false/flush属性指定在将页面包含进来之前是否清空主页面的输出流,默认值为false。include动作与include指令的区别include指令jsp:include动作语法格式%@includefile=”..”%jsp:includepage=”..”发生作用的时间编译期间请求期间包含的内容文件的实际内容页面的输出转换成的Servlet主页面和包含文件转换为一个Servlet主页面和包含页面转换为独立的Servlet影响主页面可以不可以发生更改时是否需要显式更改主页面需要不需要编译速度较慢-资源必须被解析较快执行速度稍快较慢——每次资源必须被解析灵活性较差——页面名称固定更好——页面可以动态指定3使用javabean这类动作包括jsp:useBean、jsp:getProperty和jsp:setProperty三个,后二者用于获取和设置JavaBean的属性。简单地说,Javabean是一个符合一定规范的类,在这个类中定义了一系列的getters和setters方法。在传统的编程中,函数调用时常常需要提供参数,函数结束时常常返回运行结果。而在使用Javabean时,调用方在调用Javabean的方法前,通过jsp:setProperty设置需要的参数,此时Javabean通过相应的setters方法接收传入的参数;调用方在调用Javabean的方法后,通过jsp:getProperty获取方法的运行结果,此时JavaBean通过相应的getters方法将结果输出到调用方例:packageorg.ngpage.bean;publicclassBeanDemo{privatedoubleradius;privatedoublearea;publicvoidcalArea(){area=Math.PI*radius*radius;}publicdoublegetArea(){calArea();returnarea;}publicdoublegetRadius(){returnradius;}publicvoidsetRadius(doubleradius){this.radius=radius;}}JavaBean中有与属性对应的setters和getters,用于与JSP进行交互:%@pagelanguage=javaimport=java.util.*pageEncoding=ISO-8859-1%htmlheadtitleBeanDemoPage/title/headbodyThisisabeandemo.brMethod1:theareais:jsp:useBeanid=democlass=org.ngpage.bean.BeanDemoscope=pagejsp:setPropertyname=demoproperty=radiusvalue=5//jsp:useBeanjsp:getPropertyname=demoproperty=area/brMethod2:theareais:jsp:setPropertyname=demoproperty=radiusvalue=6/${demo.area}/body/html上述页面将显示:Thisisabeandemo.Method1:theareais:78.53981633974483Method2:theareais:113.097335529232554处理插件此处插件是指在客户端运行的代码。如Javaapplet包括下述三个动作jsp:plugin:处理applet或bean两种插件。jsp:params:向插件提供参数,使用jsp:param设置每个参数。jsp:fallback:定义当浏览器不支持插件时显示的内容。例:%@pagelanguage=javaimport=java.util.*pageEncoding=UTF-8%htmlheadtitleAppletDemo/title/headbodyThisisanappletdemopage.brjsp:plugincode=DrawCirclecodebase=applettype=appletwidth=200height=200jsp:paramsjsp:paramname=radiusvalue=50//jsp:paramsjsp:fallbackTheBrowserdoesn'tsupportappletplugin./jsp:fallback/jsp:plugin/body/html内置对象内置对象作用request获取客户端信息response向客户端发送信息session保存用户信息application保存共公信息configServlet初始化时从容器中获取信息out缓冲区输出pageContext设置和获取JSP运行时的属性exception处理JSP运行时产生的错误和异常1.Response其内置对象中最常用的方法是sendRedirect()。它与forward动作有很相似功能!区别:1.forward重定向是在容器内部实的同一个Web应用程序的重定向,所以forward方法只能重定向到同一个Web应用程序中的一个资源,重定向后浏览器地址栏URL不变,而sendRedirect方法可以重定向到任何URL,因为这种方法是修改HTTP头来实现的,重定向后浏览器地址栏URL改变为新的UR。2.forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式则不能传递,因为两者不是同一个application。2.forward重定向将原始的HTTP请求对象(request)从一个servlet实例传递到另一个实例,而采用sendRedirect方式则不能传递,因为两者不是同一个application。3.基于第二点,参数的传递方式不一样。4.sendRedirect能够处理相对URL,自动把它们转换成绝对U

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功