jsp实验报告
更新时间:2024-04-01 13:30: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(\ } %>
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中前加入:
第二章 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=\
<%! TreeSet
String word[] = s.split(\ for(int i=0;i dictionary.add(word[i]); } } %> <% String str = request.getParameter(\ addWord(str); Iterator 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服务目录中。 三、实验内容 leader.txt编写3个JSP页面。 1) frist.jsp使用include指令静态插入leader.txt文本文件。 2) second.jsp使用include指令静态插入leader.txt文件。 3) third.jsp使用include指令静态插入leader.txt。 四、实验结果 所运行代码如下:leader.txt <%@ page contentType=\ first.jsp <%@ page contentType=\ 这是页面1 <%@ include file=\
<%@ page contentType=\
这是页面2
<%@ include file=\
third.jsp
<%@ page contentType=\
这是页面3
<%@ include file=\
frist.jsp页面
second.jsp页面
third.jsp页面
五、实验结果分析
1、include指令标记是在jsp页面出现该指令的位置处,静态的插入一个文 件。被插入的文件必须是可访问和可使用的。Include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖与当前jsp页面,优点是执行速度快。
实验3 JSP动作标记
一、实验目的
本实验的目的是让学生掌握怎样在JSP页面中使用include标记动态加载文件,使用forward实现页面的转向。 二、实验要求
编写三个JSP页面:giveFileName.jsp、readFile.jsp和error.jsp。 三、实验内容
1)giveFileName.jsp页面使用include动作标记动态加载readFtle.jsp页面,并将一个文件的名字ok.txt传递给被加载的readFtle.jsp页面。
2)readFile.jsp页面负责根据giveFileName.jsp页面传递过来的文件名字进行文件的读取操作,如果该文件不存在就使用forward动作标记将用户转向error.jsp。
3)error.jsp负责显示错误信息。 四、实验结果
实验所用代码如下: giveFileName.jsp
<%@ page contentType=\
读取名字是ok.txt的文件:
readFile.jsp
<%@ page contentType=\<%@ page import=\
This is readFile.jsp. <%
String s= request.getParameter(\ File f=new File(s); if(f.exists()) {
out.println(\文件\的内容:\ FileReader in=new FileReader(f);
BufferedReader bIn=new BufferedReader(in); String line=null;
while((line=bIn.readLine())!=null) {
out.println(\ } } else { %>
<%@ page contentType=\
This is error.jsp. <%
String s= request.getParameter(\ out.println(\本页面得到的信息:\
%>
giveFileName.jsp页面
error.jsp页面
五、实验结果分析
1、include动作标记是在jsp页面运行时才处理加载的文件,被加载的文件在逻辑和语 法上独立与当前jsp页面,include指令标记可以使用param子标记向被加载的jsp
文件传递信息。
第三章 Tag文件与Tag标记 实验1 JSP页面的基本结构
一、实验目的
本实验的目的是让学生灵活掌握在Tag标记中使用标记体。 二、实验要求
编写一个JSP页面giveMess.jsp和一个Tag文件handleMess.tag。JSP页面通过调用Tag文件在表格中的单元格显示文本,该JSP页面通过使用标记体将要显示的文件传递给被调用的Tag文件。 三、实验内容
1)giveMess.jsp页面使用带标记体的tag标记来调用tag文件。
2)handleMess.tag使用
实验所用代码如下: 实验1
giveMess.jsp
<%@ page contentType=\<%@ taglib tagdir=\
表格每行重复显示信息
handleMess.tag
giveMess.jsp页面
五、实验结果分析
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=\
<%
ArrayList 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=\
Computer.tag
<%@ tag pageEncoding=\
<%@ attribute name=\<%@ attribute name=\<%@ attribute name=\<%@ variable name-given=\<% 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(\ }
catch(Exception e){
jspContext.setAttribute(\发生异常:\ } %>
inputNumber.jsp页面
receiveNumber.jsp页面
五:实验结果分析
1、内置对象request的作用就是用来接收客户端提交的请求 2、request对象用的比较多的方法是getParameter方法。
request对象的getParameter方法根据指定的参数,获取客户端提交的信息。
其语法规则如下:
<% String name=request.getParameter (“txtName”)%>
其中,name是一个字符串变量。txtName是客户端提交信息中的一个字段名。
3、下面的就是在实验里面request的使用 <%
String a=request.getParameter(\ String b=request.getParameter(\
String operator=request.getParameter(\
实验2 responese对象
一、实验目的
本实验的目的是掌握怎样使用response对象动态响应用户的请求。 二、实验要求
编写两个JSP页面inputRadius.jsp和drawCircle.jsp页面,drawCircle.jsp页面使用response对象做出动态响应。
三、实验内容
1)inputRadius.jsp提供表单,用户在表单中输入一个代表圆的半径的数字,提交给
drawCircle.jsp页面。
2)drawCircle.jsp页面首先使用request对象获得inputRadius.jsp提交的数字,然后根据数字的大小做出不同的响应。如果数字小于等于0或者大于100,response对象调用setCountType(String s)方法将contentType属性的值设置为text/plain,同时输出“半径不合理”;如果数字大于0并且小于等于100,response对象调用setContentType(String s)方法将contentType属性的值设置为image/jpeg,并绘制一个圆;如果用户在inputRadius.jsp页面输入了非数字,response对象调用sendRedirect(URL url)方法将用户重定向到inputRadius.jsp。
四、实验结果
实验所用代码如下: inputRadius.jsp
<%@ page contentType=\
drawCircle.jsp
<%@ page contentType=\<%@ page import=\<%@ page import=\
<%@ page import=\<%@ page import=\
<%@ page import=\
<%String R=request.getParameter(\ out.print(R); try {
double number=Double.parseDouble(R); if(number <=0 || number >100) {
response.setContentType(\ out.println(number + \作为圆的半径不合理\ }
else if(number>0 && number<=100)
{
response.setContentType(\ int width =100,height =100; BufferedImage image =new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics(); g.setColor(Color.white);
g.fillRect(0,0,width,height); Graphics2D g_2d = (Graphics2D)g;
Ellipse2D circle = new Ellipse2D.Double(0,0,number,number); g_2d.setColor(Color.blue); g_2d.fill(circle); g.dispose();
OutputStream outClient = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outClient); encoder.encode(image); } }
catch(Exception e) {
response.sendRedirect(\ } %>
1、在输入要求的范围以内:
inputRadius.jsp页面
drawCircle.jsp页面
2、当输入的数据不符合要求的结果显示:
inputRadius.jsp页面
drawCircle.jsp页面
五、实验结果分析:
1、response的作用就是把服务器端的数据以HTTP的格式发送到客户端浏览器
2、与request相比,它的功能和request对象的功能相反。request对象用于得到用户提交的信息而response对象是向用户发送信息,两者结合起来完成动态页面的交互功能。
3、response对象的主要方法:
sendRedirect():页面重定向方法 setStatus():设置状态行方法
setContentType():设置文本类型方法
实验3 session对象
一、实验目的
本实验的目的是让学生掌握怎样使用session对象存储和用户有关的数据。 二、实验要求
使用session对象模拟购物车。编写两个JSP页面choiceBook.jsp和orderForm.jsp。 三、实验内容
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(\ { char a[]=str.toCharArray(); for(int i=0;i jspContext.setAttribute(\ } else jspContext.setAttribute(\ } catch(IOException e) { jspContext.setAttribute(\ } %> inputContent.jsp页面 write.jsp页面 read.jsp页面 五、实验结果分析: 1、FileInputStream流和FileReader流都是顺序的读取文件,只要不关闭流。每次调用read方法就顺利的读取源中其余的内容,直到源的末尾或流被关闭。两者的区别是Fileinputstream流以字节为单位读取文件,FileReader流以字符为单位读取文件。 2、FileOutStream流和FileReader流都是顺序的写文件,只要不关闭文件,每次调用write方法就顺序的向输出流写入内容,直到流被关闭。二者的区别是FileOutStream流以字节为单位读取文件,FileReader流以字符为单位读取文件。 实验3 使用数据流读写Java数据 一、实验目的 本实验的目的是掌握使用数据流读写Java数据。 二、实验要求 编写两个JSP页面writeData.jsp和readData.jsp。 三、实验内容 1)writeData.jsp页面使用Java程序片将一个int型数据、一个long型数据、一个char型数据、一个String型数据和一个double型数据写入到名字为javaData.data的文件中。 2)readData.jsp页面读取javaData.data文件中的数据并显示出来。 四、实验结果 writeData.jsp页面 readData.jsp页面 五、实验结果分析 1、Java使用流(stream)来执行输入输出(I/O)的功能,流是一种数据的源头和目的之 间的通信途径. 用于读入数据称为输入流(input stream), 用于写出数据称为输出流(output stream). 2、当使用流时需要使用java.io包,因此在涉及数据流操作的程序中都要先导入 java.io包:import java.io.*; 第六章 JSP中使用数据库 实验1 查询记录 一、实验目的 本实验的目的掌握使用JDBC查询数据库中表的记录。 二、实验要求 编写一个JSP页面inputMess.jsp。编写一个Tag文件FindBook.tag。 三、实验内容 1)inputMess.jsp页面提供表单。表单允许用户输入要查询的内容,以及选择针对该内容的查询条件。inputMess.jsp页面查询条件提交给当前页面,当前页面调用FindBook.tag文件完成查询操作。 2)FindBook.tag文件使用attribute指令获得inputMess.jsp页面传递过来的字段的查询条件,然后与数据源information建立连接、根据得到的查询条件bookForm表。FindBook.tag文件使用variable指令查询结果返回给inputMess.jsp。 四、实验结果 实验所用代码如下: inputMess.jsp <%@ page contentType=\<%@ taglib tagdir=\
String findContent = request.getParameter(\ String condition = request.getParameter(\ String findMethod = request.getParameter(\ if(findContent==null) {
findContent=\ }
if(condition==null) {
condition=\ }
if(findMethod==null) {
findMethod=\ } %>
查询到的图书:
findContent=\ condition=\ findMethod=\ FindBook.tag <%@ tag import=\<%@ tag pageEncoding=\ <%@ attribute name=\<%@ attribute name=\<%@ attribute name=\<%@ attribute name=\<%@ attribute name=\ <%@ variable name-given=\variable-class=\scope=\ <% byte b[]=findContent.getBytes(\ findContent=new String(b); try { Class.forName(\ } catch(ClassNotFoundException e) { out.print(e); } Connection con; Statement sql; ResultSet rs; StringBuffer queryResult=new StringBuffer(); String uri=\try { con=DriverManager.getConnection(uri,\ sql=con.createStatement(); String s=\ if(findMethod.equals(\ s=\\ if(findMethod.equals(\ s=\* from\ if(findMethod.equals(\ s=\* from\ rs=sql.executeQuery(s); queryResult.append(\ queryResult.append(\ 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=\
<%=giveResult%>
电脑品牌 电脑型号 生产日期
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);
}
catch(Exception e){} return xinghao; }
public void setXinghao(String xinghao) {
this.xinghao=xinghao; }
public String getRiqi() { try {
byte b[]=riqi.getBytes(\ riqi=new String(b); }
catch(Exception e){} return riqi; }
public void setRiqi(String time) {
riqi=time; } }
inputAndShow.jsp页面
五、实验结果分析
1、JavaBean是一种可复用,跨平台的组件。
2、如果request的bean那么request是用户请求访问的当前组件、以及和当前web组件共享同一用户请求的web组件。范围是指在一个jsp网页发出请求到另一个jsp网页之间,随后这个属性就失效,设定request的范围时可利用request对象中的setattribute()和getattribute(),简单的讲就是客户端的一次请求。
实验2 有效范围为session的bean
一、实验目的
本实验的目的是让学生掌握使用有效范围是session的bean显示计算机的基本信息。 二、实验要求
本实验2要求和实验1类似,但是和实验1不同的是,要求编写两个JSP页面input.jsp和show.jsp。编写一个名字为computer的Javabean,其中computer由PC.class类负责创建。
三、实验内容
1)input.jsp页面提供一个表单。其中表单允许用户输入计算机的品牌、型号和生产日期,该表单将用户输入的信息提交给当前页面,当前页面调用名字为computer的bean,并使用表单提交的数据设置computer的有关属性的值,要求在input.jsp提供一个超链接,以便用户单击这个超链接访问show.jsp。
2)Show.jsp调用名字为computer的bean,并显示该bean的各个属性。
3)编写的PC.java应当有描述计算机品牌、型号和生产日期的属性,并提 供相应的getXxx和setXxx方法,来获取和修改这些属性的值。PC.java 中使用
package语句,起的包名是bean.data。将PC.java编译后的字节码 文件PC.class保存到chapter7\\WEB-INF\\classes\\bean\\data目录中。 四、实验结果
input.jsp页面
Show.jsp页面
五、实验结果分析
1、session就是JavaBean对象被创建后,一直存在于当前回话中,在同一会话中,共享
同一JavaBean
2、session基于会话的,当用户网页关闭的话,session就清空了或是到达了session最大的发呆时间。
实验3 有效范围为application的bean
一、实验目的
本实验的目的是掌握使用有效范围是application的bean制作一个简单的留言板。 二、实验要求
要求编写两个JSP页面inputMess.jsp和show.jsp。编写一个名字为board的Javabean,其中borad由MessBoard.class类负责创建。 三、实验内容
1)inputMess.jsp页面提供一个表单。其中表单允许用户输入留言者的姓名、留言标题和留言内容,该表单将用户输入的信息提交给当前页面,当前页面调用名字为board的bean,并使用表单提交的数据设置board的有关属性的值。要求在inputMess.jsp中提供一个超链接,以便用户单击这个超链接时访问show.jsp页面。
2)show.jsp调用名字为board的bean,并显示该bean的allMessage属性的值。 3)编写MessBoard.java应当有刻画留言者的姓名、留言标题和留言内容属性,并且有刻画全部留言信息的属性allMessage。将MessBoard.java编译后的字节码文件MessBoard.class保存到chapter7\\WEB-INF\\classes\\tom\\jiafei目录中。 四、实验结果
inputMess.jsp页面
show.jsp 页面
五、实验结果分析 1、如果在scope指定范围内,该JavaBean已存在,则
2、 使用
调用Bean中的get方法得到某属性的值 调用Bean中的set方法给某属性赋值 3、Application:在服务器运行期间有效,当运行Tomcat时,就会生成 Application,而且所有用户在访问相同服务目录项的文件时,application对象都是相同的,当关闭Tomcat时,Application对象失效。 实验总结:
正在阅读:
jsp实验报告04-01
高职院校班主任工作模式新探08-13
2012年上学期大学生团委会副部级干部选拔考试试题09-02
2016全国新课标2卷历史试题含答案04-18
汉阳铁中校友名录 v20160706版05-16
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 报告
- jsp
- 高中物理《原子结构和原子核》单元测试题(答案)
- 全国青少年机器人技术等级考试试卷(二级纸版20180324)答案 - 图
- 2011江苏地理学业水平测试考点解析 - 图文
- 榨汁机造型与结构设计说明书 - 图文
- 普通心理学答案形成性考核网上作业
- 英语语法汇总(高中大学必备)
- 阿尔茨海默症的诊断与治疗研究进展 - 尹雅菲
- 建筑工程管理中全过程造价控制的应用
- 班组管理台账表格说明
- 小学文言文读思练教学模式初探
- 派代2011年服装年会人员
- 第十九章 开放经济下的短期经济模型
- 陈涉世家第三课时 - 图文
- 2014年高考语文模拟试卷及答案解析福建省四地六校2014届高三上学
- 临床护士如何避免护患纠纷
- 2018年人教版初一历史下册第一次月考测试题及答案
- 服刑人员子女心理研究
- 云南省农药经销商名录846家
- 土木工程毕业设计参考文献
- 1阶段