Web开发技术实验指导书模板
安徽农业大学《Web开发技术》JSP版课程配套教材
..整理分享..
Web开发技术》实验指导书(JSP版)
刘 波 编写
安徽农业大学信息与计算机学院
通信工程
2008年2月
《
WORD完美格式
目 录
实验一 搭建JSP运行的实验环境 ................................. 1 实验二 JSP页面 ............................................... 3 实验三 显示不同大小的“你好JSP” ............................. 7 实验四 JSP指令和动作 ........................................ 10 实验五 Tag文件的代码复用 .................................... 12 实验六 中文显示服务器端日期 .................................. 14 实验七 JSP内置对象 .......................................... 19 实验八 session对象 .......................................... 23 实验九 简易留言板 ............................................ 28 实验十 JSP中使用Java Bean ................................... 31 实验十一 JSP中的文件操作 .................................... 41 实验十二 JSP中使用数据库 .................................... 48 实验十三 Java Servlet ........................................ 66 实验十四 网上书店 ............................................ 71 实验报告………………………………………………………………………..76
..整理分享..
WORD完美格式
实验一 搭建JSP运行的实验环境
一、实验目的
(1)掌握JSP运行环境的安装与配置 (2)理解JSP与Servlet的关系
(3)运行简单的JSP页面,理解JSP的运行原理
二、实验工具
(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具-记事本
(3)Tomcat服务器,也可以从网上免费下载
三、实验步骤
(1)按教材中演示安装JDK (2)按教材中演示安装Tomcat
(3)启动Tomcat服务器,在浏览器中输入:http://localhost:8080,观察主页内容 (4)观察Tomcat安装目录下的各个子目录的内容
(5)打开记事本,输入下列源代码并保存为exer1.jsp。将此文件复制到Tomcat安装目录下的webapps\\ROOT目录下,运行该页面,观察其对应的Servlet源代码。
exer1.jsp的代码:
<%@ page contentType=\"text/html;charset=GB2312\" %> <%@ page import=\"java.util.Date\" %> <%! Date date; // 数据声明 int sum;
public int add(int m,int n) // 方法声明 { return m+n; } %>
程序片创建Date对象:
<% Date date=new Date(); //java程序片 out.println(\"
\"+date); sum=add(12,34); %>
在下一行输出和:
<%= sum+100 %>
..整理分享..
WORD完美格式
(6)将exer1.jsp文件复制到Tomcat安装目录下的webapps\\examples目录下,运行该页面,观察其对应的Servlet源代码。 (7)将exer1.jsp文件复制到Tomcat安装目录下的webapps\\webdav目录下,运行该页面,观察其对应的Servlet源代码。
四、实验思考题
(1)JDK安装完毕后,需要添加哪些环境变量?
(2)在Tomcat安装目录下的webapps文件夹中,新建一文件夹myapp,将exer1.jsp文件复制到Tomcat安装目录下的webapps\\myapp目录下,运行该页面(http://localhost:8080/myapp/exer1.jsp ),结果如何?
若在d:盘根目录建立一个文件夹myweb,将exer1.jsp文件复制到d:\\myweb\\目录下, 运行该页面(http://localhost:8080/myweb/exer1.jsp ),结果如何?
..整理分享..
WORD完美格式
若要正确显示该页面,还应做如何处理?提示:修改conf目录下的server.xml文件。 (3)Tomcat默认端口号为8080,如何更改端口号? (4)编写一个JSP页面,用于显示1~100的整数和。
五、实验报告要求
(1)分析JSP的工作原理,说明JSP文件和Servlet的关系 (2)根据实验运行情况,对实验步骤和运行结果进行阐述 (3)完成实验思考题的解答
实验二 JSP页面
一、实验目的
(1)熟悉典型JSP页面的组成元素,掌握HTML标记和JSP标记的不同 (2)掌握在HTML页面中插入JSP脚本(java代码)的方法 (2)编写简单的JSP页面,初步掌握JSP网页的设计原理
..整理分享..
WORD完美格式
二、实验工具
(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载
三、实验步骤
(1)打开记事本,输入以下代码,保存为exer2_1.jsp,观察其运行结果 exer2_1.jsp:
<%@ page contentType=\"text/html;Charset=GB2312\" %>
<%! int count=0; //被客户共享的count synchronized void setCount() //synchronized修饰的方法 { count++; } %>
<% setCount();
out.println(\"您是第\"+count+\"个访问本站的客户\"); %>
(2)JSP中声明类(比较教材P15-P16页的声明变量和声明方法)是JSP页面对应的Servlet类的内部类,页面上所有脚本元素都可以创建该类的对象。下面的实例定义一个square类,当客户访问该页面时,服务器创建该类的对象,只要客户给出正方形的边长,就可以求出该正方形的周长和面积,创建并运行exer2_2.jsp,观察运行结果 exer2_2.jsp:
<%@ page contentType=\"text/html; charset=gb2312\" %>
请输入正方形边长
<%! public class square
{ double r;
square(double r) {this.r=r;} double getarea() {return r*r;} double getlength() {return r*4;}
..整理分享..
WORD完美格式
%> <%
String s=request.getParameter(\"cat\"); double r; if (s!=null) %>
方的面积是:<%=cc.getarea() %>
方的周长是:<%=cc.getlength() %>
{r=Double.valueOf(s).doubleValue();} {r=1;} else
square cc=new square(r);//创建对象
}
(3)编写exer2_3.jsp,熟悉在“<%=”和“%>”之间插入表达式,用于输出表达式计算结果的方法 exer2_3.jsp:
<%@ page contentType=\"text/html;charset=GB2312\" %>
Sin(0.9)除以3等于 <%=Math.sin(0.90)/3%>
3的平方是: <%=Math.pow(3,2)%>
12345679乘72等于 <%=12345679*72%>
5的平方根等于 <%=Math.sqrt(5)%>
99大于100吗?回答: <%=99>100%>
(4)在Dreamweaver或FrontPage中利用可视化方法,编写input.jsp和receive.jsp。
input.jsp: <%@ page contentType=\"text/html;Charset=GB2312\" %>
receive.jsp: <%@ page contentType=\"text/html;Charset=GB2312\" %>
<% String yourName=request.getParameter(\"name\"); // 获取text提交的值 String yourSex=request.getParameter(\"R\"); //获取radio提交的值 String secretMess=request.getParameter(\"secret\"); //获取hidden提交的值 String personName[]=request.getParameterValues(\"superstar\"); //获取checkbox提交的值
out.println(\"
您的姓名:\"+yourName+\"
\"); out.println(\"您的性别:\"+yourSex+\"
\"); out.println(\"您喜欢的歌手:\"); if(personName==null)
{ out.print(\"一个都不喜欢\"); } else
{ for(int k=0;k hidden提交的值:\"+secretMess); %>
四、设计性实验环节
(1)编写一个jiecheng类,当客户在浏览器中给出指定的正整数N,能计算N的阶乘。创建能实现此功能的jsp文件res1.jsp,观察运行结果(参考exer2_2.jsp)
(2)编写程序newclass2.jsp,学会在声明中定义类student,初始化该类(学号、姓名、成绩),用表格形式输出“班号(学号的前4位)、学号、姓名、成绩”。(选做)
..整理分享..
WORD完美格式
五、实验报告要求
(1)分析JSP的脚本元素,说明JSP标记和html标记的不同 (2)根据实验运行情况,对实验步骤和运行结果进行阐述 (3)完成实验设计题的解答
实验三 显示不同大小的“你好JSP”(选做)
一、实验目的
(1)掌握控制字体显示大小的方法
(2)掌握For语句,显示变量值
二、实验工具
(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载
三、实验原理和内容
本程序运行后,在浏览器页面上显示不同字体大小的“你好Jsp”,如图3-1所示,程序的流程图如图3-2所示。
1、 程序知识点 显示变量值
在JSP中,获取变量值可使用“<%=valname%>”来实现,valname可以是一个整型字符型的变量。
图3-1 浏览器显示不同字体大小
For语句
For语句的格式如下
..整理分享..
WORD完美格式
for (initialization Statement; conditional Expression; increment Statement) { loopBody }
为了执行For语句,首先执行初始化语句,然后再对条件表达式求值,如果值为TRUE,则执行循环体,随后执行递增语句。表达式的求值和循环体与递增语句的执行不断重复,直到条件表达式的值变为false。多个初始化和增量语句可以用逗号隔开。
For循环的初始化部分可以声明局部循环变量,循环变量的范围在循环体内部。这些循环变量遵循在块内有效的一般规则,即用大括号作为程序块,变量在块内声明,不能与范围外边的变量同名,也不能在循环外引用。
图3-2 程序流程图
控制字体大小
在HTML语言中,控制文字大小可使用“ 2、程序代码(exer3.jsp) <%@ page contentType=\"text/html; charset=gb2312\" language=\"java\" %> WORD完美格式 //利用For循环控制字体由大到小 for(int i=1;i<6;i++) { %> //利用For循环控制字体由小到大 for( ; ; ) //完成空格中的内容 { %> 3、观察运行结果 四、综合设计实验环节 综合思考:结合实验二和实验三,编写input2.jsp和receieve2.jsp,根据变量和for循环生成表格的行和列,结果如下图3-3和图3-4所示: 图3-3 input2.jsp执行结果 图3-4执行“确定”后结果 五、实验报告要求 (1)根据实验运行情况,对实验步骤和运行结果进行阐述 ..整理分享.. WORD完美格式 (2)完成综合设计环节的解答 实验四 JSP指令和动作 一、实验目的 (1)综合掌握在JSP中使用指令标记 (2)综合掌握在JSP中使用动作标记 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 三、实验步骤 1、Page指令的使用 (1)打开记事本,输入以下文档,并保存为pagederictive.jsp。 <%@ page contentType=\"text/html; charset=gb2312\" language=\"java\" import=\"java.util.*,java.rmi.*\" session=\"true\" buffer=\"12kb\" autoFlush=\"true\" info=\"my page directory jsp\" errorPage=\"false\" isThreadSafe=\"false\" %> This program example how to use page Directive (2)将pagederictive.jsp复制到Tomcate安装目录下的webapps\\ROOT\\。 (3)在IE地址栏输入http://localhost:8080/pagederictive.jsp 2、page指令import属性的使用 (1)打开记事本,输入以下文档,并保存为pageimport.jsp。 <%-- get Year --%> <%@ page import=\"java.util.*\" %> CurrentYear=<%=Calendar.getInstance().get(Calendar.YEAR) %> ..整理分享.. WORD完美格式 (2)将pageimport.jsp复制到Tomcate安装目录下的webapps\\ROOT\\。 (3)在IE地址栏输入http://localhost:8080/pageimport.jsp 3、include指令的使用 (1)打开记事本,输入以下文档,并保存为copyright.jsp。 <%!String companyName=\"SSI Consulting\"; %> ©2002 <%=companyName%> Any unauthorized use of these materials will be prosecuted to the fullest extent of the law (2)打开记事本,输入以下文档,并保存为inc1.jsp。 <%@ page contentType=\"text/html; charset=gb2312\" language=\"java\" %> This page is unde contruction <%@ include file=\"copyright.jsp\" %> (3)将copyright.jsp和inc1.jsp复制到Tomcate安装目录下的webapps\\ROOT\\ (4)在IE地址栏输入http://localhost:8080/inc1.jsp 四、设计性实验环节 (1)、编写JSP页面,用“*”显示一个7×7方阵的边框和对角线,结果如图4-1所示。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 图4-1 练习1运行结果 (2)、编写JSP页面,判断字符串是否为回文,并用表格显示出来,结果如图4-2所示。 ..整理分享.. WORD完美格式 提示:使用StringBuffer类的reverse()颠倒某字符串的顺序,若字符串与颠倒后的字符串相等,则该串为回文。(选做) 图4-2 练习2的运行结果 (3)、张三手头分别有800美元和1860美元,编写一个JSP页面,把他的美元换成人民币,并用表格显示出来。假设当前美元兑换人民币的汇率是7.82。(选做) (4)、编写JSP页面分别显示1~10之间的各数字的阶乘。 实验五 Tag文件的代码复用 一、实验目的 (1)Tag文件的编写、保存以及Tag标记的使用 (2)编写JSP页面,使用Tag标记实现代码的复用 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 三、实验步骤 (1)Tag文件是扩展名为.tag的文本文件,其结构几乎和JSP文件相同,只是扩展名不同而已。也就是说,一个Tag文件中可以有普通的HTML标记符、某些特殊的指令标记、成员变量和方法、Java程序片和Java表达式等。在记事本中编写如下一个Tag文件 Trangle.tag: 这是一个Tag文件,负责计算三角形的面积: <%@ attribute name=\"sideA\" required=\"true\" %> <%@ attribute name=\"sideB\" required=\"true\" %> <%@ attribute name=\"sideC\" required=\"true\" %> <%! 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; ..整理分享.. WORD完美格式 double area=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ; return \" { return(\" <% out.println(\" (2)将Trangle.tag保存在..\\ROOT\\WEB-INF目录下 (3)在ROOT目录下编写exer5_1.jsp文件,代码如下: <%@ page contentType=\"text/html;Charset=GB2312\" %> <%@ taglib tagdir=\"/WEB-INF/tags\" prefix=\"computer\"%> <%if (sideaa==null){sideaa=\"3\";} if (sidebb==null){sidebb=\"4\";} if (sidecc==null){sidecc=\"5\";} %> <% String sideaa=request.getParameter(\"select1\"); String sidebb=request.getParameter(\"select2\"); String sidecc=request.getParameter(\"select3\"); (4)在IE地址栏输入http://localhost:8080/exer5_1.jsp 四、综合设计实验环节 编写两个Tag文件Rect.tag和Circle.tag。Rect.tag负责计算矩形的面积,Circle.tag负责计算圆的面积。编写一个JSP页面,该JSP页面使用Tag标记调用Rect.tag和Circle.tag。调用Rect.tag时,向其传递矩形的两个边的长度;调用Circle.tag时,向其传递圆的半径。 实验六 中文显示服务器端日期(选做) 一、实验目的 (1)掌握在JSP中Switch语句的使用 (2)掌握Date类使用。 (3)熟悉int和String的区别 (4)通过实例编程,综合掌握实用网页编程技巧 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 ..整理分享.. WORD完美格式 三、实验原理和内容 本实例运行后.将在浏览器上用中文显示当前服务端的日期,如图6-1所示。 图6-1 服务器端的日期 1、程序知识点 Date类及其引用 Date是在jdk中java。util这个包下的一个类,它支持日历和时间,并且包含了getYear()、getMonth()、getDate()、getDay()几个方法,分别为获取系统年份、系统月份、系统日期、系统星期,并且返回的都是整型。其标准用法为: java.util.Date dt=new java.util.Date(); int year=dt.getYear(); 当然也可先用import语句使包中定义的类和接口,可以只用类名而不用全名来引用用法为(import语句一定要放在程序开头): import java.util.*; Date dt=new Date(); int year=dt.getYear(); 以上例句Date dt=new Date()中用new语句生成一个新对象dt对Date类进行引用,而Date()是类Date的构造函数。然后可以对Date类中的getYear()方法进行调用。但得到的返回值要加1900才是现在年份。同样用getMonth()得到的返回值也要加1才是现在的月份。 int和String的区别 在Java中它们是两个完全不同的概念。int是一个类型,而String是一个类。所以在转换上是不能进行简单的强制型转换(int num=(int)string)。在此需要采用String类中的一个方法,一般用法如下: String str_year=String.valueOf(year) Switch语句 switch语句能够根据表达式的值决定执行多个操作中的一个或者几个。switch的一般格式为: switch (expression) { case value1:statement1;break; …… case valueN:statemendN;break; ..整理分享.. WORD完美格式 [default:default_Statement;] } expression可以返回任一简单类型的值,case子句中的值valueI必须是常量,而且所有case子句中的值应是不同的。多分支语句把表达式返回的值与每个case 子句中的值相比,如果匹配成功,则执行该case子句后的语句序列,否则执行default中的语句;如果没有default,则不进行任何操作。而case字句中的break用于跳出switch,如果没有break,则switch会顺序执行下个case中的语句,直至遇到break语句或者执行完所有的case或者default语句。 switch语句中使用的表达式必须为整型表达式或不丢失便可显式地转换为整型的表达式。不丢失便可显式地转换为整型的数据类型包括字节、字符和短型数。对于长型数、浮点数和双精度数等数据类型,需明确地转换。case值必须能够求值或编译时能隐含地转换为整型的常量表达式。 图6-2 程序流程图 程序实现过程 可以先获取系统的日期,然后将月份和日期统一成二位整型的格式,再将获取的系统时间拼成字符串,最后利用For循环和swtich语句获取中文时间信息并显示。图6-2显示程序流程图 2、部分程序关键源码(exer6.jsp) <%@ page contentType=\"text/html; charset=gb2312\" import=\"java.util.*\" %> <% Date dtt=new Date(); int year=dtt.getYear(); year+=1900; //获取月份 int month=dtt.getMonth(); month+=1; ..整理分享.. WORD完美格式 //获取日期 int date=dtt.getDate(); //获取星期 int day=dtt.getDay(); //将int型转换为String String str_year=String.valueOf(year); String str_month=String.valueOf(month); String str_date=String.valueOf(date); String str_day=String.valueOf(day); //将月份和日期统一成二位整型 if(str_month.length()==1) { str_month=\"0\"+str_month; } if(str_date.length()==1) { str_date=\"0\"+str_date; } //将获取的系统时间拼成字符串 String str_i=str_year+str_month+str_date+str_day; String chi_num=\"\"; String chi_num_total=\"\"; char cha_i=' '; String chi_year=null; String chi_month=null; String chi_date=null; String chi_day=null; //用for循环和switch语句获取中文时间信息 for(int j=0;j if(j==4||j==6) { if((cha_i=='1')||(cha_i=='0')) {chi_num_total=\"\";} if(cha_i!='0') {chi_num_total+=\"十\";} ..整理分享.. WORD完美格式 } if(j==5) { chi_month=chi_num_total; chi_num_total=\"\"; } if(j==7) { chi_date=chi_num_total; chi_num_total=\"\"; } if(j==8) { if(cha_i=='0') {chi_num_total=\"日\";} chi_day=chi_num_total; } } //得到最终结果 String chi_dt=\"今天是\"+chi_year+\"年\"+chi_month+\"月\"+chi_date+\"日 \"+\"星期\"+chi_day; %> <%=chi_dt%> 四、实验思考 上述exer6.jsp中,for循环体中有这样一段语句: if(j==4||j==6) { if((cha_i=='1')||(cha_i=='0')) {chi_num_total=\"\";} if(cha_i!='0') {chi_num_total+=\"十\";} } 试问:如果将语句改成: if(j==4||j==6) { if(cha_i=='0') {chi_num_total=\"\";} else {chi_num_total+=\"十\";} } 这样修改能不能正确显示,为什么? 五、综合实验 判断服务端时间并显示中文问候 编写JSP程序,运行后,程序将根据服务端的不同时间段,在浏览器上显示“早上好”、“中午好”、“下午好”和“晚上好”,如图6-3所示。 ..整理分享.. WORD完美格式 图6-3 显示结果 提示:利用Date类的getHours()函数可得到24小时制的服务器端时间,并根据当前时间来判断是何段时间: 5~11点:早上;11~14点:中午 14~18点:下午;18点~5点:晚上 实验七 JSP内置对象(4课时) 一、实验目的 (1)掌握JSP中内置request对象的使用 (2)掌握response对象的使用,并熟悉setContentType方法 (3)掌握out对象的使用 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 三、实验内容与步骤 1、request对象的使用(获取表单中提交的信息) 在jsp中,当用户通过浏览器请求一个页面时,浏览器将请求发送给服务器。按照HTTP协议,浏览器发送的请求具有一定的结构,请求包括一个请求行、头域和表单提交的信息体。使用request对象,可以获取用户浏览器提交的请求信息。request对象常用的方法是getParameter(String s),该方法获取表单提交的信息。 1)在ROOT目录下编写如下源码:exer7_1.jsp <%@ page contentType=\"text/html;Charset=GB2312\" %> <%@ taglib tagdir=\"/WEB-INF/tags\" prefix=\"com\"%> <% String textContent=request.getParameter(\"number\"); if(textContent==null) { out.println(\"请在文本框中输入数字,按提交按钮\"); } else { %> 调用Computer.tag文件负责计算平方根 2)在ROOT\ags目录下编写如下源码:computer.tag <%@ attribute name=\"number\" %> <% try{ double n=Double.parseDouble(number); if(n>=0) { double r=Math.sqrt(n) ; out.print(\" { out.print(\" catch(NumberFormatException e) { out.print(\" 3)在浏览器输入:http://localhost:8080/exer7_1.jsp,观察其运行结果 4)将Form提交请求的方法改成get,观察其运行结果,体会get方法和post方法的不同。 2、response对象的使用 (1)利用response对象的setContentType方法,改变显示方式。将下列源码保存为exer7_2.jsp,运行后观察其结果: <%@ page contentType=\"text/html;Charset=GB2312\" %> 在学习response对象的setContentType方法 <% String str=request.getParameter(\"submit\"); if(str==null) { str=\"\"; } if(str.equals(\"MS-Word显示\")) { response.setContentType(\"application/msword\"); } else if(str.equals(\"MS-Powerpoint显示\")) { response.setContentType(\"application/vnd.ms-powerpoint\"); } %> (2)利用response对象实现页面重定向。将下列源码保存为exer7_3.jsp和form.jsp,运行exer7_3.jsp后观察其结果: exer7_3.jsp: <%@ page contentType=\"text/html;charset=GB2312\" %> 填写姓名: form.jsp: <%@ page contentType=\"text/html;Charset=GB2312\" %> <% String str=null; str=request.getParameter(\"boy\"); if(str.length()==0) { response.sendRedirect(\"exer7_3.jsp\"); } else { out.print(\"欢迎您来到本网页!\"); ..整理分享.. WORD完美格式 out.print(str); } %> 3、out对象的使用 out对象是一个输出流,该对象调用相应的方法可以将数据发送到客户端浏览器的缓存中。其中println()和print()是常用的两个方法,其区别是:println()会向缓存区写入一个换行,而print()不写入换行。但是浏览器的显示区域目前不识别println()写入的换行,如果希望浏览器显示换行,应当向浏览器写入 下面的实例exer7_4使用out对象向客户输出包括表格等内容的信息,运行该实例并观察结果。 Exer7_4.jsp: <%@ page contentType=\"text/html;charset=GB2312\" %> <%@ page import=\"java.util.*\" %> <% int a=2200;long b=3456;boolean c=true; out.println(a); out.println(b); out.print(\" 以下是一个表格 <% out.print(\"\"); out.println(\" out.println(\" out.println(\" out.println(\" out.println(\" out.println(\" WORD完美格式 out.println(\" 四、设计性实验环节 1、编写两个页面inputNumber.jsp和computerAndShow.jsp,用户可以使用inputNumber.jsp提供的表单输入一个数字,并提交给computerAndShow.jsp页面。该页面通过内置对象获取inputNumber.jsp页面提交的数字,计算并显示该数的平方和立方,并用out对象输出结果。若inputNumber.jsp页面提交的不是数字,computerAndShow.jsp页面应能重定向到inputNumber.jsp页面。(必做) 2、编写程序register.html和register.jsp,做一个用户注册的界面,要求对用户填写的部分进行合法性检验,然后提交到register.jsp进行注册检验,若用户名为user开头的,就提示“该用户名已被注册”,若用户名为admin,就提示“欢迎您,管理员”,否则,就显示“注册成功”。(必做) 实验八 session对象(4课时) 一、实验目的 掌握JSP中内置session对象的使用 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 三、实验原理与内容 1、利用session对象存储数据。本实例利用session对象模拟购物车,存储客户的姓名和购买的商品,三个JSP页面分别是:main.jsp;food.jsp;count.jsp。代码如下,分析下列代码,完成实验练习(1) main.jsp <%@ page contentType=\"text/html;Charset=GB2312\" %> 欢迎来到本页面,请输入您的姓名 <% String name=request.getParameter(\"name\"); if(name==null) { name=\"\"; } else { session.setAttribute(\"customerName\ } %> <% if(name.length()>0) { %> 点击超链接,连接到food.jsp的页面,去采购食品。 欢迎去食品柜台! <% } %> food.jsp: <%@ page contentType=\"text/html;charset=GB2312\" %> 点击超链接,连接到main.jsp的页面,去修改姓名。 欢迎去main.jsp! 这里是食品柜台,请选择您要购买的食品: <% String foodName[]=request.getParameterValues(\"choice\"); if(foodName!=null) { for(int k=0;k 点击超链接,连接到count.jsp的页面,去查看购物车中的商品。 ..整理分享.. WORD完美格式 count.jsp: <%@ page contentType=\"text/html;Charset=GB2312\" %> <%@ page import=\"java.util.*\" %> 这里是结帐处,您的姓名以及选择的商品: <% String personName=(String)session.getAttribute(\"customerName\"); out.println(\" Enumeration enumGoods=session.getAttributeNames(); out.println(\" { String key=(String)enumGoods.nextElement(); String goods=(String)session.getAttribute(key); if(!(goods.equals(personName))) out.println(goods+\" 点击超链接,连接到food.jsp的页面,购买食品。 欢迎去food.jsp! 点击超链接,连接到main.jsp的页面,去修改姓名。 欢迎去main.jsp! Done
Last updated:March 2008
三角形的面积:\"+area; } else
\"+a+\不能构成一个三角形,无法计算面积\"); } } %>
jsp页面传递过来的三边:\"+sideA+\ double a=Double.parseDouble(sideA); double b=Double.parseDouble(sideB); double c=Double.parseDouble(sideC); out.println(getArea(a,b,c)); %>以下是调用Tag文件的效果:
\"+n+\"的平方根:\"); out.print(\"
\"+r); } else
\"+\"请输入一个正数\"); } }
\"+\"请输入数字字符\"); } %>
实现换行。
\"); out.println(c); %>\"); out.println(\"
\"); out.print(\"\") ; %>\"); \"); out.println(\"\"+\"姓名\"+\" \"); out.println(\"\"+\"性别\"+\" \"); out.println(\"\"+\"出生日期\"+\" \"); out.println(\"\"); \"); out.println(\"\"+\"张三\"+\" \"); out.println(\"\"+\"男\"+\" \");\"+\"1988年5月\"+\" \"); out.println(\"\"); \"); ..整理分享..\"+\"李四\"+\" \"); out.println(\"\"+\"男\"+\" \");\"+\"1987年10月\"+\" \"); out.println(\"
您的姓名:\"+personName);
购物车中的商品:
\"); while(enumGoods.hasMoreElements())
\"); } %>