2015春季学期中法班JSP程序设计实验报告-陈亭宇 - 图文

更新时间:2023-09-19 02:15:01 阅读量: 小学教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

JSP程序设计实验报告

国际教育学院 中法计122班

陈亭宇 122918

2015秋季学期

实 验 说 明

《JSP编程技术》JSP(Java Server Pages)是基于Java 语言的一种Web应用开发技术,利用这一技术可以建立安全、跨平台的先进动态网站。该课程作为电子商务专业的一门专业课,主要介绍JSP程序设计的基本知识,为日后学生进行编程设计打下牢固的程序设计语言基础。

实验课是《网络编程技术--JSP》的重要实践环节。通过实验,使学生加深理解、验证、巩固课堂教学内容,加深对JSP编程设计的过程、方法的理解,充分发挥学生的想象力和创新能力。本实验课程共开设5个实验项目。

实验方式与基本要求: 学生须在实验前预习相应实验内容,熟悉实验的基本原理、方法及要求、制定好上机步骤,弄清实验目的;实验每次均为4学时,学生须按时到场;要求学生掌握程序设计的各种基本方法与步骤,并在实验中得到提高。

考核及报告: 实验时立将各种问题与结果记录下来,实验内容可以通过截图等方式存入U盘,并在课后完成实验报告内容;课程总成绩应为理论考核、实验成绩、平时成绩的综合;其中实验课程成绩在平时成绩中,平时成绩共占30%,理论课成绩占70%。

实验一 JSP基本操作

1.实验目的

(1)掌握怎样设置Web服务目录、怎样访问Web服务目录下的JSP页面。 (2)掌握怎样在JSP页面中使用成员变量、怎样使用Java程序片、Java表达式。

2.实验内容

第一部分:在JSP页面中实现面向过程编程 1. 输出所有1到1000内的完数。(perfect.jsp)

一个数如果恰好等于除它本身外的因子之和,这个数就称为\完数\,也叫“完美数”。例如6=1+2+3.(6的因子是1,2,3),因此,6 就是一个完数。

代码: <%@ page language=\ contentType=\ pageEncoding=\%> Perfect number 所有1到1000内的完数: <%int i,j; for(i=1; i<=1000;i++){ int sum = 0; for(j=1;j

输出界面:

2. 输出乘法口诀表。(multi.jsp)

代码:

<%@ page language=\ contentType=\charset=ISO-8859-1\ pageEncoding=\%> Insert title here <%int i,j,k=1; for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ k=i*j; out.println(i+\+j+\+k); } out.print(\); } %>

输出界面:

第二部分:Web服务目录

1、实验内容 编写两个JSP 页面,名字分别为inputName.jsp和people.jsp。 2、实验要求

1)在硬盘分区D下新建一个目录,名字为:student,将student设置为Web服务目录,并为该Web服务目录指定名字为practice的虚拟目录。

2)启动Tomcat服务器(如果已经启动,必须关闭Tomcat服务器,并重新启动)。 3)用文本编辑器编写一个JSP页,并保存到Web服务目录student中。 4)用浏览器访问Web服务目录student中的JSP页面。 5)inputName.jsp的具体要求

该页面有一个表单,用户通过该表单输入自己的姓名并提交给people.jsp页面。 6)people.jsp的具体要求

(1) JSP页面有名字为person、类型是StringBuffer以及名字是count,类型为int的成员变量。

(2) JSP有public void judge ()方法。该方法负责创建person对象,当count的值是0 时,judge ()方法创建person对象。

(3) JSP有public void addPerson(String p)的方法,该方法将参数p指定的字符串尾加到操作成员变量person,同时将count作自增运算。

(4) JSP页面在程序片中获取inputName.jsp页面提交的姓名,然后调用judge ()创建person对象、调用addPerson方法将用户的姓名尾加到成员变量person。

(5) 如果inputName.jsp页面没有提交姓名,或姓名含有的字符个数大于10,就使用

(6) 通过Java表达式输出person和count的值。 ( 7)写出jsp文件的源代码、运行结果(给出截图)。 代码:

InputName.jsp <%@ page language=\ contentType=\charset=ISO-8859-1\ pageEncoding=\%> Insert title here

People.jsp <%@ page language=\ contentType=\ pageEncoding=\%> Insert title here <%!int count; StringBuffer person; public void judge(){ } public void addPerson(String p){ } %> <% String name=request.getParameter(\); byte a[]=name.getBytes(\); name= new String(a); if(name.length()==0||name.length()>10) {%> <% } judge(); addPerson(name); %> There is <%=count %> view this page,name list:<%=person %>>
if(count==0){ } count++; person.append(p); person.append(\+p); }else{ if(count==0) person= new StringBuffer();

程序结果界面。 inputName.jsp

图1 输入姓名

people.jsp(效果如图2所示)

图2 显示姓名和人数

实验二 JSP指令标签的使用

1.实验目的

(1)掌握怎样在JSP页面中使用page指令设置contentType的值;使用include指令在JSP页面中静态插入一个文件的内容。

(2)掌握怎样在JSP页面中使用include标记加载文件;使用动态标签forward实现页面的转向。

2.实验内容

(1)编写三个JSP 页面:first.jsp 、second.jsp和third.jsp。另外,要求用“记事本”编写

一个txt文件hello.txt。hello.txt的每行有若干个英文单词,单词之间用空格分隔,每行之间用“
”分隔,如下所示: hello.txt

package apple void back public
private throw class hello welcome

(2)编写四个JSP 页面:one.jsp 、two.jsp、three.jsp和error.jsp。one.jsp 、two.jsp和three.jsp页面都含有一个一个导航条,以便让用户方便地单击超链接访问这三个页面,要求这三个页面通过使用include动作标记动态加载导航条文件:head.txt。导航条文件head.txt的内容如下所示: head.txt

<%@ page contentType=\

3.实验要求

(1)first.jsp的具体要求

first.jsp使用page指令设置contentType属性的值是text/plain,使用include指令静态插入hello.txt文件。

(2)second.jsp的具体要求

second.jsp 使用 page 指令设置 contentType 属性的值是 application/vnd.ms-powerpoint,使用include指令静态插入hello.txt文件。 (3)third.jsp的具体要求

third.jsp 使用 page 指令设置 contentType 属性的值是 application/msword,使用include指令静态插入hello.txt文件。 (4)one.jsp的具体要求

要求one.jsp页面有一个表单,用户使用该表单可以输入一个1至100之间的整数,并提交给被页面;如果输入的整数在50至100之间(不包括50)就转向three.jsp,如果在1至50之间就转向two.jsp;如果输入不符合要求就转向error.jsp。要求forward标记在实现页面转向时,使用param子标记将整数传递到转向的two.jsp或three.jsp页面,将有关输入错误传递到转向的error.jsp页面

(5) two.jsp、three.jsp和error.jsp的具体要求

要求two.jsp和three.jsp能输出one.jsp传递过来的值,并显示一幅图像,该图像的宽和高刚好是one.jsp页面传递过来的值。error页面能显示有关错误信息,和一幅图像。 (6)写出jsp文件的源代码、运行结果(截图)。 代码:

First.jsp <%@ page language=\ contentType=\ pageEncoding=\%> <%@include file =\ %> <%@include file = \ %> Second.jsp <%@ page language=\ contentType=\ pageEncoding=\%> <%@include file =\ %> <%@include file = \ %> Third.jsp <%@ page language=\ contentType=\ pageEncoding=\%> <%@include file =\ %> <%@include file = \ %>

One.jsp <%@ page language=https://www.bwwdw.com/plus/\ contentType=https://www.bwwdw.com/plus/\ pageEncoding=https://www.bwwdw.com/plus/\%> <%@include file =https://www.bwwdw.com/plus/\ %> one page <% } else if(n>50&&n<=100) { %> https://www.bwwdw.com/plus/\ /> <% } else { %> https://www.bwwdw.com/plus/\ /> <% } } %> Two.jsp <%@ page language=https://www.bwwdw.com/plus/\ contentType=https://www.bwwdw.com/plus/\ pageEncoding=https://www.bwwdw.com/plus/\%> <%@include file =https://www.bwwdw.com/plus/\ %> one page <% %> https://www.bwwdw.com/plus/\ height=<%=number %>> request.setCharacterEncoding(https://www.bwwdw.com/plus/\); String number = request.getParameter(https://www.bwwdw.com/plus/\); out.println(https://www.bwwdw.com/plus/\+https://www.bwwdw.com/plus/\+https://www.bwwdw.com/plus/\这是您输入的数字:https://www.bwwdw.com/plus/\); out.print(number+https://www.bwwdw.com/plus/\); Three.jsp <%@ page language=https://www.bwwdw.com/plus/\ contentType=https://www.bwwdw.com/plus/\ pageEncoding=https://www.bwwdw.com/plus/\%> <%@include file =https://www.bwwdw.com/plus/\ %> one page <% %> https://www.bwwdw.com/plus/\ height=<%=number %>> request.setCharacterEncoding(https://www.bwwdw.com/plus/\); String number = request.getParameter(https://www.bwwdw.com/plus/\); out.println(https://www.bwwdw.com/plus/\+https://www.bwwdw.com/plus/\+https://www.bwwdw.com/plus/\这是您输入的数字:https://www.bwwdw.com/plus/\); out.print(number+https://www.bwwdw.com/plus/\);

error.jsp <%@ page language=https://www.bwwdw.com/plus/\ contentType=https://www.bwwdw.com/plus/\ pageEncoding=https://www.bwwdw.com/plus/\%> <%@include file =https://www.bwwdw.com/plus/\ %> error <% request.setCharacterEncoding(https://www.bwwdw.com/plus/\); String errNum = request.getParameter(https://www.bwwdw.com/plus/\); out.println(https://www.bwwdw.com/plus/\); out.println(errNum+https://www.bwwdw.com/plus/\); %> https://www.bwwdw.com/plus/\ height=<%=errNum%>>

程序界面:

实验三 JSP内建对象的使用

1.实验目的

(1)掌握怎样在JSP中使用内置对象request,以及使用response对象动态响应用户的请求。

(2)掌握怎样使用session对象存储和用户有关的数据。

2.实验内容

(1)编写两个JSP页面input.jsp和result.jsp。input.jsp页面提交一个数字给result.jsp页面,result.jsp页面使用response对象做出动态响应。

(2)编写四个JSP 页面letter.jsp、guess.jsp、small.jsp、large.jsp,实现猜字母游戏。

3. 实验要求

(1)input.jsp的具体要求

input.jsp提供表单,用户在表单中输入一个数字,提交给result.jsp页面。 (2)result.jsp的具体要求

result.jsp页面首先使用request对象获得input.jsp页面提交的数字,然后根据数字的大小作出不同的响应。如果数字小与0,response对象的调用setContentType(String s)方法将contentType属性的值设置为text/plain,同时输出数字的平方;如果数字大于等于0并且小于100,response对象的调用setContentType(String s)方法将contentType属性的值设置为application/msword,同时输出数字的立方;如果数字大于等于100,response对象调用setStatus(int n)方法将状态行的内容设置为404;如果用户在input.jsp页面输入了非数字,response对象调用sendRedirect(URL url)方法将用户的重定向到input.jsp页面。 (3)letter.jsp的具体要求

将要猜测的a到z之间的字母放到一个数组中,随机分配给用户。该页面同时负责将这个字母存在用户的session对象中。该页面提供表单,用户可以使用该表单输入自己的猜测,并提交给guess.jsp页面。 (4)guess.jsp的具体要求

判断letter.jsp提交的猜测是否和用户的session对象中存放的那个字母相同,如果相同就输出用户session对象中的数据(猜测的次数及猜测的字母);如果不相同就将用户重定向到large.jsp或small.jsp。

(5)写出jsp文件的源代码、运行结果(截图)。

代码(1): Input.jsp <%@ page language=https://www.bwwdw.com/plus/\ contentType=https://www.bwwdw.com/plus/\ pageEncoding=https://www.bwwdw.com/plus/\%> Result.jsp <%@ page language=https://www.bwwdw.com/plus/\ contentType=https://www.bwwdw.com/plus/\ pageEncoding=https://www.bwwdw.com/plus/\%> <% String str=request.getParameter(https://www.bwwdw.com/plus/\); try{ } %> double number=Double.parseDouble(str); if(number<0){ } response.sendRedirect(https://www.bwwdw.com/plus/\); response.setContentType(https://www.bwwdw.com/plus/\); out.println(number+https://www.bwwdw.com/plus/\的平方:https://www.bwwdw.com/plus/\+(number*number)); response.setContentType(https://www.bwwdw.com/plus/\); out.println(number+https://www.bwwdw.com/plus/\的立方:https://www.bwwdw.com/plus/\+(number*number*number)); response.setStatus(404); }else if(number>=0&&number<100){ }else{ }catch(Exception e){

程序界面(1):

代码(2): Letter.jsp <%@ page language=\ contentType=\ pageEncoding=\%> Insert title here <% char sj[]=new char[]{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; int i=(int)(Math.random()*26); char save=sj[i]; session.setAttribute(\,new Integer(0)); session.setAttribute(\,new Character(save)); %> Guess.jsp <%@ page language=\ contentType=\ pageEncoding=\%> <%String str=request.getParameter(\); if(str.length()==0) { out.println(\请输入a到的z字母:\);%>
返回重玩 <%} else { char zm[]=str.toCharArray(); char guesszm=zm[0]; char realzm=c.charValue(); if(guesszm==realzm) { int n=((Integer)session.getAttribute(\)).intValue(); n=n+1; session.setAttribute(\,new Integer(n)); int Character out.println(\恭喜你,猜对了\); out.println(\您共猜对了\+count+\次\); out.println(\这个字母就是\+num);%>
请重新获得一个字母<%} int n=((Integer)session.getAttribute(\)).intValue(); n=n+1; session.setAttribute(\,new Integer(n)); response.sendRedirect(\); Character c=(Character)session.getAttribute(\); count=((Integer)session.getAttribute(\)).intValue(); num=((Character)session.getAttribute(\)).charValue(); else if(guesszm>realzm) { }else if(guesszm

Small.jsp <%@ page language=\ contentType=\ pageEncoding=\%> Insert title here

所采的字母比实际小,请再猜: Large.jsp <%@ page language=\ contentType=\ pageEncoding=\%> Insert title here

所猜的字母比实际大,请再猜:

程序界面:

实验四

1.实验目的

(1)掌握使用有效范围是request的bean显示汽车的基本信息。 (2)掌握使用有效范围是session的bean显示汽车的基本信息。 (3)对不同有效范围的bean进行对比。

2.实验内容

(1)编写一个JSP页面:inputAndShow.jsp和一个名字为car的Javabean,其中car由Car.class类负责创建。

(2)编写两个JSP页面:inputCar.jsp和showCar.jsp。bean可使用(1)中的Car.java。

3.实验要求

(1) inputAndShow.jsp的具体要求

inputAndShow.jsp页面提供一个表单。其中表单允许用户输入汽车的牌号、名称和生产日期,该表单将用户输入的信息提交给当前页面,当前页面调用名字为car的bean,并使用表单提交的数据设置car的有关属性的值,然后显示car的各个属性的值。 (2) Car.java的具体要求

编写的Car.java应当有刻画汽车号码、名称和生产日期的属性,并提供相应的getXxx和setXxx方法,来获取和修改这些属性的值。Car.java的包名是practice。 (3) inputCar.jsp的具体要求

inputCar.jsp页面提供一个表单。其中表单允许用户输入汽车的牌号、名称和生产日期,该表单将用户输入的信息提交给当前页面,当前页面调用名字为car的bean,并使用表单提交的数据设置car的有关属性的值。要求在inputCar.jsp提供一个超链接,以便用户单击这个超链接访问showCar.jsp页面。。 (4) showCar.jsp的具体要求

showCar.jsp调用名字为car的bean,并显示该bean的各个属性的值。 (5) 写出jsp文件的源代码、运行结果(截图),以及JSP实验课的心得体会。

代码: InputAndShow.Jsp

InputCar.jsp

JSP页面运行结果:

inputAndShow.jsp

图14 使用有效范围是request的bean

inputCar.jsp(效果如图15所示)

图15 设置有效范围是session的bean

showCar.jsp(效果如图16所示)

图16 显示有效范围是session的bean

实验五 JSP的文件操作

一、实验目的

1.继续掌握JavaBean的概念。 2.掌握JSP的输入和输出流。 3.掌握在页面中读写文件中的数据。 4.掌握如何进行文件操作。

二、实验内容

1.课余时间且在实验课之前,认真复习教材上关于文件操作的例题。

2.实现一系统,具体要求:该系统能够实现文件上传功能和下载功能,显示文件列表和读取文件内容功能。

3.要求在webapps目录下新建一个Web服务目录:test3。除特别要求外,本章实验中涉及的JSP页面均保存在test3中。

upfile.jsp实现文件上传功能,顶部为三个页面的超链接。页面效果如下图所示:

listdir.jsp实现列出服务目录所有文件和子目录的功能,并且能够显示指定文件内容功能。页面效果下图所示:

downfile.jsp实现文件下载功能,示例中为直接指定能够下载的文件,学生应该进行改进,实现能够根据服务目录的变化而变化的效果。页面效果如下图所示:

三、参考代码:代码仅供参考,学生可按照实验要求,参考本代码编写代码,并在代码中给出详细的注释。

upfile.jsp

<%@ page contentType=\<%@ page import=\

选择要上传的文件:

<% upFile.setRequest(request);

upFile.setSession(session); %>

listdir.jsp:

<%@ page contentType=\eadFile\

该目录

downfile.jsp

<%@ page contentType=\

<%@ page import=\

选择要下载的文件:

<% downFile.setResponse(response); %>

Java文件 UpFile.java

package tom.jiafei; import java.io.*;

import javax.servlet.http.*; public class UpFile

{ HttpServletRequest request;

HttpSession session; String upFileMessage=\

public void setRequest(HttpServletRequest request) { this.request=request; }

public void setSession(HttpSession session) { this.session=session; }

public String getUpFileMessage() { String fileName=null;

try{ String tempFileName=(String)session.getId(); //客户的session的id File f1=new File(\

FileOutputStream o=new FileOutputStream(f1); InputStream in=request.getInputStream(); byte b[]=new byte[10000]; int n;

while( (n=in.read(b))!=-1)

{ o.write(b,0,n); } o.close(); in.close();

RandomAccessFile random=new RandomAccessFile(f1,\

int second=1;

//读出f1的第2行,析取出上传文件的名字; String secondLine=null; while(second<=2)

{ secondLine=random.readLine();

second++;

本文来源:https://www.bwwdw.com/article/ap8h.html

Top