资源描述
<JSP实用教程>(第二版)
清华大学出版社(耿祥义 张跃平编著)
程序源代码
建议使用文档结构图浏览使用
(选择Word菜单→视图→文档结构图)
摘 要
JSP是一种动态网页技术标准,利用这一技术可以建立安全、跨平台的先进动态网站。 本书是一本实用教程,配备了大量的例题,叙述详细,通俗易懂,便于自学,特别注重结合实例讲解一些难点和关键技术。全书共分10章,内容包括JSP简介、JSP语法、内置对象、JSP与Javabean、文件操作、数据库操作、JavaServlet、MVC设计模式、JSP中使用XML等重要内容。本书所有知识都结合具体实例进行介绍.力求详略得当,突出JSP在开发Web动态网站方面的强大功能,使读者快速掌握和运用JSP的编程技巧。 本书不仅可以作为大学计算机及相关专业的选修课教材,也适合自学者及网站开发人员参考使用。
前 言
本书是《JSP实用教程》的第二版,继续保留原教材的特点——注重教材的可读性和实用性,许多例题都经过精心的考虑,即能帮助理解知识,同时又具有启发性。在第二版中增加了XML和MVC模式在Web设计中的应用,对全书章节的先后顺序和部分例题的内容做了调整。
第1章介绍JSP重要性,对Tomcat服务器的安装与配置给予了详细介绍。第2章讲解JSP页面的基本构成、常用的JSP标记。第3章讲解内置对象,特别强调了这些内置对象在JSP应用开发中的重要性,结合实例使读者掌握内置对象的用法。第4章是JSP技术中很重要的内容,即怎样使用Javabean分离数据的显示和处理,这一章讲解了许多有一定应用价值的例子。第5章主要讲解怎样使用Java中的输入输出流实现文件的读写操作,在实例上特别强调怎样使用Javabean实现文件的读写操作。第6章涉及的内容是数据库,也是Web应用开发的非常重要的一部分内容,特别介绍了各种数据库的连接方式。第7章讲解JavaServlet,对servlet对象的运行原理给予了细致的讲解,许多例子都是大多数Web开发中经常使用的模块。在第8章对Java Servlet在MVC开发模式中的地位给予了重点介绍,并按着MVC模式给出了易于理解MVC设计模式的例子。第9章介绍了XML语言以及在JSP中怎样有效地使用XML文件。第10章是一个完整的网站,完全按着MVC模式开发设计,其目的是掌握一般Web应用中常用基本模块的开发方法。
作者简介
耿祥义,1995年中国科学技术大学博士毕业,获理学博士学位。1997年从中山大学博士后流动站出站。现任大连交通大学教授。已编写出版《Java 2实用教程》、《Java 课程设计》、《JSP 实用教程》、《JSP 基础教程》、《XML 基础教程》等10余部教材。
张跃平,现任大连交通大学讲师。已编写和参编出版《Visual FoxPro课程设计》、《Java 2实用教程》、《JSP 实用教程》3部教材。
希望本教材能对读者学习JSP有所帮助,并请读者批评指正(xygeng0629@)。
编者 2007年05月
187
第1章 JSP 简介 1
例子1 1
第2章 JSP语法 2
例子1 2
<%@ page contentType="text/html;charset=GB2312" %> <!-- jsp指令标记 --> 2
<% date=new Date(); //java程序片 2
<%= start %> <!-- Java表达式 --> 2
例子2 2
例子3 3
例子4 3
例子5 4
例子6 4
例子7 5
例子8 5
例子9 6
例子10 7
例子11 7
例子12 8
例子13 9
第3章 JSP 内置对象 10
例子1 10
例子2 10
例子3 11
例子4 12
例子5 14
例子6 15
例子7 16
例子8 17
例子9 17
例子10 18
例子11 18
例子12 19
例子13 20
例子14 21
例子15 22
例子16 24
例子17 25
例子18 27
例子19 29
第4章 JSP与JavaBean 31
Circle.java 31
例子1 31
例子2 32
例子3 32
NewCircle.java 32
例子4 33
Student.java 33
例子5 34
Goods.java 34
例子6 35
ListFile.java 36
例子7 36
三角形bean 37
Triangle.java 37
四则运算bean 38
ComputerBean.java 38
computer.jsp 40
计数器bean 40
CounterCount.java 40
comeOne.jsp 42
comeTwo.jsp 42
浏览图像 bean 42
Play.java 42
play.jsp 43
成绩单 bean 44
ScoreList.java 44
studentScore.jsp 45
日历bean 46
CalendarBean.java 46
showCalendar.jsp 48
第5章 JSP中的文件操作 49
例子1 49
FileDir.java 49
fileAndDir.jsp 50
例子2 50
ReadFile.java 50
selectDir.jsp 52
listfile.jsp 52
例子3 53
WriterFile.java 53
writefile.jsp 54
例子4 55
UpFile.java 55
upfile.jsp 58
show.jsp 58
例子5 58
DownLoadFile.java 58
downfile.jsp 59
例子6 60
ReadByRow.java 60
selectfile.jsp 61
readByRow.jsp 62
例子7 62
Test.java 62
test.jsp 65
第6章 JSP中使用数据库 67
例子1 67
showByJdbcOdbc.jsp 67
例子2 68
showBySQLDriver.jsp 68
例子3 69
QueryBean.java 69
inquire.jsp 71
例子4 72
RandomQueryBean.java 72
random.jsp 74
例子5 75
ConditionQuery.java 75
condition.jsp 77
例子6 78
OrderQuery.java 78
sort.jsp 79
例子7 80
KeyWordQuery.java 80
keyWord.jsp 82
例子8 82
AddBean.java 82
add.jsp 84
例子9 85
ShowRecordByPage.java 85
showByPage.jsp 88
例子10 89
linkOracle.jsp 89
例子11 90
linkMySql.jsp 90
例子12 91
MySqlBean.java 91
mysql.jsp 93
例子13 94
inquireExcel.jsp 94
例子14 95
ApplicationCon.java 95
UseConBean.java 96
chaxun.jsp 97
例子15 98
PreparedQueryBean.java 98
pre.jsp 100
例子16 100
AddRecordBean.java 100
addRecord.jsp 102
第7章Java Servlet基础 104
HelloBeijing.java: 104
web.xml 104
例子1 105
giveRadius.jsp 105
Computer.java 105
例子2 106
showLetter.jsp 106
ShowLetter.java 106
例子3 107
showPI.jsp 107
ComputerPI.java 107
例子4 108
method.jsp 108
GetSqare.java 108
GetSquareOrCubic.java 109
例子5 111
input.jsp 111
Verify.java 111
ShowMessage.java 112
例子6 113
Boy.java 113
Look.java 114
例子7 115
getLetter.jsp 115
inputLetter.jsp 115
HandleGuess.java 116
第8章 基于Servlet的MVC模式 118
web.xml 118
<servlet-class>sun.yourservlet.HandleSum</servlet-class> 118
Series.java 118
inputMess.jsp 119
showResult.jsp 120
HandleSum.java 120
计算一元二次方程的根 122
Equation.java 122
input.jsp 123
show.jsp 123
HandleData.java 124
简单的计算器 125
ComputerBean.java 125
inputNumber.jsp 126
showResult.jsp 126
HandleComputer.java 127
读取文件 129
FileMessage.java 129
choiceFile.jsp 129
showFile.jsp 130
HandleFile.java 130
查询数据库 131
ShowRecordByPage.java 131
choiceDatabase.jsp 133
showRecord.jsp 133
HandleDatabase.java 134
第9章 JSP中使用XML 139
例子1 139
Score.xml 139
input.jsp 140
Number.java 140
例子2 142
trainList.xml 142
train.jsp 143
SAXBean.java 144
例子3 147
type.jsp 147
formula.xml 147
show.css 148
第10章 基于会员制的网络广告系统 150
head.txt 150
index.jsp 150
web.xml 150
Register.java 152
register.jsp 153
showRegisterMess.jsp 154
HandleRegister.java 155
RequestDispatcher dispatcher= 157
Login.java 157
login.jsp 158
showLoginMess.jsp 158
HandleLogin.java 159
UploadFile.java 161
upload.jsp 162
showUploadMess.jsp 162
HandleUpload.java 163
MemberInform.java 167
ShowByPage.java 168
choiceLookType.jsp 169
<BR>分页显示全体会员 169
showAllMember.jsp 169
showLookedMember.jsp 170
HandleDatabase.java 171
Password.java 175
modifyPassword.jsp 175
showNewPasswor.jsp 176
HandlePassword.java 176
RequestDispatcher dispatcher= 177
ModifyMessage.java 178
choiceModifyMess.jsp 179
inputModifyMess.jsp 179
GetOldMess.java 180
RequestDispatcher dispatcher= 182
HandleModifyMess.java 182
RequestDispatcher dispatcher= 184
HandleExit.java 184
第1章 JSP 简介
例子1
example1_1.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY BGCOLOR=cyan>
<h3>这是一个简单的JSP页面</h3>
<% int i, sum=0;
for(i=1;i<=100;i++)
{ sum=sum+i;
}
%>
<h5> 1到100的连续和是:
<%=sum %>
<h5>
</BODY><HTML>
第2章 JSP语法
例子1
example2_1.jsp
<%@ page contentType="text/html;charset=GB2312" %> <!-- jsp指令标记 -->
<%@ page import="java.util.Date" %> <!-- jsp指令标记 -->
<%! Date date; // 数据声明
int start,end,sum;
public int continueSum(int start,int end) // 方法声明
{ for(int i=start;i<=end;i++)
sum=sum+i;
return sum;
}
%>
<HTML><BODY bgcolor=cyan> <!—html标记 -->
<FONT size=4><P>程序片创建Date对象:
<% date=new Date(); //java程序片
out.println("<BR>"+date);
start=1;
end=100;
sum=continueSum(start,end);
%>
<BR>从
<%= start %> <!-- Java表达式 -->
至
<%= end %>
的连续和是
<%= sum %>
</FONT></BODY></HTML>
例子2
example2_2.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY BGCOLOR=cyan><FONT size=3>
<%! int i=0;
%>
<% i++;
%>
<P>您是第
<%= i %>
个访问本站的客户。
</BODY></HTML>
例子3
example2_3.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan>
<%! double x,y;
double multi(double x,double y)
{ return x*y;
}
double div(double x,double y)
{ return x/y;
}
%>
<% x=127;
y=18;
out.println("调用multi方法计算"+x+"与"+y+"之积:");
double a=multi(x,y);
out.println(a);
x=a;
out.println("<BR>调用div方法计算"+x+"除以"+y+"的商:");
double b=div(x,y);
out.println(b);
%>
</BODY></HTML>
例子4
example2_4.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY>
<%! int count=0; //被客户共享的count
synchronized void setCount() //synchronized修饰的方法
{ count++;
}
%>
<% setCount();
out.println("您是第"+count+"个访问本站的客户");
%>
</BODY></HTML>
例子5
example2_5.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan>
<P> 输出英文字母.
<% char start='A',end='M',c;
int size=2;
%>
<BR> 用<%=size %>磅字号输出
<Font size=<%=size%>>
<% for(c=start;c<=end;c++)
{
%> <%= c %>,
<% }
%>
</Font>
<% size=4;
start=(char)(end+1);
end='Z';
%>
<BR> 用<%=size %>磅字号输出
<Font size=<%=size%>>
<% for(c=start;c<=end;c++)
{
%> <%= c %>,
<% }
%>
</Font></BODY></HTML>
例子6
example2_6.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=3>
<% double a=12.89;
int x=12,y=10;
%>
计算表达式a+x*y-100/x+x%5的值:
<%= a+x*y-100/x+x%5 %>
<BR>计算表达式x>y&&a>0的值:
<%=x>y&&a>0%>
<BR>计算表达式sin(x)+cos(y):
<%=Math.sin(x)+Math.cos(y)%>
<BR> 求8的平方根:
<%=Math.sqrt(8)%>
</FONT></BODY></HTML>
例子7
example2_7.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<!-- 以下字体的颜色为蓝色 -->
<FONT size=3 color=blue>抽取字符串"C:\myfile\jspfile\example.jsp"中的"example.jsp"
</FONT>
<%-- 下面是成员变量的声明 --%>
<%! String s="C:\\myfile\\jspfile\\example.jsp";
%>
<%-- 下面是Java程序片 --%>
<% int index=s.lastIndexOf("\\");
String str=s.substring(index+1);
%>
<BR><%-- 下面是Java表达式 --%>
<%= str %>
</BODY></HTML>
例子8
first.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY BGCOLOR=cyan>
<FONT Size=3>
<P>使用html处理所接受到的信息.
<input type=text size=10>
</FONT></BODY></HTML>
second.jsp
<%@ page contentType="application/vnd.ms-powerpoint" %>
<HTML><BODY BGCOLOR=cyan>
<FONT Size=8>
<P>启动powerpoint应用程序处理所接受到的信息.
<input type=text size=10>
</FONT></BODY></HTML>
third.jsp
<%@ page contentType="image/x-xbitmap" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.awt.image.*" %>
<%@ page import="java.awt.geom.*" %>
<%@ page import="com.sun.image.codec.jpeg.*" %>
<% int width=260, height=260;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
Graphics2D g_2d=(Graphics2D)g;
Ellipse2D ellipse=new Ellipse2D. Double (40,50,100,40);
g_2d.setColor(Color.blue);
g_2d.draw(ellipse);
Polygon polygon=new Polygon();
polygon.addPoint(12,34);
polygon.addPoint(51,134);
polygon.addPoint(102,34);
g_2d.drawPolygon(polygon);
g_2d.dispose();
OutputStream outClient= response.getOutputStream(); //获取指向客户端的输出流
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(outClient);
encoder.encode(image);
%>
例子9
example2_9.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page info="清华大学" %>
<% String s=getServletInfo();
%>
<head> <%= s %></head>
<HTML><BODY bgcolor=cyan><FONT Size=4>
<BR><%=s %>出版社是中国著名出版社
<BR><%=s %>是全国著名的高等学府
</BODY><HTML>
例子10
firstExample2_10.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ include file="myfile/ok.txt" %>
<HTMLl><BODY bgcolor=cyan>
<P>我是firstExample.jsp页面
</BODY></HTML>
secondExample2_10.jsp(效果如图2.9(b)所示)
<%@ page contentType="text/html;charset=GB2312" %>
<%@ include file="myfile/ok.txt" %>
<HTML><BODY bgcolor=yellow>
<P>我是secondExample.jsp页面
</BODY></HTML>
上述firstExample2_10.jsp等价于下面的JSP文件same.jsp:
same.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<A href="firstExample2_10.jsp">欢迎去firstExample2_10.jsp页面</A>
<BR>
<A href="secondExample2_10.jsp">欢迎去secondExample2_10.jsp页面</A>
<HTML><BODY bgcolor=cyan>
<P>我是firstExample.jsp页面
</BODY></HTML>
例子11
example2_11.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=yellow >
<% double a=3,b=4,c=5;
%>
<BR>加载trangle.jsp计算三边为<%=a%>,<%=b%>,<%=c%>的三角形面积:
<jsp:include page="myfile/trangle.jsp">
<jsp:param name="sideA" value="<%=a%>"/>
<jsp:param name="sideB" value="<%=b%>"/>
<jsp:param name="sideC" value="<%=c%>"/>
</jsp:include>
</BODY></HTML>
trangle.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%! public String getArea(double a,double b,double c)
{ if(a+b>c&&a+c>b&&c+b>a)
{ double p=(a+b+c)/2.0;
double area=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
return ""+area;
}
else
{ return(""+a+","+b+","+c+"不能构成一个三角形,无法计算面积");
}
}
%>
<% String sideA=request.getParameter("sideA");
String sideB=request.getParameter("sideB");
String sideC=request.getParameter("sideC");
double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
double c=Double.parseDouble(sideC);
%>
<Font color=blue size=4>
<P>我是被加载的文件,负责计算三角形的面积<BR>
给我传递的三边是:<%=sideA%>,<%=sideB%>,<%=sideC%>
<BR>三角形的面积:<%= getArea(a,b,c)%>
</Font>
例子12
example2_12.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<% double i=Math.random();
if(i>0.5)
{
%> <jsp:forward page="frontSide.jsp" >
<jsp:param name="number" value="<%= i %>" />
</jsp:forward>
<% }
else
{
%> <jsp:forward page="reverseSide.jsp" >
<jsp:param name="number" value="<%= i %>" />
</jsp:forward>
<% }
%>
</BODY></HTML>
frontSide.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
<% String s=request.getParameter("number");
out.println("<BR>传递过来的值是"+s);
%>
<BR><img src=image/a.JPG width=120 height=120 >钱币图像</img>
</FONT></BODY></HTML>
reverseSide.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
<% String s=request.getParameter("number");
out.println("传递过来的值是"+s);
%>
<BR> <img src=image/b.JPG width=120 height=120 >钱币图像</img>
</FONT></BODY></HTML>
例子13
example2_13.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<jsp:plugin type="applet" code="B.class" jreversion="1.2" width="200" height="260">
<jsp:fallback>
Plugin tag OBJECT or EMBED not supported by browser.
</jsp:fallback>
</jsp:plugin>
</BODY></HTML>
第3章 JSP 内置对象
例子1
example3_1.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><FONT size=2>
<FORM action="computer.jsp" method=post name=form>
<INPUT type="text" name="sizeA" value=1 size=6>
<INPUT type="text" name="sizeB" value=1 size=6>
<INPUT type="text" name="sizeC" value=1 size=6>
<INPUT TYPE="submit" value="提交" name="submit">
</FORM>
</FONT>
</BODY></HTML>
computer.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=yellow><Font size=3>
<% String sideA=request.getParameter("sizeA");
String sideB=request.getParameter("sizeB");
String sideC=request.getParameter("sizeC");
try { double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
double c=Double.parseDouble(sideC);
double p=(a+b+c)/2,area=0;
area=Math.sqrt(p*(p-a)*(p-b)*(p-c
展开阅读全文