1、
2、突出JSP在开发Web动态网站方面的强大功能,使读者快速掌握和运用JSP的编程技巧。 本书不仅可以作为大学计算机及相关专业的选修课教材,也适合自学者及网站开发人员参考使用。 前 言 本书是《JSP实用教程》的第二版,继续保留原教材的特点——注重教材的可读性和实用性,许多例题都经过精心的考虑,即能帮助理解知识,同时又具有启发性。在第二版中增加了XML和MVC模式在Web设计中的应用,对全书章节的先后顺序和部分例题的内容做了调整。 第1章介绍JSP重要性,对Tomcat服务器的安装与配置给予了详细介绍。第2章讲解JSP页面的基本构成、常用的JSP标记。第3章讲解内置对象,特别强调了这
3、些内置对象在JSP应用开发中的重要性,结合实例使读者掌握内置对象的用法。第4章是JSP技术中很重要的内容,即怎样使用Javabean分离数据的显示和处理,这一章讲解了许多有一定应用价值的例子。第5章主要讲解怎样使用Java中的输入输出流实现文件的读写操作,在实例上特别强调怎样使用Javabean实现文件的读写操作。第6章涉及的内容是数据库,也是Web应用开发的非常重要的一部分内容,特别介绍了各种数据库的连接方式。第7章讲解JavaServlet,对servlet对象的运行原理给予了细致的讲解,许多例子都是大多数Web开发中经常使用的模块。在第8章对Java Servlet在MVC开发模式中的地
4、位给予了重点介绍,并按着MVC模式给出了易于理解MVC设计模式的例子。第9章介绍了XML语言以及在JSP中怎样有效地使用XML文件。第10章是一个完整的网站,完全按着MVC模式开发设计,其目的是掌握一般Web应用中常用基本模块的开发方法。 作者简介 耿祥义,1995年中国科学技术大学博士毕业,获理学博士学位。1997年从中山大学博士后流动站出站。现任大连交通大学教授。已编写出版《Java 2实用教程》、《Java 课程设计》、《JSP 实用教程》、《JSP 基础教程》、《XML 基础教程》等10余部教材。 张跃平,现任大连交通大学讲师。已编写和参编出版《Visual FoxPro课程设
5、计》、《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" %> 2 <% date=new Date();
6、 //java程序片 2 <%= start %> 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 1
7、9 例子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 compute
8、r.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 ReadFi
9、le.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中使
10、用数据库 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
11、例子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 Prepar
12、edQueryBean.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
13、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
14、et.HandleSum 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 读取文件
15、 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 tra
16、in.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 15
17、8
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
分页显示全体会员 169
showAllMember.jsp 169
showLookedMember.jsp 170
HandleDatabase.java 171
Password
18、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 dispa
19、tcher= 184 HandleExit.java 184 第1章 JSP 简介 例子1 example1_1.jsp <%@ page contentType="text/html;charset=GB2312" %>
20、 %>
21、ublic int continueSum(int start,int end) // 方法声明 { for(int i=start;i<=end;i++) sum=sum+i; return sum; } %>
程序片创建Date对象: <% date=new Date();
22、 //java程序片
out.println("
"+date);
start=1;
end=100;
sum=continueSum(start,end);
%>
从
<%= start %>
至
<%= end %>
的连续和是
<%= sum %>
23、ontentType="text/html;charset=GB2312" %>
<%! int i=0; %> <% i++; %>您是第 <%= i %> 个访问本站的客户。 例子3 example2_3.jsp: <%@ page contentType="text/html;charset=GB2312" %>
<%! double x,y;24、 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);
25、x=a;
out.println("
调用div方法计算"+x+"除以"+y+"的商:");
double b=div(x,y);
out.println(b);
%>
例子4
example2_4.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
26、d setCount() //synchronized修饰的方法 { count++; } %> <% setCount(); out.println("您是第"+count+"个访问本站的客户"); %> 例子5 example2_5.jsp <%@ page contentType="text/html;charset=GB2312" %>
输出英文字母. <% char s
27、tart='A',end='M',c;
int size=2;
%>
用<%=size %>磅字号输出
>
<% for(c=start;c<=end;c++)
{
%> <%= c %>,
<% }
%>
<% size=4;
start=(char)(end+1);
end='Z';
%>
用<%=size %>磅字号输出
>
28、<% for(c=start;c<=end;c++) { %> <%= c %>, <% } %>
例子6 example2_6.jsp: <%@ page contentType="text/html;charset=GB2312" %> <% double a=12.89; int x=12,y=10; %> 计算表达式a+x*y-100/x+x%5的值: <%= a+x*y-129、00/x+x%5 %>
计算表达式x>y&&a>0的值:
<%=x>y&&a>0%>
计算表达式sin(x)+cos(y):
<%=Math.sin(x)+Math.cos(y)%>
求8的平方根:
<%=Math.sqrt(8)%>
30、lue>抽取字符串"C:\myfile\jspfile\example.jsp"中的"example.jsp"
<%-- 下面是成员变量的声明 --%> <%! String s="C:\\myfile\\jspfile\\example.jsp"; %> <%-- 下面是Java程序片 --%> <% int index=s.lastIndexOf("\\"); String str=s.substring(index+1); %>31、> 例子8 first.jsp <%@ page contentType="text/html;Charset=GB2312" %>
使用html处理所接受到的信息.
se32、cond.jsp <%@ page contentType="application/vnd.ms-powerpoint" %>
启动powerpoint应用程序处理所接受到的信息.
third.jsp <33、@ 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 Bu
34、fferedImage(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);
35、 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(); //获取指向客户端的输出流 JPEGImageE
36、ncoder encoder=JPEGCodec.createJPEGEncoder(outClient); encoder.encode(image); %> 例子9 example2_9.jsp <%@ page contentType="text/html;charset=GB2312" %> <%@ page info="清华大学" %> <% String s=getServletInfo(); %>
<%= s %>37、>出版社是中国著名出版社
我是firstExample.jsp页面
secondExample2_10.jsp(效果如图2.9(b)所示)
<%@ page contentType="tex 38、t/html;charset=GB2312" %>
<%@ include file="myfile/ok.txt" %>
我是secondExample.jsp页面
上述firstExample2_10.jsp等价于下面的JSP文件same.jsp:
same.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
欢迎去firstExample2_10.jsp页面 39、>
我是firstExample.jsp页面
例子11
example2_11.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%=s %>是全国著名的高等学府
例子10
firstExample2_10.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ include file="myfile/ok.txt" %>
欢迎去secondExample2_10.jsp页面
加载trangle.jsp计算三边为<%=
40、a%>,<%=b%>,<%=c%>的三角形面积:
41、B2312" %> <%! 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+"不能构成一个三角形,无法计算面积")
42、 } } %> <% 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.parseDou
43、ble(sideC);
%>
我是被加载的文件,负责计算三角形的面积
给我传递的三边是:<%=sideA%>,<%=sideB%>,<%=sideC%>
三角形的面积:<%= getArea(a,b,c)%>
44、 {
%>
45、ontSide.jsp <%@ page contentType="text/html;charset=GB2312" %>
<% String s=request.getParameter("number"); out.println("46、contentType="text/html;charset=GB2312" %>
<% String s=request.getParameter("number"); out.println("传递过来的值是"+s); %>47、html;charset=GB2312" %>
48、<%@ page contentType="text/html;charset=GB2312" %>
computer.jsp <%@ page contentType="text/html;charset=GB2312" %> <% 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





