jsp实验报告
重庆交通大学
学生实验报告
实验课程名称 JSP程序设计
开课实验室管理学院计算机房
学院信息管理专业 2008 级 2 班
学生姓名秦志虎学号 08130213 开课时间 2011 至 2012 学年第一学期
实验1:熟悉MyEclipse
实验目的:安装MyEclipse并熟悉MyEclipse的操作环境,学习在MyEclipse环境中简单的创建、编辑和运行JSP页面相关操作。
实验要求:创建一个web项目并通过新建包和新建Jsp页面,编辑并运行该JSP页面。实验步骤及结果:
1.打开运MyEclipse软件。新建一个web项目。
2.新建一个MyTest的目录。
3.在MyTest的目录下新建一个Jsp页面,命名为Myjsp。
引用java文件:
<%@page import="tom.jiafei.*"%>
引用tag文件:
4.在系统提供的初始代码下不用编辑,直接运行JSP。
在浏览器中输入地址,得到结果
实验2.8:JSP页面的基本结构
实验目的:掌握怎样在JSP页面中使用成员变量,怎样使用Java程序片以及Java表达式。
实验要求:编写两个JSP页面,名字分别为inputName.jsp和people.jsp。
代码:
inputName.jsp:
<%@page contentType="text/html; charset=GB2312"%>
people.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<%!int count;
StringBuffer personList;
public void judge()
{
if(count==0)
personList=new StringBuffer();
}
public void addPerson(String p)
{
if(count==0)
personList.append(p);
else
personList.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()>20){ %>
judge();
addPerson(name);
%>
目前共有<%=count %>人浏览了该页,他们是:
<%=personList %>
实验结果:
inputName.jsp:
点击“送出”按钮后页面:
实验目的:掌握怎样在JSP页面中使用page指令设置contentType的值;使用include 指令在JSP页面中静态插入一个文件的内容。
实验要求:编写三个JSP页面:first.jsp、second.jsp、third.jsp。要求用“记事本”编写一个TXT文件hello.txt。hello.txt的每行有若干个英文单词,这些英文单词之间用空格分隔,每行之间用“
”分隔,如下所示:
hello.txt
my first page
public void hello welcome
相关部分代码:
first.jsp:
second.jsp:
<%@page contentType="application/vnd.ms-powerpoint; charset=GB2312" %>
<%@include file="hello.txt"%>
实验目的:掌握怎样在JSP页面中使用include标记动态加载文件;使用forward动作标记实现页面的转向。
实验要求:编写四个JSP页面:one.jsp、two.jsp、three.jsp和error.jsp。one.jsp、two.jsp和three.jsp页面都含有一个导航条,以便让用户方便地点击链接访问这三个页面,要求这三个页面通过使用include动作标记动态加载导航条文件head.txt。导航条文件head.txt的内容如下:
head.txt
<%@page contentType=”text/html; charset=GB2312” %>
one.jsp页面 | two.jsp页面 | three.jsp页面 |
部分代码:
one.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<%String num=request.getParameter("number");
if(num==null)
num="0";
try
{ int n=Integer.parseInt(num);
if(n>=1&&n<=50){
%>
else if(n>50&&n<=100){
%>
<%}
else if(n>100){
%>
<%}
}
catch(Exception e){
%>
<%} %>
two.jsp:
<%@page contentType="text/html; charset=GB2312"%>
this is two.jsp
<%String s=request.getParameter("txtnum");
out.println("
传递过来的值是:" + s);
%>
three.jsp:
<%@page contentType="text/html; charset=GB2312"%>
this is three.jsp
<%String s=request.getParameter("txtnum");
out.println("
传递过来的值是:" + s);
%>
error.jsp:
<%@page contentType="text/html; charset=GB2312"%>
this is error.jsp
<%String s=request.getParameter("mess");
out.println("
传递过来的值是:" + s);
%>
实验3.6:使用标记体
实验目的:灵活掌握在T ag标记中使用标记体。
实验要求:编写一个JSP页面:putImage.jsp和一个Tag文件Image.tag。JSP页面通过调用T ag文件来显示若干幅图像,通过使用标记体将HTML图像标记传递给被调用的T ag 文件。
代码:
putImage.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<%@taglib tagdir="/WEB-INF/tags/3_1"prefix="pic"%>
表格每行重复显示一幅图
Image.tag:
实验3.7:使用attribute指令和variable指令
实验目的:灵活掌握在T ag标记中使用attribute指令和variable指令。
实验要求:编写一个Tag文件GetArea.tag,负责计算三角形或梯形的面积,并将计算结果返回给调用该T ag文件的JSP页面。编写一个JSP页面inputAndShow.jsp,该页面负责向Tag文件提交三角形三边的长度或梯形的上底、下底和高,并负责显示Tag文件返回的相应面积。
代码:
inputAndShow.jsp
<%@page contentType="text/html; charset=GB2312"%>
<%@taglib tagdir="/WEB-INF/tags/3_2"prefix="computer"%>
输入的三个数值a,b,c(三角形三边的长度或梯形的上底、下底和高):
<%String sa=request.getParameter("a");
String sb=request.getParameter("b");
String sc=request.getParameter("c");
String scd=request.getParameter("R");
if(sa==null||sb==null||sc==null)
{ sa="0";
sb="0";
sc="0";
scd="0";
}
if(sa.length()>0&&sb.length()>0&&sc.length()>0){
%>
<%=message %>
<%=area %>
<%} %>
GetArea.tag
实验结果:
inputAndShow.jsp
输入2,2,2,按三角形提交:
输入2,2,2,按梯形提交:
实验4.6:request对象
实验目的:掌握怎样在JSP中使用内置对象request
实验要求:编写一个JSP页面inputNumber.jsp,该页面提供一个表单,用户可以通过表单输入两个数和四则运算符号提交给页面。用户提交表单后,JSP页面inputNumber.jsp 将计算任务交给一个Tag文件Computer.tag去完成。
代码:
inputNumber.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<%@taglib tagdir="/WEB-INF/tags/4_1"prefix="computer"%>
<%String a=request.getParameter("numberOne");
String b=request.getParameter("nu mberTwo");
String operator=request.getParameter("operator");
if(a==null||b==null)
{ a="";
b="";
}
if(a.length()>0&&b.length()>0){
%>
计算结果:<%=a %><%=operator %><%=b %>=<%=result %> <%} %>
Computer.tag:
<%@tag pageEncoding="GB2312"%>
<%@attribute name="numberA"required="true"%>
<%@attribute name="numberB"required="true"%>
<%@attribute name="operator"required="true"%>
<%@variable name-given="result"scope="AT_END"%>
<%
try
{
double a=Double.parseDouble(numberA);
double b=Double.parseDouble(numberB);
double r=0;
if(operator.equals("+"))
r=a+b;
else if(operator.equals("-"))
r=a-b;
else if(operator.equals("*"))
r=a*b;
else if(operator.equals("/"))
r=a/b;
jspContext.setAttribute("result",String.valueOf(r));
}
catch(Exception e)
{
jspContext.setAttribute("result","发生异常"+e.toString());
}
%>
实验结果:
inputNumber.jsp:
运行后:
实验4.7:response对象
实验目的:本实验的目的是让学生掌握怎样使用response对象动态响应用户的请求。实验要求:response对象对用户的请求作出动态响应,向用户端发送数据。Response 对象调用setContentType(String s)方法可以动态改变响应的contentType属性的值。response对象调用addHeader(String head,String value)方法可以动态改变响应头和响应头的值。response对象调用setStatus(int n)方法可以动态改变相应的状态行的内容。response对象调用sendRedirect(URL url)方法可以实现用户的重定向。
代码:
input.jsp:
<%@page contentType="text/html; charset=GB2312"%>
result.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<%String str=request.getParameter("number");
try
{ double num=Double.parseDouble(str);
if(num<0)
{ response.setContentType("text/html; charset=GB2312");
out.println(num + "的平方:" + (num*num));
}
else if(num>=0&&num<100)
{ response.setContentType("application/msword; charset=GB2312");
out.println(num + "的立方:" + (num*num*num));
}
else
{ response.setStatus(404);}
}
catch(Exception e)
{ response.sendRedirect("input.jsp"); } %>
实验结果:
input.jsp:
输入7提交:
输入5提交:
打开word内容:
实验4.8:session对象
实验目的:本实验的目的是让学生掌握怎样使用session对象存储和用户有关的数据。实验要求:编写四个JSP页面inputGuess.jsp、result.jsp、small.jsp、large.jsp和success.jsp,实现猜数字游戏。
代码:
inputGuess.jsp:
<%@page contentType="text/html; charset=GB2312"%>
随机分给了你一个1到100之间的数,请猜测!
<%int number=(int)(Math.random()*100)+1;
session.setAttribute("count",new Integer(0));
session.setAttribute("save",new Integer(number));
%>
result.jsp:
<%String str=request.getParameter("gnum");
if(str.length()==0)
{ response.sendRedirect("inputGuess.jsp");}
int gueNum=-1;
try
{ gueNum=Integer.parseInt(str);
int realNum=((Integer)session.getAttribute("save")).intValue();
if(gueNum==realNum)
{ int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
response.sendRedirect("success.jsp");
}
else if(gueNum>realNum)
{ int n=((Integer)session.getAttribute("count")).intValue();
n=n+1;
session.setAttribute("count",new Integer(n));
response.sendRedirect("large.jsp");
}
else if(gueNum { int n=((Integer)session.getAttribute("count")).intValue(); n=n+1; session.setAttribute("count",new Integer(n)); response.sendRedirect("small.jsp"); } } catch(Exception e) { response.sendRedirect("inputGuess.jsp");} %> small.jsp: <%@page contentType="text/html; charset=GB2312"%>
large.jsp:
<%@page contentType="text/html; charset=GB2312"%>
success.jsp:
<%@page contentType="text/html; charset=GB2312"%>
<%int count=((Integer)session.getAttribute("count")).intValue();
int save=((Integer)session.getAttribute("save")).intValue();
%>
恭喜你,猜对了
您共猜了<%=count %>次,这个数字就是<%=save %>。
单击链接返回到页面:
实验结果:
inputGuess.jsp:
输入33送出:
根据提示猜测,最后结果: