资源描述
Java语言案例开发实验指导书
实验学时:24
序号
实验名称
内容要求
实验
学时
每组
人数
实验
属性
开出
要求
1
实验一JSP实验环境组建与JSP应用
JSP运行原理;JSP开发环境的搭配;创建第1个JSP程序并部署运行。
2
1
综合
必做
2
实验二 JSP语法
JSP脚本元素;掌握JSP注释方式;掌握JSP指令元素;掌握JSP动作元素的相关知识。
2
1
综合
必做
3
实验三JSP内置对象
内置对象的概念;请求对象request;响应对象response;会话对象session;多客户端共享对象application;页面对象page和页面上下文对象pageContext; 输出对象out、配置对象config、异常对象exception。
4
1
综合
必做
4
实验四JavaBean组件技术
JavaBean属性、作用域和应用实例分析
4
1
综合
必做
5
实验五 Servlet技术
获取运行环境信息的方法;Servlet会话设置和异常设置;Servlet过滤器和监听器的工作原理;Servlet过滤器和监听器的具体应用。
6
1
综合
必做
6
实验六JDBC技术
JDBC执行步骤;JDBC的常用接口及使用方法;如何应用JDBC事务;如何利用数据库连接池技术访问数据库。
6
1
综合
必做
实验一 JSP实验环境组建与JSP应用(2学时)
一、实验目的
(1)通过运行程序,了解JSP的运行原理;
(2)掌握JSP开发环境的配置和部署;
(3)部署运行JSP程序。
二、实验内容
1.开发环境搭建
Step1:安装和设置JDK
以jdk1.6为例,安装位置C:\Program Files\Java\jdk1.6.0_12
创建环境变量:JAVA_HOME为C:\Program Files\Java\jdk1.6.0_12
在建环境变量PATH中添加:%JAVA_HOME%\bin;
创建环境变量CLASSPATH:
%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
Step2:安装支持JSP的Web服务器
以Tomcat6.0.29为例,安装位置d:\Tomcat6
Step3:安装MyEclipse
安装MyEclipse9
Step4:设置Tomcat,可以从MyEclipse中直接启动Tomcat6
操作步骤:WindowàPreferencesàMyEclipse Enterprise Workbenchà MyEclipseàServersàTomcatàTomcat6.x
l Tomcat Server选择Enable
l Tomcat home directory:d:\tomcat6
l 设置Tomcat运行使用的JDK:展开Tomcat6.x,单击JDK,单击tomcat JDK name:后的Add,在打开的页面中,单击JRE home后的Directory按钮,选择输入C:\Program Files\Java\jdk1.6.0_12
2.开发和运行JSP程序
n 创建Web项目
FileàNewàWeb Project(如:Myjsp)
n 新建JSP文件(如firstJsp.jsp)
n 编辑JSP文件
n 发布项目到Tomcat
右击项目名称MyjspàMyEclipseàAdd and Remove Project Deployments
Project:选择Myjsp项目,并单击Add,弹出Project Deployments对话框,
在对话框中,选择server为Tomcat 6.x,并单击Finish
n 运行测试
n 启动Tomcat 6.x
n 运行JSP文件
浏览器中输入:http://localhost:8080/Myjsp/firstJsp.jsp
3.练习
(1)编写一个JSP程序,在页面中输入系统时间,要求:输入的系统时间时判断当前时间是“上午”、“中午”还是“下午”,并给出友好的提示信息。例如,当前系统时间是上午,在页面输出“早上好,新的一天即将开始,你准备好了吗?”;当前系统时间是中午,在页面输出“午休时间,正午好时光!”;当前系统时间是下午,在页面中输出“下午继续努力工作吧”。
参考代码:
<%@ page language="java" import="java.util.*,java.text.*" pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>output the system time!</title>
</head>
<body>
<%
Date d=new Date();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time=format.format(d);
out.println("Current time is "+time);%><br>
<%
//Excise1.5
int h=d.getHours();
if(h>=1 && h<=12)
out.println(h+"hour Good morning");
else if(h>=13 && h<=16)
out.println(h+"hour Good aftermoon");
else
out.println(h+"hour Good evening");
%>
</body>
</html>
(2)编写一个电子商城的用户注册页面,要求该主页面中包含用户设置的用户名、密码、真实姓名、性别、年龄等表单,并使用Javascript编写函数,当用户点击“提交”按钮时,会检查用户名、密码、真实姓名等项是否为空。
三、复习和预习内容
眼过千遍不如手动一遍,所以一定要多动手写程序,才可能真正的理解程序的逻辑和内涵。
复习JSP程序的结构、部署和运行过程;预习JSP语法的相关内容。希望大家能在实验中多思考,多给自己提问题,多设想几种可能。做实验时不要满足于验证书本知识。在以后的实验中,请读者自己设计具体的实验步骤,尽可能自己补充增加一些内容,以提高自己的实践能力。
实验二 JSP语法(2学时)
一、实验目的
(1)掌握JSP文件的组成、指令元素、动作元素等的使用。
(2)在实际应用中,灵活使用JSP中的各种元素。
二、实验内容
1、编写两个JSP页面,分别为inputName.jsp和people.jsp。
(1)inputName.jsp:有一个表单,用户通过该表单输入自己的姓名并提交给people.jsp页面。
(2)people.jsp:名字为person、类型是StringBuffer以及名字是count、类型为int的成员变量。该页面有public void judge ()方法。该方法负责创建person对象,当count的值是0时,judge ()方法创建person对象。该页面有public void addPerson(String p)方法,该方法将参数p指定的字符串添加到成员变量person末尾,同时将count作自增运算。该页面在程序片中获取inputName.jsp页面提交的姓名,然后调用judge()创建person对象、调用addPerson方法将用户的姓名添加到成员变量person末尾。如果inputName.jsp页面没有提交姓名,或姓名含有的字符个数大于10,就使用<jsp:forward page="要转向的页面"/>标记将用户转到inputName.jsp页面。通过Java表达式输出person和count的值。
图3-1 输入姓名 inputName.jsp
图3-2 显示姓名和人数 people.jsp
(3)参考代码
inputName.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY bgcolor=cyan>
<FONT size=3>
<FORM action="people.jsp" method=get name=form>
请输入姓名:<INPUT type="text" name="name">
<BR> <INPUT TYPE="submit" value="送出" name=submit>
</FORM>
</BODY>
</HTML>
people.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=yellow>
<FONT Size=3>
<%!
int count;
StringBuffer person;
public void judge()
{
if(count==0)
person=new StringBuffer();
}
public void addPerson(String p)
{
if(count==0)
{
person.append(p);
}
else
{
person.append(","+p);
}
count++;
}
%>
<%
String name=request.getParameter("name");
byte bb[]=name.getBytes("iso-8859-1");
name=new String(bb);
if(name.length()==0||name.length()>10)
{
%> <jsp:forward page="inputName.jsp" />
<% }
judge();
addPerson(name);
%>
<BR> 目前共有<%=count%>人浏览了该页面,他们的名字是:
<BR> <%=person%>
</FONT>
</BODY>
</HTML>
2、JSP指令标记(选做)
编写三个JSP 页面:first.jsp 、second.jsp和third.jsp。另外,要求用“记事本”编写一个TXT文件hello.txt。hello.txt的每行有若干个英文单词,单词之间用空格分隔,每行之间用“<BR>”分隔,如下所示:
hello.txt
package apple void back public
<BR>
private throw class hello welcome
(1)first.jsp: 使用page指令设置contentType属性的值是text/plain,使用include指令静态插入hello.txt文件。
(2)second.jsp: 使用page指令设置contentType属性的值是application/vnd.ms-powerpoint,使用include指令静态插入hello.txt文件。
(3)third.jsp:使用page指令设置contentType属性的值是application/msword,使用include指令静态插入hello.txt文件。
图3-3 contentType的值是text/plain first.jsp
图3-4 contentType的值是application/vnd.ms-powerpoint second.jsp
图3-5 contentType的值是application/msword third.jsp
(3)参考代码
first.jsp
<%@ page contentType="text/plain" %>
<HTML>
<BODY >
<FONT size=4 color=blule>
<%@include file="hello.txt" %>
</FONT>
</BODY>
</HTML>
second.jsp
<%@ page contentType="application/vnd.ms-powerpoint" %>
<HTML>
<BODY >
<FONT size=2 color=blule>
<%@include file="hello.txt" %>
</FONT>
</BODY>
</HTML>
third.jsp
<%@ page contentType="application/msword" %>
<HTML>
<BODY >
<FONT size=4 color=blule>
<%@include file="hello.txt" %>
</FONT>
</BODY>
</HTML>
3、JSP动作标记(选做)
编写四个JSP 页面:one.jsp 、two.jsp、three.jsp和error.jsp。one.jsp 、two.jsp和three.jsp页面都含有一个导航条,以便让用户方便地单击超链接访问这三个页面,要求这三个页面通过使用include动作标记动态加载导航条文件head.txt。
head.txt
<%@ page contentType="text/html;charset=GB2312" %>
<table cellSpacing="1" cellPadding="1" width="60%" align="center"
border="0" >
<tr valign="bottom">
<td><A href="one.jsp"><font size=3>one.jsp页面</font></A></td>
<td><A href="two.jsp"><font size=3>two.jsp页面</font></A></td>
<td><A href="three.jsp"><font size=3>three.jsp页面</font></A></td>
</tr>
</Font>
</table>
(1)one.jsp: 有一个表单,用户使用该表单可以输入一个1~100之间的整数,并提交给该页面;如果输入的整数在50~100之间(不包括50)就转向three.jsp,如果在1~50之间就转向two.jsp;如果输入不符合要求就转向error.jsp。要求forward标记在实现页面转向时,使用param子标记将整数传递到转向的two.jsp或three.jsp页面,将有关输入错误传递到转向的error.jsp页面。
(2)two.jsp、three.jsp和error.jsp: 要求two.jsp和three.jsp能输出one.jsp传递过来的值,并显示一幅图像,该图像的宽和高刚好是one.jsp页面传递过来的值。error.jsp页面能显示有关的错误信息和一幅图像。
图3-6 使用include动作标记加载导航条 one.jsp
图3-7 得到param子标记传递来的值 two.jsp
图3-8 得到param子标记传递来的值 three.jsp
error.jsp(效果如图1-9所示)
图3-9 显示错误信息
(3) 参考代码
one.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HEAD>
<jsp:include page="head.txt"/>
</HEAD>
<HTML>
<BODY bgcolor=yellow>
<FORM action="" method=get name=form>
请输入1至100之间的整数:<INPUT type="text" name="number">
<BR> <INPUT TYPE="submit" value="送出" name=submit>
</FORM>
<%
String num=request.getParameter("number");
if(num==null)
{ num="0";
}
try
{
int n=Integer.parseInt(num);
if(n>=1&&n<=50)
{
%> <jsp:forward page="two.jsp" >
<jsp:param name="number" value="<%=n%>" />
</jsp:forward>
<% }
else if(n>50&&n<=100)
{
%> <jsp:forward page="three.jsp" >
<jsp:param name="number" value="<%=n%>" />
</jsp:forward>
<% }
}
catch(Exception e)
{
%> <jsp:forward page="error.jsp" >
<jsp:param name="mess" value="<%=e.toString()%>" />
</jsp:forward>
<% }
%>
</BODY>
</HTML>
two.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HEAD>
<jsp:include page="head.txt"/>
</HEAD>
<HTML>
<BODY bgcolor=yellow>
<P><Font size=2 color=blue>
This is two.jsp.
</Font>
<Font size=3>
<%
String s=request.getParameter("number");
out.println("<BR>传递过来的值是"+s);
%>
<BR><img src="a.jpg" width="<%=s%>" height="<%=s%>" ></img>
</FONT>
</BODY>
</HTML>
three.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HEAD>
<jsp:include page="head.txt"/>
</HEAD>
<HTML>
<BODY bgcolor=yellow>
<P><Font size=2 color=red>
This is three.jsp.
</Font>
<Font size=3>
<%
String s=request.getParameter("number");
out.println("<BR>传递过来的值是"+s);
%>
<BR><img src="b.jpg" width="<%=s%>" height="<%=s%>" ></img>
</FONT>
</BODY>
</HTML>
error.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HEAD>
<jsp:include page="head.txt"/>
</HEAD>
<HTML>
<BODY bgcolor=yellow>
<P><Font size=5 color=red>
This is error.jsp.
</Font>
<Font size=2>
<%
String s=request.getParameter("mess");
out.println("<BR>传递过来的错误信息"+s);
%>
<BR><img src="c.jpg" width="120" height="120" ></img>
</FONT>
</BODY>
</HTML>
三、复习和预习内容
眼过千遍不如手动一遍,所以一定要多动手写程序,才可能真正的理解程序的逻辑和内涵。
复习JSP语法;预习JSP内置对象的相关内容。希望大家能在实验中多思考,多给自己提问题,多设想几种可能。做实验时不要满足于验证书本知识。在以后的实验中,请读者自己设计具体的实验步骤,尽可能自己补充增加一些内容,以提高自己的实践能力。
实验三 JSP内置对象(4学时)
一、实验目的
(1)掌握内置对象request、response、session、application、out和exception等的含义、用法和作用域范围。
(2)在实际应用中,根据不同的需求使用JSP不同作用域范围的内置对象。
二、实验内容
1、对实验二的内容进行扩展,必须实现以下4个jsp文件,采用jsp+JavaBean实现。
(1) login.jsp:登录页面,如图4-1所示。
图4-1
(2) doLogin.jsp(无界面):登录处理页面,假定正确的用户名为admin,口令为123。如果用户名和口令不正确则显示登录错误信息,否则登录成功后,重定向到messageBoard.jsp(留言板页面),可以进行留言。
(3) messageBoard.jsp: 留言板页面,能实现如图4-2所示的留言。
图4-2
(4) showMessage.jsp:显示留言信息页面,如图4-3所示。该页面能显示留言者(必须为login.jsp页面中输入的用户名)、标题和内容,要求能正确显示图3-1所示的留言内容。提示:留言者的用session保存
图4-3
参考代码:
login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
</head>
<body >
<form action="doLogin.jsp">
<p>用户名:<input type="text" name="username"/></p>
<p>口 令:<input type="password" name="password"/><p>
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</form>
</body>
</html>
doLogin.jsp:
<%@ page language="java" pageEncoding="gb2312"%>
<%
String userName=request.getParameter("username");//获取用户名
String passWord=request.getParameter("password");//获取口令
if(userName.equals("admin") && passWord.equals("123")){ //用户名和密码正确
session.setAttribute("name",userName); //用户名写入session,显示留言时需要
response.sendRedirect("messageBoard.jsp"); //重定向到留言页面
}
else{
response.sendError(500,"登陆错误,用户名或密码不正确!");
}
%>
messageBoard.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<!-- 提交的是几个表单的测试 -->
<form name="form1" action="showMessage.jsp" method="post">
<table border="1" rules="rows">
<tr height="30">
<td>发言标题:</td>
<td><input type="text" name="title" size="35"></td>
</tr>
<tr>
<td>发言内容:</td>
<td><textarea name="content" rows="8" cols="34"></textarea></td>
</tr>
<tr align="center" height="30">
<td colspan="2">
<input type="submit" value="提交">
<input type="reset" value="重置">
</td>
</table>
</form>
showMessage.jsp:
<%@ page contentType="text/html; charset=GBK"%>
<jsp:useBean id="message" class="bean.Message" scope="request">
<jsp:setProperty name="message" property="*"/>
</jsp:useBean>
<html>
<title>显示留言信息</title>
<body>
留言者:<%=session.getAttribute("name") %><br>
<%=message.getTitle() %><br>
<%=message.getContent() %><br>
<%=request.getParameter("title") %><br>
<%=request.getParameter("content") %><br>
</body>
</html>
2、实现不同作用范围内的网页计数器,并查看其区别所在。(request,session,application)
3、在工程中增加一个页面,在页面中实现加减乘除的运算页面,并实现运算结果的计算显示功能。(选做)
关键代码:
<h1>计算测试</h1><br>
<form action="calculate.jsp" method="get">
运算数1:<input type="text" name="num1"><br>
运算数2:<input type="text" name="num2"><br>
<input type="submit" name="operation" value="+">
<input type="submit" name="operation" value="-">
<input type="submit" name="operation" value="*">
<input type="submit" name="operation" value="/">
</form>
<hr size=10 color="blue">
<%
double num1=0.0;
double num2=0.0;
double result=0.0; if(request.getParameter("num1")!=null)num1=Double.parseDouble(request.getParameter("num1")); if(request.getParameter("num2")!=null)num2=Double.parseDouble(request.getParameter("num2"));
String operation=request.getParameter("operation");
if(operation!=null)
{
if(operation.trim().equals("+"))
{result=num1+num2;
}
if(operation.trim().equals("-"))
{result=num1-num2;
}
if(operation.trim().equals("*"))
{result=num1*num2;
}
if(operation.trim().equals("/"))
{result=num1/num2;
}
out.write("<h1>"+num1+operation+num2+"="+result+"</h1>");
}
%>
三、复习和预习内容
眼过千遍不如手动一遍,所以一定要多动手写程序,才可能真正的理解程序的逻辑和内涵。
复习JSP内置对象;预习JavaBean组件的相关内容。希望大家能在实验中多思考,多给自己提问题,多设想几种可能。做实验时不要满足于验证书本知识。在以后的实验中,请读者自己设计具体的实验步骤,尽可能自己补充增加一些内容,以提高自己的实践能力。
实验四 JavaBean组件技术(4学时)
一、实验目的
(1)理解 JavaBean 的作用;
(2)能够定义 JavaBean;
(3)能在 jsp 页面中使用 JavaBean。
二、实验内容
1、实现客户在一个登录页面form.jsp(如图5-1)输入登录信息并单击“确定”后,跳转到另一个页面doForm.jsp(如图2-2)输出“用户名”和“口令”信息。
图5-1
图5-2
要求:分别用下列三种方法实现。
(1)创建一个JavaBean----User类,该类含有两个属性username和password,给每个属性增加相应的get和set方法。在doForm.jsp页面中用<jsp:useBean>动作标识实例化User类对象,再使用<jsp:setProperty>动作标识来把客户在form.jsp表单中填写的值赋给对象,最后用<jsp:getProperty>在页面输出结果。
(2)创建一个JavaBean----User类,该类含有两个属性username和password,给每个属性增加相应的get和set方法。在doForm.jsp页面中采用Java以jsp脚本代码(scriptlet)方式实例化User类对象,用setAttribute()函数把对象写入request或session中,再使用<jsp:setProperty>动作标识来把客户在form.jsp表单中填写的值赋给对象,最后用jsp表达式的方式把对象的信息输出到页面中。
(3)不创建JavaBean----User类。在doForm.jsp页面中用getParameter()来获取客户在form.jsp表单中填写的值,最后输出相关信息。
参考代码:
form.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>My JSP 'forward1.jsp' starting page</title>
</head>
<body>
<form name=form1 method="post" action="doForm.jsp" onSubmit="return checkInput()" >
<p>Enter your system</p>
<p>Name:
<input type="text" name="username" />
<p>Password:
<input type="password" name="password" />
<p> <input type="submit" name="login" value="Login"/>
</form>
</body>
<script language="javascript">
function checkInput()
{
if(""==document.form1.username.value || ""==document.form1.password.value ){
window.alert("Please input name and password!");
return false;
}
}
</script>
</html>
doform.jsp
<%@ page language="java" import="java.util.*,bean.User" pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>doForm.jsp page</title>
</head>
<body>
<!---The third method -->
<%="The output of third method:" %><b
展开阅读全文