《jsp动态网页开发》实验指导书.doc
. JSP动态网页开发实验训指导书王振铎编思源学院电子信息工程学院94 / 97说 明 JSP动态网页开发实训指导书是与JSP动态网页开发理论教学相配套的实训教材,培养学生在动态网页程序开发方面的技能,使学生具备解决实际问题的能力。实验教学容可以根据教学具体情况进展合理调整。目录实验一 JSP开发环境配置与测试1实验二 Jsp根底111实验三Jsp根底215实验四J S P 根底319实验五 J S P 置对象122实验六J S P 置对象229实验七Java bean 133实验八 JSP 中的文件操作39实验九Java bean 246实验十 jsp 操作xml文件48实验十一 java servlet58实验十二用户注册程序62实验十三留言板66实验十四JSP Servlet用户登录程序93实验十五MVC开发模式96实验一 JSP开发环境配置与测试一、实验目的1、了解JSP开发环境安装与配置;2、了解JSP开发的一般步骤。二、实验要求掌握简单程序的编写和运行。三、实验容1 JSP开发环境配置JSP编程使用的Java语言,所以运行JSP程序必须要有JVM的支持,还必须要有Java程序编辑、编译程序JDK的支持。现在企业流行的集成开发环境是Eclipse或MyEclipse。大多数应用程序都需要连接数据库,所以需要DBMS的支持。JSP应用程序是运行在效劳器上的,所以需要Web效劳器的支持,在此以Java 1.6 Update21、Tomcat、MySQL、MyEclipse6.5为例,安装配置JSP开发环境。1、安装JDK从Java公司官方.oracle./technetwork/java/index.html下载JDK,现在最新的是Java SE6 Update22,我们采用的JDK1.6 Update 21,只需要双击中下载到的EXE文件,点下一步即可安装。JDK安装好后,需要配置Java的环境变量,步骤如下:1我的电脑->属性->高级选项卡->环境变量,翻开“环境变量对话框,在系统变量中新建以下环境变量:JAVA_HOME:表示Java SDK的安装目录,其值为: D:Program FilesJavajdk_21根据自己的实际安装位置进展调整。CLASSPATH:表示Java要访问的jar文件所在的目录,其值为:%JAVA_HOME%lib;%JAVA_HOME%jrelib。并修改Path环境变量,在其中增加%JAVA_HOME%bin;%JAVA_HOME%jrebin;注意:² 对于Path环境变量是添加,而不要删除原来的容,否那么很多Windows功能不能使用;假设有其他程序要用到自己的Java环境变量,请将第步的容添加到Path环境变量的最后,以免影响其他程序的运行。² 字母不区分大小写,大写字母是遵照Java环境变量配置习惯。2测试翻开Windows的命令行窗口开场->运行,在弹出的窗口中输入cmd回车,输入javac然后回车,假设能显示javac的帮助信息,说明JDK安装成功,如下列图所示。2、安装Tomcat在Tomcat官方上下载Tomcat,现在最新版本是7.x,但还没有Eclipse插件,因此不能集成到MyEclipse集成开发环境中,这里使用6.028这个版本。安装时只需要一路next即可,安装完成后,也不需要设置环境变量,只要在IE浏览器地址栏中输入:localhost:8080回车,假设能出现Tomcat界面说明安装成功,如下列图所示。3、安装MyEclipse只需要一路Next即可,主要是进展相关配置。通过Window->Preferences菜单翻开配置对话框。说明:每设置一项要点“Apply按钮,保存所做的更改。1 在General下找到workspace,将字符编码方式Text file encoding设置为Other utf-8。如图1-1所示。图1-1 设置工作区字符编码方式2 设置常用文件的字符编码方式找到“MyEclipse Enterprise workbench->Files and Editors,将其下的常见文件字符编码方式统一设置为utf-8,如图1-2所示。图1-2 设置常见文件字符编码方式3 设置常用Web效劳器找到“MyEclipse Enterprise workbench->Servers,找到Tomcat->Tomcat6.x,将其设置为启用,并指定Tomcat安装目录,点“OK按钮保存设置即可。4、安装MySQL下载MySQL的安装文件,一路Next安装即可,并按下列图进展设置,如图1-3至1-10所示。图1-3 选择详细配置图1-4 选择开发模式图1-5 选择多用途数据库图1-6 选择决策支持图1-7 设置MySQL的访问端口,并添加防火墙例外图1-8 设置MySQL字符编码方式,以处理中文图1-9 将MySQL设置为Windows效劳图1-10 设置MySQL访问密码,并可以远程访问说明:以上设置是针对实验开发环境下的设置,假设为实际应用,可根据需要进展相应的设置。2 JSP程序开发步骤1、开发步骤翻开MyEclipse开发环境,选择File->New->Web Project,或在Package Explorer中右击选择New->Web Project,在翻开的对话框中,输入项目名Demo,并选定Java EE 5.0规支持,点击Finish。如图1-11所示。图1-11 MyEclipse新建Web项目1 第一个JSP页面右单击Demo项目的WebRoot目录,New->JSP新建JSP页面。如图1-12所示。图1-12 新建JSP页面图1-13 设置JSP模板和文件名输入文件名HelloWorld.jsp,并选择“Default JSP template,点击确定。在页面的<body>标签中,输入以下代码:<% out.println("<h1>Hello World!</h1>"); %>并保存。2 部署Demo点击部署按钮,选择Demo项目,点“Add按钮,在弹出的窗口中,选择Tomcat6.x效劳器,点Finish。3 运行Demo项目按按钮启动Tomcat效劳器,在IE或其他浏览器的地址栏中输入:localhost:8080/Demo/HelloWorld.jsp,出现如下界面。注意:如果机房没有安装myeclipse可以安装jcreator编写jsp程序例如:test.jsp<% page contentType="text/html;charset=GB2312" %><HTML><BODY BGCOLOR=cyan><FONT Size=1><P>这是一个简单的JSP页面 <% int i, sum=0;for(i=1;i<=100;i+) sum=sum+i; %><P> 1到100的连续和是:<BR> <%=sum %></FONT></BODY><HTML>在浏览器中输入localhost:8080/test.jsp如果页面出现 5050,那么说明tomcat工作正常说明:实验二 Jsp根底1一、实验目的掌握JSP根本编程方法,了解JSP页面的根本结构、变量和方法、类的申明、程序片、表达式等。能够使用JSP完成简单的程序设计,编写出可以正确运行的JSP页面。二、实验容1使用变量和方法申明编写一个简单的页面计数器,用户每刷新一次浏览器,计数器的值自加1。2使用类申明编写一个求圆面积和周长的页面,用户在前台文本框中输入半径值,通过点击按钮求得圆面积和周长。3利用程序片求1到100的连续和。三、实验容及步骤1. 页面计数器程序的编写:在ROOT文件夹中新建一名为jishuqi.jsp的文件,并写入代码:<%page contentType="text/html;charset=gbk" %><%! int number=0;synchronized void countPeople() /synchronized同步number+;%><%countPeople();%>你是第<%=number%>个访问本站的用户!运行结果:通过点击刷新按钮,计数器自动加1:2. 圆类的编写,页面yuan.jsp:<%page contentType="text/html;charset=gbk" %><p>请输入圆的半径:</p><form id="form1" name="form1" method="post" action=""> <label> <input name="r" type="text" id="r" /> </label> <label> <input type="submit" name="Submit" value="送出" /> </label></form><%!public class Circledouble r;Circle(double r) this.r=r; double area() return Math.PI*r*r; double zhouchang() return Math.PI*2*r; %><%String str=request.getParameter("r");double r;if(str!=null) r=Double.parseDouble(str); elser=1;Circle circle=new Circle(r); /创立对象%><p>圆的面积是:<%=circle.area()%><p>圆的周长是:<%=circle.zhouchang()%>3. 1-100连续和程序片的编写:<%page contentType="text/html;charset=gbk" %><%!long continueSum(int n)int sum=0;for(int i=1;i<=n;i+)sum=sum+i;return sum;%><p>1到100的连续和:<%long sum;sum=continueSum(100);out.print(""+sum);%>实验结果:1到100的连续和: 5050 实验三Jsp根底2一、实验目的1、掌握注释的使用方法;2、掌握JSP指令的语法格式及用法;二、实验要求1、掌握变量的声明及使用2、利用page指令设置contentType属性3.利用 include指令在JSP页面中静态插入一个文件的容三、实验容与步骤“记事本编写一个txt文件hello.txt。hello.txt的每行有假设干个英文单词,单词之间用空格分隔,每行之间用“<BR>分隔,如下所示:Hello123.txtpackage apple void back public<BR>private throw class hello welcome1.first.jsp的具体要求first.jsp使用page指令设置contentType属性的值是"text/html",使用include指令静态插入hello.txt文件。程序代码:<% page contentType="text/html; charset=GB2312"%><% include file="hello.txt" %><html><head></head><body><p>上面的英语信息是从hello.txt文件中加载的!</p></body></html>调试结果:2. second.jsp的具体要求,second.jsp使用page指令设置contentType属性的值是"application/vnd.ms-powerpoint",使用include指令静态插入hello.txt文件。程序代码:<% page contentType="application/vnd.ms-powerpoint; charset=GB2312"%><html><head></head><body><jsp:include page="hello.txt"/></body></html>调试结果:3. third.jsp的具体要求,third.jsp使用page指令设置contentType属性的值是"application/msword",使用include指令静态插入hello.txt文件。程序代码:<% page contentType="application/msword; charset=GB2312"%><html><head></head><body><jsp:include page="hello.txt"/></body></html>调试结果:实验四J S P 根底3一、实验目的掌握常用动作指令用法;。二、实验要求会利用使用forward实现页面的转向。三、实验容与步骤编写3个JSP页面:giveFileName.jsp、readFile.jsp和error.jsp。1、giveFileName.jsp的具体要求要求giveFileName.jsp页面使用include动作标记动态加载readFile.jsp页面,并将一个文件的名字比方ok.txt传递给被加载的readFile.jsp页面。2、readFile.jsp的具体要求要求readFile.jsp负责根据giveFileName.jsp页面传递过来的文件名字进展文件的读取操作,如果该文件不存在就使用Forward动作标记将用户转向error.jsp页面。3、error.jsp的具体要求负责显示错误信息。giveFileName.jsp文件源代码:<% page contentType="text/html;charset=GB2312" %><HTMLl><BODY>这是giveFileName.jsp页面<jsp:include page="readFile.jsp"><jsp:param name="file" value="D:Tomcat 6.0webappsROOTok.txt"/></jsp:include></BODY></HTML>readFile.jsp文件源代码:<% page contentType="text/html; charset=GB2312"%><% page import="java.io.*" %><html><head></head><body><%String s=request.getParameter("file"); File f=new File(s);if(f.exists()out.println("<br>文件"+s+"的容:");FileReader in=new FileReader(f);BufferedReader bIn=new BufferedReader(in);String line=null;while(line=bIn.readLine()!=null)out.println("<br>"+line);else%> <jsp:forward page="error.jsp"/><% %></body></html>error.jsp文件源代码:<% page contentType="text/html; charset=GB2312"%><html><head></head><body><p><h1>你要读取的文件不存在!</h1></p></body></html>调试结果:当ok.txt文件存在时当ok.txt文件找不到时实验五 J S P 置对象1一、实验目的了解request对象、response对象和out对象的根本使用方法。二、实验要求1. 掌握request获取表单数据的方法。2. 掌握response对象的页面跳转。3. 掌握out对象的输出。三、实验容与步骤1.设计一个圆面积输出的网页,要求利用表单输入圆的半径。程序代码:<% page contentType="text/html;charset=gb2312" %><HTML><BODY> <% /获得输入框中的容 String textContent=request.getParameter("girl"); double r=0,area=0,zhouchang=0; /强制将获得的字符串转换为Double类型if(textContent!=null) r=Double.parseDouble(textContent); if(r>=0) area=Math.PI*r*r;zhouchang=Math.PI*r*2; %> <FORM action="" method=post name=form>请输入半径!<br> <INPUT type="text" name="girl" value="<%=r%>"> <INPUT TYPE="submit" value="计算" name="submit"><p> 面积:<INPUT type="text" name="a" value="<%=area%>"> <br> 周长:<INPUT type="text" name="z" value="<%=zhouchang%>"> </FORM> </BODY></HTML>调试结果:2. 设计一个用户登录的网页,判断用户名是“admin、密码是“1234”时,转向正确页面“ok.jsp,否那么转向错误页面err.jsp程序代码:登陆页面源代码<% page contentType="text/html; charset=GB2312"%><% page import="java.util.*" %><html><head></head><body><%! String user1="admin" String password1="1234" %> <% /获得输入的用户名和密码 String User=request.getParameter("user"); String Password=request.getParameter("password"); if(User=null&&Password=null) else if(user1.equals(User) && password1.equals(Password) response.sendRedirect("ok.jsp"); else response.sendRedirect("err.jsp"); %><FORM action="" method=post name=form>用户名:<INPUT type="text" name="user" > <br>密  码:<INPUT type="text" name="password" > <p>            <INPUT TYPE="submit" value="登陆" name="submit" > </FORM> </body></html>ok.jsp页面源代码<% page contentType="text/html; charset=GB2312"%><html><head></head><body><p><h1>登陆成功!</h1></p><br><h3>欢送admin的到来!</h3></body></html>err.jsp页面源代码<% page contentType="text/html; charset=GB2312"%><html><head></head><body><p><h1>登陆失败!</h1></p><br>你的用户名或密码不正确!</body></html>调试结果:3. 设计一个会员注册的页面,根据用户输入的信息,利用程序输出该会员的信息到网页。程序代码:<% page contentType="text/html; charset=GB2312"%><html><head></head><body><form id="form1" name="form1" method="post" action=""> <table width="300" border="0" align="center"> <tr> <td width="100">用户名:</td> <td width="200"> <input type="text" name="name" /></td> </tr> <tr> <td>密 码:</td> <td width="200"><input type="text" name="password" /></td> </tr> <tr> <td>确认密码:</td> <td width="200"><input type="text" name="password1" /></td> </tr> <tr> <td>手机:</td> <td width="200"><input type="text" name="phone" /></td> </tr> <tr> <td>:</td> <td width="200"><input type="text" name="email" /></td> </tr> <tr > <td width="300" align="center""> <input type="submit" value="注册" /></td> </tr> </table> <p> </p> <table width="300" border="0" align="center"> <tr> <td>显示注册信息:</td> </tr> <tr> <td height="158"> <% /获得输入的用户信息 String Name=request.getParameter("name"); String Password=request.getParameter("password"); String Password1=request.getParameter("password1"); String Phone=request.getParameter("phone"); String Email=request.getParameter("email"); if(Name=null&&Password=null&&Password1=null&&Phone=null&&Email=null) out.println("请将用户信息填写完整!"); else out.println("用户名为:"+Name+"<br>"); out.println("密码为: "+Password+"<br>"); out.println("手机为: "+Phone+"<br>"); out.println("为: "+Email+"<br>"); %> </td> </tr> </table></form></body></html>调试结果:实验六J S P 置对象2一、实验目的了解session对象、applicaiton对象的根本使用方法。二、实验要求1. 掌握session对象的使用和编程。2掌握application对象的使用和编程。三、实验容与步骤1.利用session与application以及其它置对象,制作一个简易的聊天室程序或留言板程序程序代码:Submit.jsp页面源代码,用于编辑聊天信息。<% page contentType="text/html;charset=GB2312" %><HTML><BODY> <FORM action="messagePane.jsp" method="post" name="form"> 输入您的名字:<BR><INPUT type="text" name="peopleName"> <BR>输入您的留言标题:<BR><INPUT type="text" name="Title"> <BR>输入您的留言:<BR> <TEXTAREA name="messages" ROWs="10" COLS=36 WRAP="physical"></TEXTAREA> <BR><INPUT type="submit" value="提交信息" name="submit"> </FORM> <FORM action="showMessage.jsp" method="post" name="form1"> <INPUT type="submit" value="查看留言板" name="look"> </FORM></BODY></HTML>messagePane.jsp页面源代码,获取留言板填写的信息,再将这些信息保存到application对象当中,以便用于查看。<% page contentType="text/html;Charset= gb2312" %><% page import="java.util.*" %><HTML><BODY> <%! Vector v=new Vector(); int i=0; ServletContext application; synchronized void sendMessage(String s) application=getServletContext(); i+; v.add("No."+i+",<br>"+s); application.setAttribute("Mess",v); %> <% String name=request.getParameter("peopleName"); String title=request.getParameter("Title"); String messages=request.getParameter("messages"); if(name=null) name="guest"+(int)(Math.random()*10000); if(title=null) title="无标题" if(messages=null) messages="无信息" String s=":"+name+"#"+"标题:"+title+"#"+"容:"+"<BR>"+messages; sendMessage(s); String info="您的信息已经提交!" info=new String(info.getBytes("iso8859-1"); out.println(info); %> <A HREF="submit.jsp" >back</BODY></HTML>showMessage.jsp页面源代码,用于显示留言信息。<% page contentType="text/html;charset=GB2312" %><% page import="java.util.*" %><HTML><BODY> <% Vector v=(Vector)application.getAttribute("Mess"); for(int i=0;i<v.size();i+) String message=(String)v.elementAt(i);StringTokenizer fenxi=new StringTokenizer(message,"#"); while(fenxi.hasMoreTokens() String str=fenxi.nextToken(); byte a=str.getBytes("ISO-8859-1"); str=new String(a); out.print("<BR>"+str); %></BODY></HTML>调试结果:实验七Java bean 1一、实验目的掌握JAVABEAN的编写方法及使用。二、实验要求1. 会编写bean。2会调用编好的bean。三、实验容与步骤1. 圆的javabean编写及调用1 编写一个JavaBean,名为Circle.java,该类有一个半径属性,名为radius,根据JavaBean的格式完成SET和GET方法,并写出计算圆面积和圆周长的方法; 2. 将该类编译后的.class文件存放于tomcat安装路径下的Tomcat5.0/webapps/root/web-inf/classes;3 编写一个useBean.jsp页面,在该页面中调用Circle.class,完成对半径的设置和读取,并计算面积和周长。程序代码:Circle.java文件package sd;import java.io.*;public class Circle int radius; double area,length; public Circle() public int getRadius() return radius; public void setRadius(int newRadius) radius=newRadius; public double circleArea() return Math.PI*radius*radius; public double circlLength() return 2.0*Math.PI*radius; useBean.jsp文件:<% page contentType="text/html;charset=GB2312" %><% page import="sd.Circle"%> <HTML><BODY bgcolor=cyan><Fo