第九章JSP基础(二)脚本、指令与动作的使用2回顾JSP的英文全称是JavaServerPage,是一种Java服务器端编程技术之一,用于创建动态网页JSP的页面由静态内容、JSPScriptlet、JSP表达式、申明、JSP指令和注释等组成JSP生命周期包括转换、编译和执行阶段JSP页面可使用Dreamweaver和MyEclipse8.5等开发工具来创建3目标理解JSP脚本元素的组成及语法使用JSP脚本元素进行JSP编程理解JSP指令的组成及语法使用JSP各指令进行JSP编程4JSP脚本元素JSP脚本元素表达式Scriptlet声明JSP脚本元素包括:5JSP表达式2-1表达式的概念表达式是对数据的表示,系统将其作为一个值进行计算和显示表达式在JSP页面中的表现形式%=Java表达式%6JSP表达式2-2bodyh1JSP表达式/h1bPI的值:/b%=Math.PI%br/b100,99中最大的值:/b%=Math.max(100,99)%br/b100,99中最小的值:/b%=Math.min(100,99)%br/b3+2-5的值:/b%=3+2-5%br/b(3+2)==5的值:/b%=(3+2)==5%br/b(3+2)!=5的值:/b%=(3+2)!=5%br//body表达式演示:示例1使用JSP表达式进行JSP编程7JSPScriptlet2-1JSPScriptlet概念JSPScriptlet就是在JSP页面里嵌入一段Java代码JSPScriptlet在JSP页面中的表现形式%Java代码%8JSPScriptlet2-2bodyh1以直角三角形的形式显示数字/h1%for(inti=1;i10;i++){for(intj=1;j=i;j++){out.println(j);}out.println(br/);}%/body演示:示例2使用JSPScriptlet进行JSP编程9JSP声明3-1JSP声明的概念JSP声明就是在JSP页面中声明Java方法或变量等JSP声明在JSP页面中的表现形式%!Java代码%10JSP声明3-2使用JSP声明进行JSP编程需求:某系统计算的金额中有两种形式,一种是带有两位小数的,另一种是整数,现在要求你在JSP页面将不带小数的金额转换为带两位小数的金额。分析:1、利用JSP声明,声明一个方法,将整数转换为两位小数2、利用JSPScriptlet调用声明的方法,转换金额2、在JSP页面利用表达式将转换后的金额显示出来11JSP声明3-3使用JSP声明进行JSP编程%!//申明一个常量finalStringSEPARATOR=.;//声明一个方法publicStringcovertAmountWithSeparator(Stringmoney){intindex=money.indexOf(SEPARATOR);Stringstr=money;if(index==-1)str=money+.00;returnstr;}%演示:示例312JSP指令元素指令元素主要用于转换阶段提供整个jsp页面的相关信息,指令不会产生任何的输出到当前的输出流中13JSP指令JSP指令pageincludetaglibJSP指令的语法为:%@指令名称属性1=属性值1属性2=属性值2…属性n=属性值n%JSP指令包括:14page指令2-1page指令属性languagepage指令用于设置JSP页面的属性importbuffererrorPageisErrorPagelanguage–定义要使用的脚本语言import–将包和方法导入ScriptletisErrorPage–表示当前页面能否作为错误页面errorPage–定义处理异常的JSP页面buffer–设置用来存储客户端请求的缓冲区的大小15page指令2-2%@pagelanguage=Javaimportjava.util.*buffer=8kberrorPage=error.jspisErrorPage=false%htmlheadtitle测试page指令/title/headbodyh1这是一个测试页面/h1/body/htmlpage指令属性16include指令3-1include指令用于在jsp页面中静态包含一个文件,该文件可以是jsp页面,HTML页面,文本文件。使用了include指令的jsp页面在转换时,jsp容器会在其中插入所包含文件的文本或代码。include指令语法%@includefile=”文件名”%17include指令3-2htmlheadinclude指令测试页面/headbody%@includefile=/test.html%/body/htmlinclude指令用法要嵌入JSP页面的文件18include指令3-3使用include指令进行JSP编程%@pagelanguage=java%%@includefile=head.jsp%htmlheadtitle/title/headbodybrbrh4align=“center”你好,欢迎来到这里!/h4/body/html演示:示例419taglib指令2-1taglib指令可以让JSP页面使用标签taglib指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀,而去利用标签的前缀去使用标签库表述文件中的标签语法%@tagliburi=”标签库表述符文件”prefix=”前缀名”%20taglib指令2-2taglib指令的使用htmlbody%@tagliburi=/mytaglib.tldprefix=mytags%/body/htmlJSP页面在根目录中搜索mytaglib标签库描述符文件,而mytags前缀将mytaglib中的标签嵌入JSP页面关于标签的详细情况,后续课程做详细介绍例如:JSTL标签库的导入%@tagliburi==c%211jsp:include动作标记include动作标记用来在JSP页面中动态包含一个文件,包含页面程序与被包含页面程序是彼此独立的,互不影响。jsp:include标记的一般使用格式:jsp:includepage=文件的url/或jsp:includepage=文件的urljsp:param子标记//jsp:includeJsp动作标记-jsp:include动作标记221jsp:include动作标记jsp:include动作标记与include指令标记的区别:包含文件的处理时间和方式不同:include指令标记插入的文件在页面转译时就合并到一起了。而jsp:include指令标记插入的文件,在当前页面执行时再将被包含文件插入。Include:被包含文件与当前页面组合而成的新页面必须符合JSP的语法和逻辑规则,由于是提前合并编译;而jsp:include动作标记被包含的文件语法和逻辑独立于当前页面,单独被JSP引擎编译。Include执行快;jsp:include慢,但可以利用param子标记传递参数,使用更灵活。Jsp动作标记-jsp:include动作标记232jsp:param动作标记jsp:param动作标记不能单独使用,必须作为jsp:include、jsp:forward、jsp:plugin标记的子标记使用,并为它们提供参数。jsp:param动作标记的使用格式如下:jsp:paramname=“参数名字”value=“指定的参数值“/其中:name是参数名字、value是参数的值,当该标记作为jsp:include的子标记时,“name—value”为页面之间提供参数传递。Jsp动作标记-jsp:param动作标记242jsp:param动作标记inlude与param子标记使用示例。ch9_8.jsp文件内容:%@pagecontentType=text/html;charset=GB2312%htmlheadtitle这是Include动作标记示例/title/headbodybgcolor=cyan%doubledx=3.14,dy=4.3;%p主页面信息:加载ch9_1.jsp文件,求两个数的最大值:下面开始加载。jsp:includepage=ch9_1.jspjsp:paramname=dxvalue=%=dx%/jsp:paramname=dyvalue=%=dy%//jsp:includep主页面信息:现在已经加载完毕。/p/body/htmlJsp动作标记-jsp:param动作标记25ch9_1.jsp文件内容:%@pagecontentType=text/html;charset=GB2312%%!publicStringgetMax(doublex,doubley){if(xy){doubletemp;temp=x;x=y;y=x;}return(大数是:+y+,小数是:+x);}%Jsp动作标记-jsp:param动作标记26%Stringdx=request.getParameter(dx);Stringdy=request.getParameter(dy);doublex=Double.parseDouble(dx);doubley=Double.parseDouble(dy);%htmlbodyp从这里开始是被加载文件的输出:br传给加载文件的参数dx的值是:%=dx%,dy的值是:%=dy%。brgetMax方法调用结果:%=getMax(x,y)%/body/htmlJsp动作标记-jsp:param动作标记273、jsp:forward动作标记jsp:forward动作允许将用户请求定位到其它页面,基本的语法格式是:jsp:forwardpage={要转向的页面url|%=表达式%}/或者jsp:forwardpage={要转向的页面url|%=表达式%}jsp:paramname=属性名value=属性值//jsp:forwardJsp动作标记-jsp:forward动作标记28ch9_9.jsp文件内容:%@pagecontentType=text/html;charset=GB2312%%@pageimport=java.util.*%htmlheadtitleJSP:FORWARD使用示例/title/headbodyp这是第一个页面的输出/p%Jsp动作标记-jsp:forward动作标记29if(Calendar.HOURCalendar.AM){%jsp:forwardpage=ampm.jspjsp:paramname=hellovalue=Gooda.m.!//jsp:forward%}else{%jsp:forwardpage=ampm.jspjsp:paramname=hellovalue=Goodp.m.!//jsp:forward%}%/body/htmlJsp动作标记-jsp:forward动作标记304jsp:useBean相关动作