版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1
4.1 JSP语法元素
4.2 JSP网页是Servlet
4.3 理解page指令标签
4.4 JSP常用内部对象4.5catalog模块网页动态版本
4.6 用JSP实现品种列表Category.jsp第4章–使用JSP2学习目标通过本章的学习,你可以:掌握JSP的基本语法
掌握JSP的常用内部对象的使用掌握如何使用JSP完成动态页面完成任务434.1JSP语法元素
4.1.1 指令标签
4.1.2 声明标签
4.1.3 脚本标签
4.1.4 表达式标签4.1.5
动作标签4.1.6
注释标签
JSP标签类型说明标签语法指令标签发给JSP引擎的翻译时执行的命令<%@Directives%>声明标签定义和声明方法和变量<%!JavaDeclarations%>脚本标签允许程序员在JSP页面自由编写Java代码<%SomeJavacode%>表达式标签在JSP页面输出的HTML中输出值的缩写格式<%=AnExpression%>动作标签给JSP引擎提供请求时指令<jsp:actionName/>注释标签为JSP页面添加注释<%--AnyText--%>44.1.1 指令标签指令标签向JSP引擎提供关于JSP页面的常规信息,共有3类指令:page,include和taglibpage指令向引擎提供关于JSP页面的总体属性。如<%@pagelanguage="java"%>告诉引擎JSP页面将使用java作为脚本语言include指令告诉引擎在当前页面引入另一个文件(如HTML,JSP等)的内容。如<%@includefile="copyright.html"%>taglib指令用于关联一个前缀和一个标签库。如<%@taglibprefix="test"uri="taglib.tld"%>54.1.1 指令标签(续)指令标签以<%@打头并以%>结束。三个指令的基本语法如下:
<%@pageattribute-list%><%@includeattribute-list%><%@taglibattribute-list%>关于指令标签,需要注意的是:标签名称,它们的属性,和属性值都是大小写敏感的值必须包含在一对双引号或单引号(英文)中一对双引号和以对单引号(英文)等价在等号和值之间不能有空格64.1.2声明标签声明标签定义或声明可以在JSP页面使用的方法和变量,如<%!intcount=0;%>声明了一个变量count,并且初始化其值为0。变量值只在页面第一次加载时初始化一次,并且在后续的页面请求中保持它的值。声明标签总是以<%!开始,以%>结束。它可以包含任意多合法的Java声明语句。如,下面的代码使用一个声明标签声明了一个方法和一个变量:<%!Stringcolor[]={"red","green","blue"};StringgetColor(inti){returncolor[i];}%>74.1.2声明标签(续)也可以将上面的2个Java声明语句放在2个JSP声明标签中,代码如下:
<%!Stringcolor[]={"red","green","blue"};%><%!StringgetColor(inti){returncolor[i];}%>需要注意的是,由于声明标签包含Java声明语句,所以变量声明语句必须以分号结束84.1.3脚本标签脚本标签是嵌入到JSP页面的Java代码片段,如counter.jsp中的JSP脚本:脚本标签总是以<%开始,以%>结束。需要注意的是,脚本标签内的代码必须是有效的Java代码,如,下面的代码是错误的,因为它没有使用分号结束一个打印语句<%out.print(count)%><%count++;%>94.1.4表达式标签表达式标签是Java语言表达式的占位符,如<%=count%>
JSP表达式标签总是以<%=开始以%>结束。与表达式标签不同,表达式不能用分号结尾,如<%=count;%>是错误的可以使用表达式输出任何对象或原始数据类型(int,boolean,char,等.)的值。也可以使用表达式输出任何算术、逻辑表达式和方法调用返回的值104.1.4表达式标签(续)<%!intanInt=3;booleanaBool=true;IntegeranIntObj=newInteger(3);FloataFloatObj=newFloat(12.6);Stringstr="somestring";StringBuffersBuff=newStringBuffer();chargetChar(){return'A';}%>合法表达式说明<%=500%>一个整数字面值<%=anInt*3.5/100-500%>算术表达式<%=aBool%>布尔变量<%=false%>布尔字面值<%=!false%>布尔表达式<%=getChar()%>返回字符值的方法<%=Math.random()%>返回double的方法<%=aVector%>Vector对象<%=aFloatObj%>Float对象<%=aFloatObj.floatValue()%>返回float的方法<%=aFloatObj.toString()%>返回String的方法不合法表达式说明<%=aBool;%>不能使用分号<%=inti=20%>不能在表达式中声明类型<%=sBuff.setLength(12);%>方法不返回任何值,用了分号114.1.5
动作标签
动作标签是给JSP引擎的命令,在页面执行时,引导引擎完成某个任务。如<jsp:includepage="copyright.jsp"/>指示引擎在本页面的输出中包含另一个JSP页面copyright.jsp的输出共有7个动作标签:动态加载动作标签jsp:include跳转动作标签jsp:forward传递参数动作标签jsp:param与Java插件相互作用的标签jsp:plugin使用JavaBean的动作标签jsp:useBean、jsp:setProperty和jsp:getProperty124.1.6
注释标签注释标签<%--任何注释语句--%>不会影响JSP也面的输出,只是给页面增加注释JSP引擎会丢掉<%--和--%>之间的内容,使用它可以注释掉大片JSP代码(在客户端浏览器中看不到)13小测试问题:下面哪一个指令标签是有效的?a<%pagelanguage="java"%>b<%!pagelanguage="java"%>c<%@pagelanguage="java"%>
答案:C。问题:下面代码有什么错误?<!%inti=5;%><!%intgetI(){returni;}%>答案:声明标签以<%!开始而不是<!。14小测试(续)问题:假设myObj是一个对象,m1()是myObj的有效方法,下面那些是合法的JSP代码,哪些是不合法的?a<%myObj.m1()%>b<%=myObj.m1()%>c<%=myObj.m1()%>d<%=myObj.m1();%>
答案:不合法的有a,c,d,如果m1()方法没有返回值(为void),则b也不合法。154.2.1JSP网页是Servlet虽然JSP页面在结构上像HTML,但是实际上它是Servlet。JSP引擎解析JSP文件并且创建一个对应的Java文件。这个Java文件声明一个Servlet类,这个类的成员与JSP文件中的元素直接对应。JSP引擎然后编译这个类,加载它,并且像Servlet一样执行它。这个Servlet的输出会发送给客户端4.2.2理解转化单元JSP页面可以包含其他JSP或HTML页面的内容(使用include指令)。当JSP引擎产生Java代码时也会将包含的页面的内容插入到产生的Servlet中这些转化到一个Servlet中的内容叫做一个转化单元。有些JSP标签会影响整个转化单元而不只是影响它定义的页面。这些标签包括:page指令标签影响整个转化单元变量定义标签在一个转化单元中只能初始化一次。如果一个变量在JSP页面中已经声明,就不能在使用include指令标签包含的页面中再次声明,因为2个页面将组成一个转化单元。<jsp:useBean>动作标签不能在同一个转化单元中声明同一个bean2次164.3理解page指令标签属性page指令标签通知JSP引擎JSP页面的总体属性指令标签应用于整个转化单元,不只是应用定义它的页面17属性名说明默认值Import由逗号隔开的在jsp页面要用到的java类和表列表java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*;sessionBoolean值,表示jsp页面是否参与会话trueerrorPage指定代表本页面处理错误的另一个jSP页面的URLnullisErrorPage说明本页面是否可以处理错误的boolean值falselanguage任何JSP引擎支持的语言javaextends任何实现javax.servlet.jsp.JspPage的有效类依赖于实现buffer规定输出缓冲区的大小(以kb为单位),如果不要求缓冲,设为none依赖于实现autoFlush定义缓冲满时是否flush的boolean值trueinfo任何关于本页面的信息依赖于实现contentType指定本页面的MIME类型和输出的字符编码text/html;charset=ISO-8859-1pageEncoding指定本页面的字符编码ISO-8859-1184.4.JSP常用内部对象
内部对象(又叫隐式对象)是JSP页面可直接使用的预定义变量内部对象包括request、out、session
、response、exception、pageContext、application、page和config其中常用内部对象是
request、out、session
194.4.1
request与请求参数
request是类java.servlet.HttpServletRequest的一个对象当客户端请求一个JSP页面时,JSP容器会将请求信息的内容包装在request对象中通过调用request的方法可得到请求信息的内容请求头信息系统信息请求的方式请求的参数名和参数值等204.4.1
request与请求参数(续)请求参数就是追加到URL上的一个名称-值对。参数以问号(?)开始并采用name=value形式,参数之间用(&)符隔开
productid=FI-FW-01
请求页面是Product.jsp,有2个参数catid和productid,值分别是FISH和FI-FW-01。214.4.1
request与请求参数(续)传递请求参数主要采用以下2种方式在浏览器的地址栏中请求页面的URL后直接追加通过表单域传递,参数值为用户在对应表单域中录入的值<Formaction=><inputtype=textname=catid><!--名为catid的文本框--><inputtype=textname=productid><!--名为productid的文本框--><inputtype=submit><!--提交按钮--></FORM>224.4.1
request与请求参数(续)调用request的相关方法:getParameterNames()得到所有请求参数的名称,如catid,productid通过getParameter()和getParameterValues()得到请求参数值,如“FISH”和“FW-FI-01”234.4.2
outout对象是类javax.servlet.jsp.jspWriter的一个对象jspWriter类提供方法print()和println(),用于产生到浏览器的输出
244.4.3
sessionsession是类javax.servlet.http.HttpSession的一个对象session指的是客户端与服务器端的一次会话,会话从客户连接到服务器开始,直到与服务器断开连接为止,在这个期间都可以使用对应这次会话的session对象的属性与方法经常用来跟踪用户的信息调用方法setAttribute()将数据存储到会话中调用方法getAttribute()方法来访问会话中的数据
254.5宠物分类展现网页动态版本开发准备
4.5.1 实现思路
4.5.2 在web.xml中设置欢迎页面
264.5.1
实现思路
在静态版本的基础上进行修改通过JSP标记在静态版本的基础上增加动态内容实现各页面的动态版本使用include指令复用重复代码主要是复用网页公共顶部IncludeTop.jsp和公共底部IncludeBottom.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><%@includefile="mon/IncludeTop.jsp"%>Main_body.jsp或Category_body.jsp或Product_body.jsp或Item_body.jsp代码<%@includefile="mon/IncludeBottom.jsp"%>274.5.1
实现思路(续)各页面通过传递不同的请求参数显示不同的内容对于Category.jsp来说,如果知道分类编号catid,则可以通过分类编号查询数据库获得该分类品种列表页面所需要的所有数据通过为Category.jsp传递分类编号,来显示不同分类的品种列表,如Category.jsp?catid=FISH表示显示鱼类的品种信息,Category.jsp?catid=CATS表示显示猫类的品种信息其他页面(Product.jsp和Item.jsp
)类似处理284.5.2在web.xml中设置欢迎页面
欢迎页面,就是web应用的默认访问页面,在Web应用项目的配置文件web.xml中设置<!--配置欢迎文件--> <e-file-list> <e-file>index.jsp<e-file> <e-file-list>
在mypetstore项目的web.xml文件中增加上述配置信息,可以将WebRoot下的index.jsp设置为欢迎页面。如果在浏览器的地址栏中只输入就可打开该页面294.3.2在web.xml中设置欢迎页面(续)index.jsp代码如下:<%@pagecontentType="text/html;charset=UTF-8"%><linkrel="StyleSheet"href="css/jpetstore.css"type="text/css"media="screen"/><divid="Content"><h2>欢迎来到宠物商城</h2><p><ahref="catalog/Main.jsp">进入宠物商城</a></p><p><sub>源自开元项目JPetstore</sub></p><!--<sub></sub>标记说明内含文本要以下标的形式显示,比当前字体稍小--></div>304.6用JSP实现页面Category.jsp
4.6.1 网页公共顶部文件IncludeTop.jsp
4.6.2 网页公共底部IncludeBottom.jsp
4.6.3 用JSP实现Category.jsp314.6.1 公共顶部文件IncludeTop.jsp所有页面共享的顶部文件page指令指定页面内容类型和编码:<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%>完整页面的前面代码<html><head>….</head><body>顶部内容主要由Header分区构成,Header分区中包含Logo,Menu,Search和QuickLinks4个子分区,即:<divid="Header"><divid=“Logo”>显示Logo图片</div><divid=“Menu”>显示购物车,我的账户等</div><divid=“Search”>显示查找表单</div><divid=“QuickLinks”>显示鱼,狗,爬行类,猫,鸟等页面超链接</div><div><divid=“content”>4.6.1 公共顶部文件IncludeTop.jsp(续)与系统目标界面对比,发现需要设置4个层的位置,菜单Menu层的前景色(包括文本和超链接)统一,查找层Search文本框和按钮的特殊格式,并且整个页面背景需要设置深灰色背景(#444),主体部分即content层采用白色背景(#FFF)。在jpetstore.css中完成设置324.6.1 公共顶部文件IncludeTop.jsp(续)body{margin:0ex2ex0ex2ex;padding:0ex;background-color:#444;}
#Content{margin:0;padding:0ex0ex0ex0ex;width:99%;background-color:#FFF;}334.6.1 公共顶部文件IncludeTop.jsp(续)#Logo{width:33%;float:left;background-color:#000;height:11ex;}
#Menu{width:33%;float:left;background-color:#000;height:11ex;}
#Menu,#Menua,#Menua:link,#Menua:visited,#Menua:hover{color:#eaac00;text-decoration:none;}
344.6.1 公共顶部文件IncludeTop.jsp(续)#Searchinput{border-width:.1ex.1ex.1ex.1ex;border-style:solid;border-color:#aaa;background-color:#666;color:#eaac00;}
#QuickLinks{text-align:center;background-color:#FFF;width:99%;}354.6.1 公共顶部文件IncludeTop.jsp(续)在IncludedTop.jsp文件前添加如下代码:<LinkRel="STYLESHEET"Href="../css/jpetstore.css"Type="text/css">36374.6.2 公共底部文件IncludeBottom.jsp建立公共底部HTML文件IncludeBottom.jsp,代码如下<%@pagelanguage="java"contentType="text/html;charset=UTF-8"%><LinkRel="STYLESHEET"Href="../css/jpetstore.css"Type="text/css"></div>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度新型农用拖拉机进口代理销售合同4篇
- 二零二五年度ktv室内装修消防设计审核合同3篇
- 二零二五年度教育培训机构退款合同协议正规范本2025年版
- 二零二五年度WPS文档定制化租赁合同修订版3篇
- 二零二五年度充电桩安装工程节能评估合同4篇
- 2025年个人住宅买卖合同(含物业交割)2篇
- 2025年度智慧停车场运营管理承包合同4篇
- 2025年度水暖工程安全质量监督及验收合同
- 二零二五年度房产抵押贷款风险管理与服务合同4篇
- 2025年度暖气片销售区域代理合同模板
- 妊娠合并低钾血症护理查房
- 煤矿反三违培训课件
- 向流程设计要效率
- 安全文明施工的管理要点
- 2024年中国航空发动机集团招聘笔试参考题库含答案解析
- 当代中外公司治理典型案例剖析(中科院研究生课件)
- 动力管道设计手册-第2版
- 2022年重庆市中考物理试卷A卷(附答案)
- Python绘图库Turtle详解(含丰富示例)
- 煤矿机电设备检修技术规范完整版
- 榆林200MWp并网光伏发电项目可行性研究报告
评论
0/150
提交评论