jsp实验报告-7878789Word文档下载推荐.doc
《jsp实验报告-7878789Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《jsp实验报告-7878789Word文档下载推荐.doc(14页珍藏版)》请在冰点文库上搜索。
%
for(intj=1;
j<
=9;
j++)
{
for(inti=1;
i<
=j;
i++)
{
intn=i*j;
out.print(i+"
×
"
+j+"
="
+n+"
"
);
}
out.print("
br>
}
/FONT>
/BODY>
/HTML>
biao.jsp页面
四、实验结果分析
1、默认的端口号为8080,若修改,在conf目录下的server.xml文件中修改端口号。
2、设置虚拟目录。
在conf目录下的server.xml中<
/Host>
前加入:
Contextpath=”/**”docBase=”路径”debug=”0”reloadable=”true/”>
3、Tomcat服务器必须保持启动。
实验二JSP页面的基本结构
本实验的目的是让学生掌握怎样在JSP页面中使用成员变量,怎样使用Java程序片、Java表达式。
本实验将用户输入的单词按字典顺序排序。
需要编写两个JSP页面,名字分别为inputWord.jsp和showDictionary.jsp。
三、实验内容
1)inputWord.jsp页面有一个表单,用户通过该表单输入若干个单词,并提交给showDictionary.jsp页面。
2)showDictionary.jsp负责排序单词,并将排序的全部单词显示给用户。
四、实验结果
实验所用代码如下:
inputWord.jsp
BODYBGCOLOR=cyan>
<
FORMaction="
showDictionary.jsp"
method=getname=form>
请输入单词(用空格分隔):
INPUTtype="
text"
name="
word"
>
BR>
submit"
value="
送出"
name=submit>
/FORM>
showDictionary.jsp
%@pageimport="
java.util.*"
%!
TreeSet<
String>
dictionary=newTreeSet<
();
publicvoidaddWord(Strings)
{
Stringword[]=s.split("
for(inti=0;
word.length;
{
dictionary.add(word[i]);
}
Stringstr=request.getParameter("
addWord(str);
Iterator<
te=dictionary.iterator();
while(te.hasNext())
Stringword=te.next();
out.print("
+word);
}
inputWord.jsp页面
showDictionary.jsp页面
五、实验结果分析
1、jsp页面由html标记、jsp标记、成员变了和方法的声明、java程序片和java表达式组成。
2、jsp页面中的成员变量是被所有用户共享的变量。
Java程序片可以操作成员变了,任何一个用户对jsp页面成员变量操作的结果,都会影响到其他用户。
实验三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
ahref="
firsst.jsp"
链接到页面1<
/a>
second.jsp"
链接到页面2<
third.jsp"
链接到页面3<
first.jsp
<
P>
这是页面1
%@includefile="
leader.txt"
%>
BODY>
second.jsp
这是页面2
third.jsp
BODYBGCOLOR=green>
这是页面3
frist.jsp页面
second.jsp页面
third.jsp页面
1、include指令标记是在jsp页面出现该指令的位置处,静态的插入一个文件。
被插入的文件必须是可访问和可使用的。
Include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖与当前jsp页面,优点是执行速度快。
实验四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
BODYBGCOLOR=yellow>
读取名字是ok.txt的文件:
jsp:
includepage="
readFile.jsp"
<
paramname="
file"
D:
/ProgramFiles/tomcat/webapps/chapter2/ok.txt"
/>
/jsp:
include>
readFile.jsp
java.io.*"
FONTSize=2color=bule>
ThisisreadFile.jsp.
FONTSize=4>
Strings=request.getParameter("
Filef=newFile(s);
if(f.exists())
out.println("
文件"
+s+"
的内容:
FileReaderin=newFileReader(f);
BufferedReaderbIn=newBufferedReader(in);
Stringline=null;
while((line=bIn.readLine())!
=null)
out.println("
+line);
else
%>
<
forwardpage="
error.jsp"
<
mess"
FileNotFound"
forward>
}
error.jsp
FONTSize=5color=red>
Thisiserror.jsp.
FONTSize=2>
Strings=request.getParameter("
out.println("
本页面得到的信息:
+s);
giveFileName.jsp页面
error.jsp页面
1、include动作标记是在jsp页面运行时才处理加载的文件,被加载的文件在逻辑和语法上独立与当前jsp页面,include指令标记可以使用param子标记向被加载的jsp文件传递信息。
实验五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
BODYbgcolor=cyan>
FONTsize=5>
receiveNumber.jsp"
method=postname=form>
输入运算数、选择运算符号:
Inputtype=textname="
numberOne"
size=6>
selectname="
operator"
optionvalue="
+"
+
-"
-
*"
*
/"
/
/select>
numberTwo"
Inputtype="
提交你的选择"
Computer.tag
%@tagpageEncoding="
GB2312"
%@attributename="
numberA"
required="
true"
numberB"
%@variablename-given="
result"
scope="
AT_END"
%try
doublea=Double.parseDouble(numberA);
doubleb=Double.parseDouble(numberB);
doubler=0;
if(operator.equals("
))
{
r=a+b;
}
elseif(operator.equals("
r=a-b;
r=a*b;
r=a/b;
jspContext.setAttribute("
String.valueOf(r));
catch(Exceptione){
jspContext.setAttribute("
"
发生异常:
+e);
}
inputNumber.jsp页面
receiveNumber.jsp页面
五:
实验结果分析
1、内置对象request的作用就是用来接收客户端提交的请求
2、request对象用的比较多的方法是getParameter方法。
request对象的getParameter方法根据指定的参数,获取客户端提交的信息。
其语法规则如下:
%Stringname=request.getParameter(“txtName”)%>
其中,name是一个字符串变量。
txtName是客户端提交信息中的一个字段名。
3、下面的就是在实验里面request的使用
%
Stringa=request.getParameter("
Stringb=request.getParameter("
Stringoperator=request.getParameter("
)
实验六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(Strings)方法将contentType属性的值设置为text/plain,同时输出“半径不合理”;
如果数字大于0并且小于等于100,response对象调用setContentType(Strings)方法将contentType属性的值设置为image/jpeg,并绘制一个圆;
如果用户在inputRadius.jsp页面输入了非数字,response对象调用sendRedirect(URLurl)方法将用户重定向到inputRadius.jsp。
inputRadius.jsp
charset=GB2312"
BODYbgcolor=yellow>
FONTsize=2>
drawCircle.jsp"
输入圆的半径:
inputtype=textname="
radius"
<
inputtype="
提交"
name="
drawCircle.jsp
java.awt.*"
BODYbgcolor="
yellow"
FRONTsize=3>
StringR=request.getParameter("
out.print(R);
try
doublenumber=Double.parseDouble(R);
if(number<
=0||number>
100)
{
response.setContentType("
text/plain;
out.println(number+"
作为圆的半径不合理"
}
elseif(number>
0&
&
number<
=100)
image/jpeg"
intwidth=100,height=100;
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphicsg=image.getGraphics();
g.setColor(Color.white);
g.fillRect(0,0,width,height);
Graphics2Dg_2d=(Graphics2D)g;
Ellipse2Dcircle=newEllipse2D.Double(0,0,number,number);
g_2d.setColor(Color.blue);
g_2d.fill(circle);
g.dispose();
OutputStreamoutClient=response.getOutputStream();
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(outClient);
encoder.encode(image);