第4章-JSP语法
JSP第四章课后题答案和实验报告

第四章实验报告4.7.1 实现日历(1)日历bean,CalcendarBean.java 实现年、月、日等相关属性的设置和获取,代码如下:package beans;import java.util.*;public class CalcendarBean{Calendar calendar = null;intyear,dayOfMonth,dayOfYear,weekOfYear,weekOfMonth,dayOfWeek,hour,minute,second;private String day;String date;String time;public CalcendarBean(){calendar=Calendar.getInstance();Date time = new Date();calendar.setTime(time);}public int getYear(){return calendar.get(Calendar.YEAR);}public String getMonth(){int m=1+calendar.get(Calendar.MONTH);String months[]={"1","2","3","4","5","6","7","8","9","10","11","12"};if (m>12)return "0";return months[m+1];}public String getDay(){int n = getDayOfWeek();String days[]={"日","一","二","三","四","五","六"};if (n>7)return "星期?";return days[n];}public String getDate(){return getYear() + "/" + getMonth() + "/" + getDayOfMonth();}public String getTime(){return getHour() + ":" + getMinute() + ":" + getSecond();}public int getDayOfMonth(){return calendar.get(Calendar.DAY_OF_MONTH);}public int getDayOfYear(){return calendar.get(Calendar.DAY_OF_YEAR);}public int getWeekOfYear(){return calendar.get(Calendar.WEEK_OF_YEAR);}public int getWeekOfMonth(){return calendar.get(Calendar.WEEK_OF_MONTH);}public int getDayOfWeek(){return calendar.get(Calendar.DAY_OF_WEEK)-1;}public int getHour(){return calendar.get(Calendar.HOUR_OF_DAY);}public int getMinute(){return calendar.get(Calendar.MINUTE);}public int getSecond(){return calendar.get(Calendar.SECOND);}}(2)日历的显示由calendar.jsp 通过调用javabean来实现显示,代码如下:<%@ page contentType="text/html;charset=GB2312" %><%@ page import="beans.CalcendarBean" %><jsp:useBean id="cal" class="beans.CalcendarBean" scope="session" ></jsp:useBean><td align="center"><font color="red"><jsp:getProperty name="cal" property="year"/></font>年<font color="red"><jsp:getProperty name="cal" property="month"/></font>月<font color="red"><jsp:getProperty name="cal" property="dayOfMonth"/></font>日星期<font color="blue"><jsp:getProperty name="cal" property="day"/></font></td><BR>当前时间为<jsp:getProperty name="cal" property="time"/><BR>今天是今年的第<jsp:getProperty name="cal" property="dayOfYear"/>天<BR>本周是今年的第<jsp:getProperty name="cal" property="weekOfYear"/>周<BR>本周是本月的第<jsp:getProperty name="cal" property="weekOfMonth"/>周(3)实现日历显示:显示结果 4.7.1-14.7.2实现留言板(1)留言板javabean,NoteBean.java主要实现作者、标题、和他们的相关属性的设置和获取,代码如下:package beans;public class NoteBean{public String title;public String author;public String content;public String getTitle(){return title;}public void setTitle(String title){this.title=title;}public String getAuthor(){return author;}public void setAuthor(String author){this.author=author;}public String getContent(){return content;}public void setContent(String content){this.content=content;}}(2)留言板的添加,通过insert.jsp来实现,包括标题、作者、内容,代码如下:<%@ page contentType="text/html; charset=gb2312" language="java" %><center><h1>留言管理</h1><hr><br><form action ="insert_do.jsp" method="post"><table><tr><td colspan="3">添加新留言</td></tr><tr><td>标题:</td><td><input type="text" name="title"></td></tr><tr><td>作者:</td><td><input type="text" name="author"></td></tr><tr><td>内容:</td><td><textarea name="content" cols="30" rows="6"></textarea></td></tr><tr><td colspan="2"><input type="submit" value="添加"><input type="reset" value="重置"></td></tr></table></form></center>显示结果 4.7.2-1(3)留言板通过insert-do.jsp来实现,代码如下:<%@ page contentType="text/html; charset=gb2312" %><%@ page import="beans.NoteBean"%><center><h1>添加的内容如下所示</h1><hr><br><jsp:useBean id="sb" class="beans.NoteBean" scope="session" ></jsp:useBean><jsp:setProperty name="sb" property="*"/><h1>标题:<jsp:getProperty name="sb" property="title" /></h1><h1>作者:<jsp:getProperty name="sb" property="author" /></h1><h1>内容:<jsp:getProperty name="sb" property="content" /></h1></center>(4)执行结果如图:显示结果 4.7.2-24.7.3实现购物车(1)购物车通过JavaBean,ShopBean.java实现,用一个哈希表对象list存放购物的商品,包括名称、数量、单位属性的设置和获取,代码如下:package beans;import java.util.*;public class ShopBean{ Hashtable list=new Hashtable();String item="";int mount=0;String unit="";public void Carl(){ }public void setItem(String newItem){ item=newItem;}public void setUnit(String newUnit){ unit=newUnit;}public void setMount(int m){ mount=m;}public Hashtable show(){String str="productname:"+item+" count:\n"+mount+" unit:\n"+unit;list.put(mount,str);return list;}}(2)添加商品通过car.jsp来实现,代码如下:<%@ page contentType="text/html;charset=GB2312"%><%@ page import="java.util.*"%><%@ page import="beans.ShopBean"%><jsp:useBean id="shop" class="beans.ShopBean" scope="session" > </jsp:useBean><p>这里是百货广场,选择您要购买的商品添加到购物车:<FORM action="show.jsp" method=post name=form><Select name="item" value="没选择"><Option value="电视机">电视机<Option value="苹果">苹果<Option value="可口可乐">可口可乐<Option value="牛奶">牛奶<Option value="茶叶">茶叶</Select><p>输入购买的数量:<Input type=text name="mount"><p>选择计量单位:<INPUT type="radio" name="unit" value="个">个<INPUT type="radio" name="unit" value="公斤">公斤<INPUT type="radio" name="unit" value="台">台<INPUT type="radio" name="unit" value="瓶">瓶<Input type=submit value="提交添加"></FORM>显示如图 4.7.3-1(3)显示添加商品的信息通过show.jsp来实现,代码如下:<%@ page contentType="text/html;charset=GB2312"%><%@ page import="java.util.*"%><%@ page import="beans.ShopBean"%><jsp:useBean id="shop" class="beans.ShopBean" scope="session" > </jsp:useBean><jsp:setProperty name="shop" property="*" /><% shop.show(); %><P>您的购物车有如下商品:<%Hashtable list=shop.show();Enumeration enuml=list.elements();out.print("123");while(enuml.hasMoreElements()){out.print("456");String goods=(String)enuml.nextElement();byte b[]=goods.getBytes("ISO-8859-1");goods=new String(b);out.print("<BR>"+goods);}%>显示如图 4.7.3-2。
JSP Web应用开发案例教程课件第四章

实例代码如下:
4.1 request对象
15
4.1.3 使用request对象获取用户提交的信息
<%@page contentType="text/html;charset=gb2312"%>
A request对象 B response对象 C out对象 D application对象 E session对象
5
4.1 request对象
4.1 request对象
6
4.1.1 request对象的常用方法
在JSP中,内置对象request封装了用户提交到服务器端的数据,调用该对象的相关方 法可以获取封装的信息。request对象的常用方法有很多,下面简单介绍一下。
4.1 request对象
13
4.1.2 request对象的应用
程序运行效果如图4-1所示。
图4-1 使用request对象获取的信息
4.1 request对象
14
4.1.3 使用request对象获取用户提交的信息
使用request对象获取用户信息最常用的 方法是getParameter(String s),下面通 过实例简单介绍。
while(enu.hasMoreElements()){ String Name = (String)enu.nextElement(); String value = (String)request.getParameter(Name);
} %>
</body> </html>
chap04-JSP语法基础

Java Web 开发技术 第四章
4.2 JSP元素 <jsp:include>动作元素 <jsp:include>动作元素将page属性指定页面内 容动态包含到当前页面。<jsp:include>动作元素 使用语法格式如下:
• <jsp:include page="relativeURL" flush="true|false"> • 其中page代表一个相对路径,即所要包含进来的文 件位置,所包含文件可以是静态文件或者动态文件,
Java Web 开发技术 第四章
4.3 JSP内置对象
内置对象详细介绍
JSP内置对象介绍 内置对象 类型 javax.servlet.http.H ttpServletRequest 范围 说明 request对象用来封装客户端的请求信息,通过该对象可以获得客户 端请求信息,然后做出响应。request对象是HttpServletRequest类的 实例,具有请求作用域,即完成客户端的请求之前,该对象一直有 效。 response对象封装了响应客户请求的有关信息,它是 HttpServletResponse类的实例。response对象具有页面作用域,即访 问一个页面时,该页面内的response对象只能对这次访问有效,其 它页面的response对象对当前页面无效。 session对象指的是客户端与服务器的一次会话,从客户端连到服务 器的一个Web应用开始,直到客户端与服务器断开连接为止。 Session对象HttpSession类的实例,具有会话作用域。 application对象实现了用户间数据的共享,可存放全局变量。它开 始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直 存在;这样在用户的前后连接或不同用户之间的连接中,可以对此 对象的同一属性进行操作;在任何地方对此对象属性的操作,都将 影响到其他用户对此的访问。服务器的启动和关闭决定了 application对象的生命。application对象是ServletContext类的实例。 Java Web 开发技术 第四章
第4章 JSP内置对象

P
例:input1.html
J
s
如何接收多个同名参数?
P
例:request02.html
J
s
P
原因:在整个操作过程中复选框的内容只能得到一个,因 为getParameter()方法,只能接收一个参数的内容,如 果想要接收多个参数,则必须使用: public String[] getParameterValues(String name) 此方法返回一个数组,表示接收同名的一组参数。
§4.1 request对象
J 在JSP中,内置对象request封装了用户请求页面时所提 交的信息,该对象调用相应的方法可以获取封装的信息.即
s
request对象可以获取用户提交的信息。
用户在请求JSP页面时,通常会使用HTML表单提交信息,表 单的一般格式是:
<FORM method=get|post action="提交信息的目的地页面"> 提交手段
J
getParameterNames()方法
此方法可以取得表单提交的所有参数名称
例:request04.html
s
P
思考:如何同时显示复选框的全部内容?
request05.jsp
4.1.5
处理HTML标记_<Select>、<Option>格式
J
下拉式列表和滚动列表通过<Select>和<Option>标记来定义。基本格式 为:
4.1.3
J
常用方法举例
可以用内置对象request对象来获取请求所提交的各类信 息,request对象的常用方法如下:
getProtocol():获取请求使用的通信协议,如http/1.1等。 getServletPath():获取请求的JSP页面所在的目录。 getContentLength():获取HTTP请求的长度。 getMethod():获取表单提交信息的方式,如POST或GET。
4 JSP基础

JAVA WEB 编程 ——JSP东软 I T 人才实训中心基础Copyright 2008 By Neusoft Group. All rights reserved 3 Sept. 2008© Neusoft Confidential主要内容•JSP 的运行原理•JSP 页面代码的分类•静态H TML 内容的处理•JSP 脚本元素–JSP 注释–JSP 程序片–JSP 声明–JSP 表达式•Web 应用中的乱码问题3 Sept. 2008Confidential3 Sept. 2008© Neusoft Confidential JSP基本原理JSP基本原理•思考–Servlet 的缺点3 Sept. 2008Confidential3.1 JSP基本原理(续)•JSP :JavaServer Pages•JSP 的目标:支持表示逻辑与业务逻辑的分离–简化表示逻辑的开发–明确开发人员的职责分工•表示逻辑:Web 开发人员不需掌握•业务逻辑:Java 开发人员不需使用•JSP 的理想–不包含业务逻辑–不包含Java 代码3 Sept. 2008 ConfidentialJava Web 页面3.1 JSP基本原理(续)•创建并运行第一个•如何执行–首先应该将中JSPJSP-login.jspJSP 正确的部署到Tomcat 服务器某一个应用当–JSP 文件放到–不需要在WEB 应用的目录下web.xml 文件中编写任何内容–Web 应用目录结构体系必须完整,至少要描述出根目录接口的继承关系如下图<<Interface>>(from jsp)jspDestroy()<<Interface>> HttpJspPage (from jsp)_jspService()方法说明创建实例后被调用处理请求时被调用生存期结束前被调用3.1 JSP基本原理(续)•JSP 生命周期–翻译–编译–加载类–实例化类–jspInit() 调用–_jspService() 调用–jspDestroy() 调用3 Sept. 2008Confidential3.1 JSP基本原理(续)•在JSP 处理请求之前,JSP 页面被翻译为3 Sept. 2008Confidential Servlet 源文件3.1 JSP基本原理(续)Java 的字节码文件•Servlet 源文件被编译成3 Sept. 2008Confidential• 载入3 Sept. 2008ConfidentialServlet 类• 创建3 Sept. 2008ConfidentialServlet 的实例• Web 容器调用实例的3 Sept. 2008 ConfidentialjspInit 方法;准备阶段完成•Web 容器调用3 Sept. 2008Confidential _ jspService 方法处理相应的请求3.1 JSP基本原理(续)•当需要销毁实例时,Web 容器调用3 Sept. 2008 ConfidentialjspDestroy方法3.1 JSP基本原理(续)•小结–JSP 运行原理–JSP 运行的1-7 步是必须的吗?–为什么第一次运行JSP 时会很慢?3 Sept. 2008Confidential3.2 JSP标签•JSP 页面代码的分类–静态HTML 内容–JSP 的脚本元素–JSP 标准动作–JSP2.0 的表达式语言–JSP 的自定义标签3 Sept. 2008Confidential3.2 JSP标签(续)•静态HTML 的语法格式–HTML 的语法•示例–<title>My JSP</title> •处理:–原封不动地被写入响应的主体中–翻译:被翻译成输出流的语句形式,插入到_jspService 方法中,静态–执行与JSP 代码的顺序相关3 Sept. 2008 Confidentialhtml 内容作为输出的参数3.2 JSP标签(续)•静态HTML 的JSP 代码示例<title>My JSP</title>•示意翻译public void _jspService(HttpServletRequest req,HttpServletResponse res)throws …{……out.println( “<title>My JSP</title>” )……}Confidential3.2 JSP 标签(续)•小结– JSP 页面代码的分类 – 静态 HTML 内容 – JSP 的脚本元素• JSP Scriptlet • JSP 表达式 • JSP 声明 • JSP 注释 • JSP 指令3 Sept. 2008 Confidential<% javacode %><%= expression %> <%! declaration %> <%-- comment --%> <%@ directive %>3.3 JSP脚本元素•JSP 的脚本元素语法–<% scripting element %>•脚本元素的分类–JSP Scriptlet <% javacode %> –JSP 表达式<%= expression %>–JSP 声明<%! declaration %>–JSP 注释<%-- comment --%>–JSP 指令<%@ directive %>3 Sept. 2008Confidential3.3 JSP脚本元素(续)•Java Scriptlet 的语法格式–<% JavaCode %>•示例–<% String user=request.getParameter(“name”); %> •处理:–按照J ava 的规范执行Java 代码–翻译:法中–执行与3 Sept. 2008Confidential Java 代码在翻译时被直接插入到JSP 代码的顺序相关_jspService() 方3.3 JSP脚本元素(续)•Java Scriptlet 的JSP 代码示例<% String user=request.getParameter(“name”); %> •示意翻译public void _jspService(HttpServletRequest req, HttpServletResponse res) throws ……{……String user=request.getParameter(“name”);……}3 Sept. 2008Confidential3 Sept. 2008isErrorPage=”True” %> 时有效3.3 JSP脚本元素(续)%>•JSP 表达式的语法格式–<%= Java 表达式•示例–<%= new java.util.Date() %>•处理:–Java 表达式的值被写入响应的主体中–翻译:被翻译成输出流的语句形式,插入到_jspService 方法中,J ava 表达式的值作为输出参数ConfidentialJSP 代码的顺序相关•JSP 表达式的JSP 代码示例<%= new java.util.Date() %>•示意翻译public void _jspService(HttpServletRequest req,HttpServletResponse res)throws ……{……out.println( new java.util.Date() );……}3 Sept. 2008 Confidential•JSP 声明的语法格式–<%! Java 声明•示例%>–<%! int counter = 0; %>–<%! public String getName(HttpServletRequest request) {return request.getParameter(“name”);} %>•处理:–按照J ava 的规范执行Java 代码–翻译:–执行与3 Sept. 2008 Confidential Java 声明在翻译时被直接插入到类中JSP 代码的顺序相关• JSP 声明的JSP 代码示例<%! int counter = 0; %><%! public String getName(HttpServletRequest request) {return request.getParameter(“name ”);} %>• 示意翻译class Xxx implements HttpJspPage {int counter = 0;public String getName(HttpServletRequest request) {return request.getParameter(“name ”);}public void _jspService(…) throws …{…} …… }3 Sept. 2008 Confidential•JSP 注释的语法格式–<%-- 注释内容--%>•示例–<%-- 这是JSP 注释--%> •处理–翻译时忽略,不包含在Java 源文件中3 Sept. 2008Confidential3.3 JSP脚本元素(续)•JSP 注释–示例:<%-- 这是JSP 注释–分类:JSP脚本元素,JSP注释–处理:翻译时忽略•HTML 注释–分类:静态HTML 内容–示例:<!-- 这是html 注释–处理:包含在响应中•Java 注释--%> -->–分类:JSP 脚本元素,–示例:<% /* 这是–处理:翻译时包含,编译时忽略,不包含在响应中Java Scriptlet Java 注释*/ %>•JSP 指令的语法格式–<%@ DirectiveName [attr=”value”]* %> •三种J SP 指令–page–include–taglib•示例–<%@ page session=”false” %>–<%@ include file=“menu/banner.jsp” %> –<%@ taglib prefix=“training”uri=“.training” %>3 Sept. 2008Confidential•Page 指令•示例–<%@ page import=”java.util.Date” %>•说明–在翻译时起作用,作用在整个JSP 文件–位置无关,最好写在JSP 的最前面–一个页面可以有多个page 指令,但每个属性只允许出现一次(import 属性除外)3 Sept. 2008Confidential•page 指令的属性–contentType 、pageEncoding–buffer 、autoflush–language 、extends 、import –info 、i sThreadSafe 、session–errorPage 、isErrorPage3 Sept. 2008Confidential•page 指令的–指明页面的脚本语言language 属性–Java 是缺省的、当前唯一合法的选择•page 指令的extends 属性–指定此JSP 页面生成的•page 指令的import 属性–定义此JSP 页面生成的–page 指令中唯一允许多次出现的属性Java 类应输入的包Java 类的超类–<%@ page import=“java.util.* ,java.text.*” %>–默认的导入包:ng.*, javax.servlet.*,javax.servlet.http.*, java.servlet.jsp.*3.3 JSP 脚本元素(续)•page 指令的– 定义输出的Type 标题 – 缺省的是• page 指令的– 定义输出流的字符编码 – 缺省的是3 Sept. 2008 ConfidentialcontentType 属性 MIME TYPE ,对应响应信息的text/html pageEncoding 属性ISO-8859-1Content-3.3 JSP脚本元素(续)•输出流的缓冲–输出流的内容不直接发送给客户,使用缓冲–清空缓冲区会将缓冲区的内容发送给客户–缓冲区的清空:明确清空(ServletResponse.flushBuffer缓冲区已满后自动清空•page 指令的buffer 属性–定义输出流(JspWriter) 使用的缓冲区大小方法)、页面完成、–none 或者nkb ,例:–缺省值一般是8kbbuffer=“8kb”或者。
JSP第四章 JSP语法(新)

%>
</BODY></HTML>
4.3 Java程序片
➢ 一个JSP页面中的Java程序片会按其在页面中的顺序被执行,
而 且 某 个 Java 程 序 片 中 声 明 的 局 部 变 量 在 其 后 继 的 所 有
Java程序片以及表达式内都有效。
➢ 可以将一个Java程序片分割成几个Java程序片,然后在这些
String tom=null,jerry="love JSP"; Date date; %>
4.2 变量和方法的声明
example2_2.jsp:利用成员变量被所有用户共享,实现计数器
<%@ page contentType="text/html; charset=GB2312" %>
<HTML><BODY BGCOLOR=cyan> <FONT size=3>
} double div(double x,double y) {
return x/y; } %> <% double x=3.56; double y=18; out.println("调用multi方法计算"+x+"与"+y+"之积:<br>"); out.println(multi(x,y)); out.println("<BR>调用div方法计算"+y+"除以"+x+"的商:<br>"); String s =String.format("小数点保留3位:%10.3f",div(y,x)); out.println(s); %> </body></HTML>
JSP基本语法教程

property属性赋予不同的值代表不同的含义。
Property=“*”:这种赋值方式表示所有请求参数
的所有值,用于匹配Bean中的属性值。在Bean
中的属性的名字必须和Request对象中的参数名 一致。
Property=“propertyName”[param=“parameter
4.2.3 脚本段( Scriptlets )
脚本段代码的格式:
<% scriptlet %>
脚本段在Web服务器响应时就会运行。
【注意】
脚本段内不能定义方法。
4.2.4 表达式(Expression)
JSP表达式用来把Java数据直接插入到输出。
表达式的格式为:<%=Java Expression %>
4.3.2 include指令
include指令用于在JSP页面中包含另一个文
件的内容。
include指令的语法格式:
<%@ include file=“relativeURL” %>
“relativeURL”表示此file的路径,路径名一般
来说是指相对路径。 【注意】
include包含文件的内容也是JSP代码,即可以包
Bean的作用域。此属性是可选的,其缺省值为page。
求范围内有效。
session-创建一个与当前用户相关的实例,该实例只在当前用 户范围内有效。
application-创建一个与当前应用相关的实例,该
实例只在当前用户范围内有效。
(3)class
class指Bean的.class文件的名称。
4.4.2 <jsp:setProperty>
第4章通信资费管理系统案例-JSP程序设计实训与案例教程(第2版)-马军霞-清华大学出版社

2021年4月8日
11
4.2 案例总体结构与构成
2021年4月8日
12
4.2 案例总体结构与构成
2021年4月8日
13
4.2 案例总体结构与构成
2021年4月8日
14
4.2 案例总体结构与构成
2021年4月8日
15
4.2 案例总体结构与构成
2021年4月8日
16
4.2 案例总体结构与构成
开用账 通户号 账列查 户表询
添资资 加费费 资列修 费表改
查 查查 看 看询 账 明账 单 细单 费
月年详 账账细 务务清
单
增管修 加理改 管员信 理列息 员表单
修查查 改看看 个账明 人单细 信单 息
2021年4月8日
9
4.2 案例总体结构与构成
2021年4月8日
10
4.2 案例总体结构与构成
2021年4月8日
23
4.2 案例总体结构与构成
2021年4月8日
24
4.2 案例总体结构与构成
2021年4月8日
25
4.2 案例总体结构与构成
2021年4月8日
26
4.2 案例总体结构与构成
2021年4月8日
27
4.2 案例总体结构与构成
2021年4月8日
28
4.2 案例总体结构与构成
3.2.1 列表标签 3.2.2 多媒体和超链接标签 3.2.3 表格标签 3.2.4 表单标签 3.2.5 框架标签 3.3 CSS基础知识 3.3.1 CSS样式表定义 3.3.2 HTML中加入CSS的方法 3.3.3 CSS的优先级 3.3.4 CSS基本属性 3.4 项目实训 3.5 课外阅读 3.5.1 XHTML简介 3.5.2 XML简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
从零开始-JSP动态网页制作基础培训教程
4.脚本元素
脚本元素(Scripting Elements)是JSP代码中 使用最频繁的元素,它是用Java写的脚本代码。所有 的脚本元素均是以“<%”标记开始,以“%>”标记结束, 它可以分为如下三类: 声明 表达式 Scriptlet
14
从零开始-JSP动态网页制作基础培训教程
6
从零开始-JSP动态网页制作基础培训教程
3.指令
在JSP中,指令(Directive)主要用来与JSP引 擎进行沟通,并为JSP页面设臵全局变量、声明类以 及JSP要实现的方法和输出内容的类型等。需要注意 的是,指令元素在JSP整个页面范围内有效,并且它 不在客户端产生任何输出。使用指令的格式如下: <%@ directivename attribute="value"%> 同时,一个指令可以声明多个属性,如下所示: <%@ directivename atttibute1="value1",……, atttibuteN="valueN"%>
从零开始-JSP动态网页制作基础培训教程
5.2 <jsp:include> <jsp:include>允许在JSP页面中包含静态和动态 页面。如果包含的是静态页面,则只是将静态页面的 内容加入至JSP页面中,如果包含的是动态页面,则 所包含的页面将会被JSP服务器编译执行。 <jsp:include>操作的格式如下: <jsp:includepage="relativeURL| <%=expression%>" flush="true|false"/> page:表示所要包含的文件的相对URL,它可以是 一个字符串,也可以是一个JSP表达式。 flush:默认值为false,若该值为true则表示当 缓冲区满时,缓冲区将被清空。
4.1 声明 在JSP中,声明是用来定义在程序中使用的实体, 它是一段Java代码,可以声明变量也可以声明方法, 它以“<%!”标记开始,以“%>”标记结束,格式如下: <%!declaration; [declaration;]…… %> 每个声明仅在一个JSP页面内有效,如果要想在每 个页面中都包含某些声明,可将这些声明包含在一个 JSP页面中,然后利用前面介绍的include指令将该页 面包含在每个JSP页面中。
24
从零开始-JSP动态网页制作基础培训教程
6.2 处理客户请求阶段的错误处理 处理客户请求阶段的错误是指JSP编译成功后 Servlet类处理客户请求发生的错误,这类错误往往 不是语法错误,而是由于逻辑上的错误,例如获取的 参数类型不匹配、被零除等错误。当这些错误发生时, JSP程序将抛出异常,由异常处理机制进行处理。 发生这类错误时,通常将错误交由errorPage处理, 例如制作一个“error.jsp”页面
23
从零开始-JSP动态网页制作基础培训教程
6.1 编译阶段的错误处理 编译阶段发生错误的主要原因是编写的JSP程序有 语法错误或JSP容器安装、设臵出现错误,导致JSP容 器无法将JSP文件编译为Servlet类文件。 要避免在编译阶段发生错误,必须首先正确安装、 配臵JSP容器,然后检查JSP程序是否存在语法错误。
16
从零开始-JSP动态网页制作基础培训教程
4.3 Scriptlet Scriptlet是以“<%”标记开始,以“%>”标记结 尾的一段Java代码,它可以包含任意合乎Java语法标 准的Java代码,格式如下: <% Java代码 %>
17
从零开始-JSP动态网页制作基础ements)
11
从零开始-JSP动态网页制作基础培训教程
利用include指令,可以将一个复杂的JSP页面分 为若干个部分,这样可以方便管理JSP页面。一个JSP 页面一般可以分为三段:head(页头)、body(页体) 和tail(页尾)。 可以将一个JSP页面分为3个不同的JSP页面: head.jsp、body.jsp和tail.jsp,其中head.jsp表示 页头,body.jsp表示页体,tail.jsp表示页尾,这样 对于同一网站的不同JSP页面,可以直接利用include 指令调用head.jsp和tail.jsp,仅body.jsp不同
12
从零开始-JSP动态网页制作基础培训教程
3.3 taglib指令 taglib指令是页面使用者用来自定义标签。可以 把一些需要重复显示的内容自定义成为一个标签,以 增加代码的重用程度,并使页面易于维护。 随着JSP语言规范的升级,标签库不断得到加强, 它在页面中的定义如下: <%@taglib uri="taglibURI" prefix="tagPrefix"%> 其中,uri用来表示标签描述符,也就是提供怎么 知道标签描述文件和标签库的路径,tagPrefix定义 了JSP页面里要引用该标签时的前缀,需要注意的是, 这些前缀不可以是jsp、jspx、java、javax、sun、 servlet和sunw。
从零开始-JSP动态网页制作基础培训教程
2. 注释
2.1 HTML注释 静态HTML注释 动态HTML注释
HTML注释主要是用于在客户端动态地显示一个注 释,格式如下: <!--comment[<%=expression%>] -->
5
从零开始-JSP动态网页制作基础培训教程
2.2 JSP隐藏注释 JSP隐藏注释在JSP源代码中,它不会被JSP引擎处 理,也不会在客户端的Web浏览器上显示,格式如下: <%--comment--%>
21
从零开始-JSP动态网页制作基础培训教程
5.4
<jsp:plugin>
<jsp:plugin>主要用来在客户端的浏览器中显示 一个对象,通常为Applet或Bean。
22
从零开始-JSP动态网页制作基础培训教程
6.错误处理
在编写JSP页面的过程中,无论是初学者还是编程 高手都会遇到各种各样的问题,谁也无法保证编写的 JSP页面不会出现任何错误。 在JSP页面的处理过程中,在下面两个阶段会发生 错误。 编译阶段:该阶段将JSP源文件编译为Servlet 类文件。 处理客户请求阶段:Servlet类在该阶段处理每 个客户的请求
7
从零开始-JSP动态网页制作基础培训教程
JSP语法规范定义了以下3种不同的指令。 page指令:定义与JSP页面相关的属性,并和JSP 引擎进行通信。 include指令:定义JSP编译时需要插入的资源。 taglib指令:定义JSP页面可以调用的一个客户标 记库。
8
从零开始-JSP动态网页制作基础培训教程
3.1 page指令 page指令主要用来定义整个JSP页面的属性和相关 功能,并由该指令和JSP引擎进行通信。一个JSP页面 可以包含多个page指令,指令之间是相互独立的,并 且指令中除import属性之外的每个属性只能定义一次, 否则在JSP页面的编译过程中将出现错误。 page指令可以运用于整个JSP文件,一般来说, page指令可以放在JSP页面的任何位臵,但为了便于 程序的阅读和格式规范,通常将page指令放在JSP页 面的开始部分。 page指令的格式为: <% page attribute1="value1" ,……, atttibuteN="valueN"%> 9
从零开始-JSP动态网页制作基础培训教程
page指令的详细格式如下:
<%@ page [ language="scriptingLanguage" ] [ extends="className" ] [ import="importList"] [ session="true|false" ] [ buffer="none|sizekb" ] [ autoFlush="true|false" ] [ isThreadSafe="true|false" ] [ info="info_text" ] [ errorPage="error_url" ] [ isErrorPage="true|false" ] [ contentType="ctinfo" ] [ pageEncoding="peinfo" ] [ isELIgnored="true|false" ] 10
大多数的JSP处理都是通过JSP中的动作元素来完 成的,动作元素主要是在请求处理阶段起作用,它能 影响输出流和对象的创建、使用、修改等。JSP动作 元素是利用XML(Extensible Markup Language ,可 扩展标记语言)语法写成的,JSP 2.0规范定义了以 下20种标准的动作元素,它们均以“jsp”作为前缀。
15
从零开始-JSP动态网页制作基础培训教程
4.2 表达式 表达式(Expression)以“<%=”标记开始,以 “%>”标记结尾,中间的内容为Java一个合法的表达 式,格式如下: <%=expression%> 其中expression表示Java表达式。 表达式在执行时会被自动转换为字符串,然后显 示在JSP页面中
从零开始-JSP动态网页制作基础培训教程
第4章 JSP语法
编
程
1
从零开始-JSP动态网页制作基础培训教程
主要内容
1.JSP页面的构成 2.注释 3.指令 4.脚本元素 5.动作元素 6.错误处理