jsp实验报告

更新时间:2024-05-22 21:50:01 阅读量: 综合文库 文档下载

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

中南民族大学管理学院

学生实验报告

课程名称: JSP程序设计 年 级: 2010级 专 业:信息管理与信息系统 姓 名: 学 号: 指导教师: 实验地点:管理学院综合实验室

20 学年至 20 学年度第 2 学期

第一章 JSP简介

实验 Tomcat服务器的安装与配置

一、实验目的

本实验的目的是让学生掌握怎样设置Web服务目录、怎样访问Web服务目录下的JSP页面、怎样修改Tomcat服务器的端口号。 二、实验要求

1、将下载的apache-tomcat-6.0.13.zip解压到D盘中,并进行调试。

2、用文本编辑器编写一个简单的JSP页面biao.jsp,并保存到Web服务目录中。 三、实验结果

所运行的代码如下; biao.jsp

<%@ page contentType=\

乘法表

<%

for(int j=1;j<=9;j++) {

for(int i=1;i<=j;i++) {

int n=i*j;

out.print(i+\ }

out.print(\ } %>

biao.jsp页面

四、实验结果分析

1、默认的端口号为8080,若修改,在conf目录下的server.xml文件中修改端口号。 2、设置虚拟目录。在conf目录下的server.xml中前加入:

3、Tomcat服务器必须保持启动。

第二章 JSP页面与JSP标记 实验1 JSP页面的基本结构

一、实验目的

本实验的目的是让学生掌握怎样在JSP页面中使用成员变量,怎样使用Java程序片、Java表达式。 二、实验要求

本实验将用户输入的单词按字典顺序排序。需要编写两个JSP页面,名字分别为inputWord.jsp和showDictionary.jsp。 三、实验内容

1) inputWord.jsp页面有一个表单,用户通过该表单输入若干个单词,并提交给

showDictionary.jsp页面。

2) showDictionary.jsp负责排序单词,并将排序的全部单词显示给用户。 四、实验结果

实验所用代码如下: inputWord.jsp

<%@ page contentType=\

showDictionary.jsp

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

<%!

TreeSetdictionary=new TreeSet(); public void addWord(String s) {

String word[] = s.split(\ for(int i=0;i

dictionary.add(word[i]); } }

%> <%

String str = request.getParameter(\ addWord(str);

Iteratorte=dictionary.iterator(); while(te.hasNext()) {

String word = te.next(); out.print(\ } %>

inputWord.jsp页面

showDictionary.jsp页面

五、实验结果分析

1、jsp页面由html标记、jsp标记、成员变了和方法的声明、java程序片和java表达式组成。

2、jsp页面中的成员变量是被所有用户共享的变量。Java程序片可以操作成员变了,任何一个用户对jsp页面成员变量操作的结果,都会影响到其他用户。

实验2 JSP指令标记

一、实验目的

本实验的目的是让学生掌握怎样在JSP页面中使用include指令标记在JSP页面中静态插入一个文件内容。 二、实验要求

该实验要求使用include指令标记使得每个页面都包含导航条。在进行试验之前,将名字是leader.txt的文件保存到本实验所使用的web服务目录中。 三、实验内容

五、实验结果分析

1、tag文件中可以有html标记符、特殊的指令标记、成员变了和方法、java程序片和java表达式。

2、jsp页面使用tag标记动态执行一个tag文件。

3、当jsp页面调用一个tag文件时可能希望动态地向该tag文件传递信息,那么就可以使用带有标记体的tag标记来执行一个tag文件。

实验2 使用attribute指令

一、实验目的

本实验的目的是让学生灵活掌握在Tag标记中使用attribute指令。 二、实验要求

编写一个Tag文件ShowCalendar.tag,该Tag文件负责显示日历。编写一个JSP页面giveYearMonth.jsp,该JSP页面使用Tag标记调用ShowCalendar.tag文件,并且向ShowCalendar.tag文件传递年份和月份。 三、实验内容

1)giveYearMonth.jsp通过tag标记调用ShowCalendar.tag文件,并且向ShowCalendar.tag文件传递年份和月份。

2)ShowCalendar.tag文件根据jsp页面传递过来的年份和月份显示日历。该文件能对jsp页面传递过来的数据进行判断,比如,如果jsp页面传递过来的数据不是数值型数据,tag文件负责显示错误信息。 四、实验结果

实验所用代码如下: 实验2

giveYearMonth.jsp

<%@ page contentType=\<%@ taglib tagdir=\

调用Tag文件来显示日历.

ShowCalendar.tag

<%@ tag pageEncoding=\<%@ tag import=\

<%@ attribute name=\<%@ attribute name=\<%

int y=1999,m=1;

String [] day=new String[42]; try {

y=Integer.parseInt(year); m=Integer.parseInt(month);

Calendar rili=Calendar.getInstance();

rili.set(y,m-1,1);//将日历翻到year年month月1日,注意0表示一月??11表示十二月

int 星期几=rili.get(Calendar.DAY_OF_WEEK)-1; int dayAmount=0;

if(m==1||m==5||m==7||m==8||m==10||m==12) dayAmount=31;

if(m==4||m==6||m==9||m==11) dayAmount=30; if(m==2)

if(((y%4==0)&&(y0!=0))||(y@0==0)) dayAmount=29; else

dayAmount=28;

for(int i=0;i<星期几;i++) day[i]=\

for(int i=星期几,n=1;i<星期几+dayAmount;i++) {

day[i]=String.valueOf(n); n++; }

for(int i=星期几+dayAmount;i<42;i++) day[i]=\ }

catch(Exception exp) {

out.print(\年份或月份不合理\ } %>

<%=year %>年<%=month %>月的日历:

星期日星期一星期二星期三星期四星期五星期六

<% for(int n=0;n

%>

<% for(int i=n;i<7+n;i++){ %> <%=day[i] %> <% } %>

<% } %>

giveYearMonth.jsp页面

五、实验结果分析

1、一个tag文件中通过使用attribute指令,使得jsp页面在调用tag文件时,可以 向该tag文件中的对象传递一个引用。 tag文件中使用attribute指令:

<%@ attribute name=\对象名字\对象的类型\

实验3 使用variable指令

一、实验目的

本实验的目的是让学生灵活掌握在Tag标记中使用variable指令。 二、实验要求

编写一个Tag文件GetWord.tag,负责分解出字符串中的全部单词,并将分解出的全部单词返还给调用该Tag文件的JSP页面。编写一个JSP页面giveSoring.jsp,该页面负责向Tag文件传递一个由英文单词构成的字符串,并负责显示Tag文件返回的全部单词。 三、实验内容 1)giveSoring.jsp通过tag标记调用GetWord.tag,并传递一个由英文单词构成的字符串,显示tag文件返回的全部单词。

2)GetWord.tag使用attibute指令得到jsp页面传递过来的字符串,并用vatiable指令返回全部的单词。

四、实验结果

实验所用代码如下:

giveString.jsp

<%@ page contentType=\<%@ taglib tagdir=\

<% String s=\ %>

字符串:

<%=s%>

中的全部单词: <%

for(int i=0;i< wordList.size();i++) {

out.print(\ } %>

GetWord.tag

<%@ tag import=\

<%@ attribute name=\

<%@ variable name-given=\variable-class=\scope=\

<%

ArrayListlist=new ArrayList(); String regex=\ String words[]=str.split(regex); for(int i=0;i

jspContext.setAttribute(\%>

giveSoring.jsp页面

五、实验结果分析

1、Tag文件可以使用variable指令把一个对象返回给调用它的jsp页面 Tag文件使用variable指令给出返回的对象的名字、类型和有效范围:

<%@ variable name-given=“对象名字” variable-class=“对象的类型” scope=“有效范围”%>

第4章 JSP内置对象 实验1 request对象

一、实验目的

本实验的目的是让学生掌握怎样在JSP中使用内置对象request。 二、实验要求

通过JSP页面和Tag文件实现数字的四则运算,要求编写两个JSP页面inputNumber.jsp和receiveNumber.jsp及一个Tag文件Computer.tag。receiveNumber.jsp使用内置对象接受inputNumber.jsp提交的数据,然后将计数任务交给Tag文件Computer.tag去完成。

三、实验内容

1)inputNumber.jsp页面提供一个表单,用户可以通过表单输入两个数、选择四则运算符号,并将输入的两个数和所选择的运算符号提交给receiveNumber.jsp页面。

2)receiveNumber.jsp使用内置对象inputNumber.jsp页面提交的数据,然后将计算任务交给Tag文件Computer.tag去完成。

3)要求Computer.tag使用attribute指令得到receiveNumber.jsp页面传递过来的书和运算符号,使用variable指令将运算结果返回给receiveNumber.jsp页面。

四、实验结果

实验所用代码如下: inputNumber.jsp

<%@ page contentType=\

1)用户在choiceBook.jsp页面通过超链接将自己要购买的图书信息传递到orderForm.jsp页面。

2)orderForm页面将用户购买的图书信息存储到session对象中,然后生成一个图书订单并显示给用户。 四、实验结果: 实验所用代码如下:

choiceBook.jsp

<%@page contentType=\

选择要购买的图书

Java面向对象设计(34元)

orderForm.jsp

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

String book = request.getParameter(\

if(book != null){

StringTokenizer fenxi = new StringTokenizer(book,\ String bookName = fenxi.nextToken(); String bookISBN = fenxi.nextToken(); session.setAttribute(bookISBN,book); } %>

图书订单

<%

Enumeration keys = session.getAttributeNames(); while(keys.hasMoreElements()){

String key = (String)keys.nextElement(); book = (String)session.getAttribute(key); if(book != null){

StringTokenizer fenxi = new StringTokenizer(book,\

byte X[]= ((String)fenxi.nextToken()).getBytes(\ String bookName = new String(X);

byte S[]= ((String)fenxi.nextToken()).getBytes(\ String isbn = new String(S);

byte P[]= ((String)fenxi.nextToken()).getBytes(\ String price = new String(P); %>

<%= bookName %> <%= isbn %> <%= price %> <%

} } %>

choiceBook.jsp页面

orderForm页面

五、实验结果分析:

1、session的作用就是记住客户的连接信息,可以使用会话对象(session)。session对象记录了每个客户与服务器的连接信息 2、判断session是否失效有三种情况1)、客户是否关闭浏览器。2)、是否

到达最大的发呆时间3)、是否调用validate()函数 3、session对象常用方法:

setAttribute(String name,java.lang.Object value):设定指定名字的属性值,并且把它存储在session对象中。 getAttribute(String name):获得指定名字的属性,如果该属性不存在,将会返回null

第五章 JSP中的文件操作(实验)

实验1 使用文件字节流读写文件

一、实验目的

本实验的目的是掌握使用文件输入、输出字节流读写文件。 二、实验要求

编写4个JSP页面giveContent.jsp、writeContent.jsp、lookContent.jsp和readContent.jsp,两个Tag文件WriteTag.tag和ReadTag.tag 三、实验内容

1)giveContent.jsp页面提供一个表单,要求该表单提供一个text文件输入框、select下拉列表和一个TextArea文本区,用户可以在text输入框中输入文件的名字、在select下拉列表选择一个目录、通过TextArea输入多行文本。

2)writeContent.jsp页面首先获得giveContent.jsp页面提交的文件所在目录、名字以及TextArea文本区中的内容传递给WriteTag.tag。

3)lookContent.jsp页面提供一个表单,该表单提供两个text文本输入框,用户可以在这两个text文本框中输入目录和文件名字。单击表单的“提交”按钮将text中输入的文件目录以及文件名字提交给readContent.jsp。

4)readContent.jsp页面首先获得lookContent.jsp页面提交的文件目录、名字,然后使用Tag标记调用Tag文件ReadTag.tag,并将文件所在目录、名字传递给ReadTag.tag。 四、实验结果: 实验所用代码如下:

giveContent.jsp

<%@ page contentType=\<%@ taglib tagdir=\

writeContent.jsp

<%@ page contentType=\<%@ taglib tagdir=\

<%

String fileDir=request.getParameter(\ String fileName=request.getParameter(\

String fileContent=request.getParameter(\ byte c[]=fileContent.getBytes(\ fileContent=new String(c); %>

lookContent.jsp

<%@ page contentType=\

readContent.jsp

<%@ page contentType=\

WriteTag.tag

<%@ tag pageEncoding=\<%@ tag import=\

<%@ attribute name=\<%@ attribute name=\<%@ attribute name=\<%

File f=new File(fileDir,fileName); try{

FileOutputStream output=new FileOutputStream(f); byte bb[]=fileContent.getBytes(); output.write(bb,0,bb.length); output.close();

out.println(\文件写入成功!\

out.println(\文件所在目录:\ out.println(\文件的名字:\ }

catch(IOException e) {

out.println(\文件写入失败\ } %>

ReadTag.tag

<%@ tag pageEncoding=\<%@ tag import=\

<%@ attribute name=\<%@ attribute name=\<%

File dir=new File(fileDir); File f=new File(dir,fileName); try {

FileInputStream in=new FileInputStream(f); int m=-1;

byte bb[]=new byte[1024]; String content=null;

while((m=in.read(bb))!=-1) {

content=new String(bb,0,m); out.println(content); }

in.close(); }

catch(IOException e) {

out.println(\文件读取失败\ }

%>

giveContent.jsp页面

writeContent.jsp页面

lookContent.jsp页面

readContent.jsp页面

五、实验结果分析

1、把输入流的指向称做源,程序从指向源的输入流中读取源中的数据。而输出流的指向是数据要去的一个目的地,程序通过向输出流中写入数据把信息传递到目的地。所有字节输入流类都是InputStream(输入流)抽象类的子类,而所有字节输出流都是OutputStream(输出流)抽象类的子类。

2、int read(): 输入流调用该方法从源中读取单个字节的数据,该方法返 回字节值,如果未读出字节就返回-1。

3、void write(int n): 输出流调用该方法向输出流写入单个字节

实验2 使用文件字符流加密文件

一、实验目的

本实验的目的是掌握使用文件字符输入、输出流读写文件。 二、实验要求

编写3个JSP页面inputContent.jsp、write.jsp和read.jsp,两个Tag文件Write.tag和Read.tag。 三、实验内容

1)inputContent.jsp页面提供一个表单,要求该表单提供TextArea的输入界面输入多行文本提交给write.jsp

2)write.jsp页面调用一个Tag文件Write.tag将inputContent.jsp页面提交的文本信息加密后写入到文件save.txt中。

3)read.jsp页面提供一个表单,该表单提供两个单选按钮,名字分别是“读取加密文件”,该页面选中的单选按钮的值提交给本页面。

4)Write.tag文件使用attribute指令获得write.jsp页面传递过来的文本信息,并使用文件输出流将其写入到文件save.txt。

5)Read.tag文件使用文件输入输出流读取文件save.txt,并根据read.jsp的要求决定是否进行解密处理,然后使用variable指令将有关信息返回给read.jsp页面。 四、实验结果: 实验所用代码如下:

inputContent.jsp

<%@ page contentType=\<%@ taglib tagdir=\

write.jsp

<%@ page contentType=\<%@ taglib tagdir=\

<%

String str=request.getParameter(\ if(str.length()>0)

{

byte bb[]=str.getBytes(\ str=new String(bb);

%>

read.jsp

<%@ page contentType=\<%@ taglib tagdir=\

<%

String condition=request.getParameter(\ if(condition!=null) { %>

<% } %>


Write.tag

<%@ variable name-given=\<%@ tag pageEncoding=\<%@ tag import=\

<%@ attribute name=\

<% File dir=new File(\ dir.mkdir();

File f=new File(dir,\ try {

FileWriter outfile=new FileWriter(f);

BufferedWriter bufferout=new BufferedWriter(outfile); char a[]=content.toCharArray(); for(int i=0;i

jspContext.setAttribute(\文件加密成功\ }

catch(IOException e) {

jspContext.setAttribute(\文件加密失败\ } %>

Read.tag

<%@ tag pageEncoding=\<%@ tag import=\

<%@ attribute name=\

<%@ variable name-given=\<% File dir=new File(\ File f=new File(dir,\

StringBuffer mess=new StringBuffer(); String str; try {

FileReader in=new FileReader(f) ;

BufferedReader bufferin=new BufferedReader(in); String temp;

while((temp=bufferin.readLine())!=null) mess.append(temp); bufferin.close(); in.close();

str=new String(mess);

if(method.equals(\

jspContext.setAttribute(\ else if(method.equals(\ {

queryResult.append(\ queryResult.append(\图书名称\ queryResult.append(\作者\ queryResult.append(\价格\ queryResult.append(\出版社\ queryResult.append(\出版时间\ queryResult.append(\摘要\ queryResult.append(\ int 字段个数=7; while(rs.next()) {

queryResult.append(\ String bookISBN=\

for(int k=1;k<=字段个数;k++) {

if(k==7) {

String bookAbstract=rs.getString(k); String abs=\rows=6 colums=10/>\

queryResult.append(\ } else {

queryResult.append(\ } } }

queryResult.append(\

jspContext.setAttribute(\ con.close(); }

catch(SQLException exp) {

jspContext.setAttribute(\StringBuffer(\请给出查询条件\

} %>

inputMess.jsp

五、实验结果分析:

1、DriverManager类:用语跟踪可用的JDBC驱动程序并产生数据库连接。 2、Connection接口:用于取得数据库信息、生成数据库语句,并管理数据库事务。 3、Statement接口:用于在基层连接上运行SQL语句,并且生成一个结果集。 4、查询结果一般封装在ResultSet对象中。ResultSet实际上是一张数据表。ResultSet对象有多种方法用来从查询结果中读取数据

5、在tag文件通过使用 attribute指令,就可以让调用该tag文件的jsp页面向该tag文件传递在jsp页面输入的查询内容的数据。 tag文件通过使用variable属性可以从tag文件向jap页面返回符合查询条件的内容的数据。

实验2 更新记录

一、实验目的

本实验的目的是掌握使用JDBC更新数据库中表的记录。 二、实验要求

编写一个JSP页面updateRecord.jsp和两个Tag文件UpdateRecord.tag、

GetRecord.tag。updateRecord.jsp负责调用GetRecord.tag文件显示GetRecord.tag返回待更新的记录的有关字段的值;updateRecord.jsp调用UpdateRecord.tag文件,并显示UpdateRecord.tag返回的有关记录是否成功的信息。 三、实验内容

1)updateRecord.jsp页面提供一个表单,该表单负责将图书的ISBN号以及针对该ISBN号的图书的更新信息;该页面负责将图书的ISBN号传递给GetRecord.tag,j将图书的更新传递给UpdateRecord.tag。

2)GetRecord.tag文件使用attribute指令获得updateRecord.jsp页面传递过来的图书的ISBN号,并显示和该图书对应的记录。

3)UpdateRecord.tag文件使用attribute指令获得updateRecord.jsp页面传递过来的图书更新信息,然后更新数据库中bookForm表中的记录,并返回更新是否成功的消息给updateRecord.jsp页面。 四、实验结果

updateRecord.jsp

五、实验结果分析

1、在数据库的连接于实验一是一样的,只是调用的方法不一样,在查询时Statement

对象调用方法public int executeUpdate(String sql)

2、在jsp页面输入图书的ISBN号,GetRecord.tag文件使用attribute指令获得updateRecord.jsp页面传递过来的图书的ISBN号,在数据库里进行查找,并显示和该图书对应的记录

3、UpdateRecord.tag文件使用attribute指令获得updateRecord.jsp页面传递过来的图书更新信息即图书价钱的变化从39到25.5,然后更新数据库中bookForm表中的记录,并返回更新是否成功的消息给updateRecord.jsp页面。这样,如果在查询该图书,那么显示的信息就是更新后的。

实验3 删除记录

一、实验目的

本实验的目的是掌握使用JDBC删除数据库中的表的记录。 二、实验要求

编写一个JSP页面inputDeletedISBN.jsp和一个Tag文件DelRecord.tag。 三、实验内容

1)inputDeletedISBN.jsp页面提供一个表单,该表单允许用户图书的ISBN提交到本页面。

2)inputDeletedISBN.jsp页面首先获得本页面提交的图书的ISBN,然后使用Tag标记调用DelRecord.tag删除数据库中相应的记录。 四、实验结果

inputDeletedISBN.jsp

五、实验结果分析:

1、在连接方法和所用的方法都与更新语句相同,因为executeUpdate()方法执行SQL

的INSERT,UPDATE或DELETE语句,返回int值,给出受查询影响的行数 2、将图书的ISBN输入到件jsp页面,然后由tag文件进行相应的处理 3、将满足条件的图书直接删除,并将结果显示在本页面。

第7章 JSP与JavaBean(实验) 实验1 有效范围为request的bean

一、实验目的

本实验的目的是掌握使用有效范围是request的bean存储信息。 二、实验要求

编写一个JSP页面inputAndShow.jsp和一个名字为computer的Javabean,其中computer由PC.class类负责创建。 三、实验内容

1)inputAndShow.jsp页面提供一个表单。其中表单允许用户输入计算机的品牌、型号和生产日期,该表单将用户输入的信息提交给当前页面,当前页面调用名字为computer的bean,并使用表单提交的数据设置computer的有关属性的值,然后显示computer的各个属性的值。

2)编写的PC.java应当有描述计算机品牌、型号和生产日期的属性,并提供相应的getXxx和setXxx方法,来获取和修改这些属性的值。PC.java中使用package语句,起的包名是bean.data。将PC.java编译后的字节码文件PC.class保存到chapter7\\WEB-INF\\classes\\bean\\data目录中。 四、实验结果

实验所用代码如下:

inputAndShow.jsp

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

电脑品牌 电脑型号 生产日期

PC.java

package bean.data; public class PC {

String pinpai,xinghao,riqi; public String getPinpai() { try {

byte b[]=pinpai.getBytes(\ pinpai=new String(b); }

catch(Exception e){} return pinpai; }

public void setPinpai(String pinpai) {

this.pinpai=pinpai; }

public String getXinghao() { try {

byte b[]=xinghao.getBytes(\ xinghao=new String(b);

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

Top