1、 . JSP动态网页开发 实验〔训〕指导书 王振铎编 思源学院 电子信息工程学院 94 / 97 说 明 《JSP动态网页开发实训指导书》是与《JSP动态网页开发》理论教学相配套的实训教材,培养学生在动态网页程序开发方面的技能,使学生具备解决实际问题的能力。 实验教学容可以根据教学具体情况进展合理调整。 目录 实验一 JSP开发环境配置与测试1 实验二 Jsp根底
2、〔1〕11 实验三Jsp根底〔2〕15 实验四J S P 根底〔3〕19 实验五 J S P 置对象〔1〕22 实验六J S P 置对象〔2〕29 实验七Java bean 〔1〕33 实验八 JSP 中的文件操作39 实验九Java bean 〔2〕46 实验十 jsp 操作xml文件48 实验十一 java servlet58 实验十二用户注册程序62 实验十三留言板66 实验十四JSP Servlet用户登录程序93 实验十五MVC开发模式96 实验一 JSP开发环境配置与测试 一、实验目的 1、
3、了解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
4、 从Java公司官方〔.oracle./technetwork/java/index.html〕下载JDK,现在最新的是Java SE6 Update22,我们采用的JDK1.6 Update 21,只需要双击中下载到的EXE文件,点下一步即可安装。JDK安装好后,需要配置Java的环境变量,步骤如下: 〔1〕我的电脑->属性->高级选项卡->环境变量,翻开“环境变量〞对话框,在系统变量中新建以下环境变量: ①JAVA_HOME:表示Java SDK的安装目录,其值为: D:\Program Files\Java\jdk_21〔根据自己的实际安装位置进展调整〕。 ②CLASSPATH:
5、表示Java要访问的jar文件所在的目录,其值为:%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib。 ③并修改Path环境变量,在其中增加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 注意: ² 对于Path环境变量是添加,而不要删除原来的容,否那么很多Windows功能不能使用;假设有其他程序要用到自己的Java环境变量,请将第③步的容添加到Path环境变量的最后,以免影响其他程序的运行。 ² 字母不区分大小写,大写字母是遵照Java环境变量配置习惯。 〔2〕测试 翻开Windows的命令行窗口〔开场->运行,在弹出的窗口中输入c
6、md回车〕,输入javac然后回车,假设能显示javac的帮助信息,说明JDK安装成功,如下列图所示。 2、安装Tomcat 在Tomcat官方〔〕上下载Tomcat,现在最新版本是7.x,但还没有Eclipse插件,因此不能集成到MyEclipse集成开发环境中,这里使用6.028这个版本。安装时只需要一路next即可,安装完成后,也不需要设置环境变量,只要在IE浏览器地址栏中输入:localhost:8080回车,假设能出现Tomcat界面说明安装成功,如下列图所示。 3、安装MyEclipse 只需要一路Next即可,主要是进展相关配置。通过Window->Prefere
7、nces…菜单翻开配置对话框。说明:每设置一项要点“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
8、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
9、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新建JS
10、P页面。如图1-12所示。 图1-12 新建JSP页面 图1-13 设置JSP模板和文件名 输入文件名HelloWorld.jsp,并选择“Default JSP template〞,点击确定。 在页面的
标签中,输入以下代码: <% out.println("11、浏览器的地址栏中输入:localhost:8080/Demo/HelloWorld.jsp,出现如下界面。 注意:如果机房没有安装myeclipse可以安装jcreator编写jsp程序 例如: test.jsp <% page contentType="text/html;charset=GB2312" %>
这是一个简单的JSP页面 <% int i, sum=0; for(i=1;i<=100;i++) { sum=sum+i;
12、 } %>
1到100的连续和是:
<%=sum %>
13、每刷新一次浏览器,计数器的值自加1。 2.使用类申明编写一个求圆面积和周长的页面,用户在前台文本框中输入半径值,通过点击按钮求得圆面积和周长。 3.利用程序片求1到100的连续和。 三、实验容及步骤 1. 页面计数器程序的编写: 在ROOT文件夹中新建一名为jishuqi.jsp的文件,并写入代码: <%page contentType="text/html;charset=gbk" %> <%! int number=0; synchronized void countPeople() //synchronized同步 {number++;}
14、 %> <% countPeople(); %> 你是第<%=number%>个访问本站的用户! 运行结果:通过点击刷新按钮,计数器自动加1: 2. 圆类的编写,页面yuan.jsp: <%page contentType="text/html;charset=gbk" %>
请输入圆的半径:
<%! public class Circle { double 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!=nu16、ll) { r=Double.parseDouble(str); } else {r=1;} Circle circle=new Circle(r); //创立对象 %>
圆的面积是: <%=circle.area()%>
圆的周长是: <%=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+
17、) { sum=sum+i; } return sum; } %>
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页面中静态插入一个文件的容 三、实验容与步骤 “记事本
18、〞编写一个txt文件hello.txt。hello.txt的每行有假设干个英文单词,单词之间用空格分隔,每行之间用“
〞分隔,如下所示:
Hello123.txt
package apple void back public
private throw class hello welcome
1. first.jsp的具体要求
first.jsp使用page指令设置contentType属性的值是"text/html",使用include指令静态插入hello.txt文件。
程序代码:
<% page contentType="text/html; charse
19、t=GB2312"%> <% include file="hello.txt" %>
上面的英语信息是从hello.txt文件中加载的!
调试结果: 2. second.jsp的具体要求,second.jsp使用page指令设置contentType属性的值是"application/vnd.ms-powerpoint",使用include指令静态插入hello.txt文件。 程序代码: <% page contentType="application/vnd.ms-pow20、erpoint; charset=GB2312"%>
21、ml>
22、ame.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" %
23、>
24、head>
<% String s=request.getParameter("file"); File f=new File(s); if(f.exists()) { out.println("25、ut.println("
"+line);
}
}
else
{
%>
26、k.txt文件找不到时 实验五 J S P 置对象〔1〕 一、实验目的 了解request对象、response对象和out对象的根本使用方法。 二、实验要求 1. 掌握request获取表单数据的方法。 2. 掌握response对象的页面跳转。 3. 掌握out对象的输出。 三、实验容与步骤 1.设计一个圆面积输出的网页,要求利用表单输入圆的半径。 程序代码: <% page contentType="text/html;charset=gb2312" %>
<% //获得输入框中的27、容 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;
28、 } } %>
调试结果: 2. 设计一个用户登录的网页,判断用户名是“admin〞、密码是“1234”时,转向正确页面“ok.jsp〞,否那么转向错误页面〔err.jsp〕 程序代码: 登陆页面源代码 <% page contentType="text/html; charset=GB2312"%> <% page import="java.util.*" %> <%!30、 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
31、equals(Password)) { response.sendRedirect("ok.jsp"); } else { response.sendRedirect("err.jsp"); } } %>
ok.jsp页面源代码 <% page contentType="text/html; charset=GB2312"%>33、tml> err.jsp页面源代码 <% page contentType="text/html; charset=GB2312"%>
34、ody>
调试结果: 实验六J S P 置对象〔2〕 一、实验目的 了解session对象、applicaiton对象的根本使用方法。 二、实验要求 1. 掌握session对象的使用和编程。 2.掌握application对象的使用和编程。 三、实验容与步骤 1.利用session与application以及其它置对象,制作一个简易的聊天室程序或留言板程序 程序代码: Submit.jsp页面源代码,用于编辑聊天信息40、 <% page contentType="text/html;charset=GB2312" %>
messagePane.jsp页面源代码,获取留言板填写的信息,再将这些信息保存到application对42、象当中,以便用于查看。 <% page contentType="text/html;Charset= gb2312" %> <% page import="java.util.*" %>
<%! Vector v=new Vector(); int i=0; ServletContext application; synchronized void sendMessage(String s) { application=getServletContext();;43、 i++;
v.add("No."+i+",
"+s);
application.setAttribute("Mess",v);
}
%>
<% String name=request.getParameter("peopleName");
String title=request.getParameter("Title");
String messages=request.getParameter("messages");
i
44、f(name==null)
{name="guest"+(int)(Math.random()*10000);
}
if(title==null)
{title="无标题";
}
if(messages==null)
{messages="无信息";
}
String s=":"+name+"#"+"标题:"+title+"#"+"容:"+"
"+mes
45、sages; sendMessage(s); String info="您的信息已经提交!"; info=new String(info.getBytes("iso8859-1")); out.println(info); %> back showMessage.jsp页面源代码,用于显示留言信息。 <% page contentType="text/html;charset=GB2312" %> <
46、 page import="java.util.*" %>
<% Vector v=(Vector)application.getAttribute("Mess"); for(int i=0;i47、 { String str=fenxi.nextToken();
byte a[]=str.getBytes("ISO-8859-1");
str=new String(a);
out.print("
"+str);
}
}
%>
调试结果:
实
48、验七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页面,
49、在该页面中调用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) {radi
50、us=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"%>






