JSP程序设计习题解答Word格式.docx
《JSP程序设计习题解答Word格式.docx》由会员分享,可在线阅读,更多相关《JSP程序设计习题解答Word格式.docx(34页珍藏版)》请在冰点文库上搜索。
application/msword"
是否允许JSP页面同时含有如下两条指令:
%@pageimport="
java.util.*"
java.sql.*"
第一个问题的答案是不允许;
第二个问题的答案是允许。
4.假设有两个用户访问下列JSP页面hello.jsp,请问第一个访问和第二个访问hello.jsp页面的用户所看到的页面的效果有何不同?
Hello.jsp
%@pageisThreadSafe="
false"
html>
body>
intsum=10;
voidadd(intm){
sum=sum+m;
}
%>
%intn=600;
add(n);
<
%=sum%>
/body>
/html>
第一个用户看到的sum的值是610,第二个用户看到的sum的值是1210
5.请编写一个简单的JSP页面,显示大写英文字母表。
HTML>
BODY>
%
for(charc='
A'
;
c<
='
Z'
c++)
{
out.print("
"
+c);
/BODY>
/HTML>
6.请简单叙述include指令标记和include动作标记的不同。
include指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件,即JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。
因此,插入文件后,必须保证新合并成的JSP页面符合JSP语法规则,即能够成为一个JSP页面文件。
include动作标记告诉JSP页面动态加载一个文件,不把JSP页面中动作指令include所指定的文件与原JSP页面合并一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行时(Java文件的字节码文件被加载执行)才被处理。
如果包含的文件是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;
如果包含的文件是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户端负责显示这些结果。
7.编写两个JSP页面:
main.jsp和lader.jsp,将两个JSP页面保存在同一Web服务目录中。
main.jsp使用include动作标记动态加载lader.jsp页面。
lader.jsp页面可以计算并显示梯形的面积。
当lader.jsp被加载时获取main.jsp页面中include动作标记的param子标记提供的梯形的上底、下底和高的值。
main.jsp:
jsp:
includepage="
lader.jsp"
>
paramname="
a"
value="
5"
/>
b"
6"
h"
10"
/jsp:
include>
lader.jsp:
%
StringstrA=request.getParameter("
);
StringstrB=request.getParameter("
StringstrH=request.getParameter("
doublea=Double.parseDouble(strA);
doubleb=Double.parseDouble(strB);
doubleh=Double.parseDouble(strH);
doublearea=(a+b)*h/2;
P>
梯形面积:
%=area%>
习题三
1.用户可以使用浏览器直接访问一个Tag文件吗?
不可以
2.Tag文件应当存放在怎样的目录中?
如果某个Web服务目录下的JSP页面准备调用一个Tag文件,那么必须在该Web服务目录下,建立目录:
Web服务目录\WEB-INF\tags,其中,WEB-INF和tags都是固定的子目录名称,而tags下的子目录名字可由用户给定。
一个Tag文件必须保存到tags目录或其下的子目录中。
3.Tag文件中的tag指令可以设置哪些属性的值?
body-content、language、import、pageEncoding。
4.Tag文件中的attribute指令有怎样的作用?
使用attribute指令可以动态地向该Tag文件传递对象的引用。
5.Tag文件中的varibute指令有怎样的作用?
使用variable指令可以将Tag文件中的对象返回给调用该Tag文件的JSP页面。
6.编写两个Tag文件Rect.tag和Circle.tag。
Rect.tag负责计算并显示矩形的面积,Circle.tag负责计算并显示圆的面积。
编写一个JSP页面lianxi6.jsp,该JSP页面使用Tag标记调用Rect.tag和Circle.tag。
调用Rect.tag时,向其传递矩形的两个边的长度;
调用Circle.tag时,向其传递圆的半径。
Lianxi6.jsp:
Charset=GB2312"
%@taglibtagdir="
/WEB-INF/tags"
prefix="
computer"
H3>
以下是调用Tag文件的效果:
/H3>
computer:
RectsideA="
sideB="
/>
Circleradius="
16"
Rect.tag:
h4>
这是一个Tag文件,负责计算矩形的面积。
%@attributename="
sideA"
required="
true"
sideB"
publicStringgetArea(doublea,doubleb)
{if(a>
0&
&
b>
0)
doublearea=a*b;
return"
BR>
矩形的面积:
"
+area;
else
{return("
+a+"
"
+b+"
不能构成一个矩形,无法计算面积"
%out.println("
JSP页面传递过来的两条边:
+sideA+"
+sideB);
doublea=Double.parseDouble(sideA);
doubleb=Double.parseDouble(sideB);
out.println(getArea(a,b));
Circle.tag:
这是一个Tag文件,负责计算园的面积。
radius"
publicStringgetArea(doubler)
{if(r>
doublearea=Math.PI*r*r;
圆的面积:
+r+"
不能构成一个圆,无法计算面积"
JSP页面传递过来的半径:
+radius);
doubler=Double.parseDouble(radius);
out.println(getArea(r));
7.编写一个Tag文件GetArea.tag负责求出三角形面积,并使用variable指令返回三角形的面积给调用该Tag文件的JSP页面。
JSP页面负责显示Tag文件返回的三角形的面积。
JSP在调用Tag文件时,使用attribute指令将三角形三边的长度传递给Tag文件。
one.jsp和two.jsp都使用Tag标记调用GetArea.tag。
one.jsp将返回三角形的面积保留最多3位小数、two.jsp将返回的三角形面积保留最多6位小数。
one.jsp:
%@pageimport="
java.text.*"
BODYbgcolor=cyan>
GetAreasideA="
3"
sideC="
面积保留3位小数点:
NumberFormatf=NumberFormat.getInstance();
f.setMaximumFractionDigits(3);
doubleresult=area.doubleValue();
Stringstr=f.format(result);
out.println(str);
two.jsp:
面积保留6位小数点:
f.setMaximumFractionDigits(6);
GetArea.tag:
sideC"
%@variablename-given="
area"
variable-class="
java.lang.Double"
scope="
AT_END"
doublec=Double.parseDouble(sideC);
if(a+b>
c&
a+c>
b&
c+b>
a)
{doublep=(a+b+c)/2.0;
doubleresult=Math.sqrt(p*(p-a)*(p-b)*(p-c));
jspContext.setAttribute("
newDouble(result));
{jspContext.setAttribute("
newDouble(-1));
8.答:
linxi8.jsp:
ok"
tableborder=1>
ok:
Biaogecolor="
yellow"
name="
姓名"
phone="
电话"
email="
email"
cyan"
张三"
12345678"
ss@"
#ffc0ff"
李小花"
9876543"
cc@"
孙六"
11223355"
pp@"
吴老二"
66553377"
ee@"
/ok:
Biaoge>
/table>
Biaoge.tag:
color"
name"
phone"
trbgcolor="
%=color%>
tdwidth=60>
%=name%>
/td>
%=phone%>
%=email%>
/tr>
doBody/>
习题四
1.答:
(C)。
2.答:
将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象。
3.答:
inputString.jsp:
BODYbgcolor=green>
FORMaction="
computer.jsp"
method=postname=form>
INPUTtype="
text"
str"
INPUTTYPE="
submit"
提交"
/FORM>
computer.jsp:
MHML>
%StringtextContent=request.getParameter("
byteb[]=textContent.getBytes("
ISO-8859-1"
textContent=newString(b);
字符串:
%=textContent%>
的长度:
%=textContent.length()%>
4.答:
实现用户的重定向。
5.答:
(1)不相同。
(2)相同。
(3)可能消失。
(4)一定消失。
6.答:
lianxi6.jsp:
BODY>
session.setAttribute("
message"
请您猜字母"
chara[]=newchar[26];
intm=0;
a'
z'
{a[m]=c;
m++;
intrandomIndex=(int)(Math.random()*a.length);
charch=a[randomIndex];
//获取一个英文字母
savedLetter"
newCharacter(ch));
count"
newInteger(0));
访问或刷新该页面可以随机得到一个英文字母.
单击超链接去猜出这个字母:
Ahref="
guess.jsp"
去猜字母<
/A>
guess.jsp:
guess"
%Stringstr=request.getParameter("
clientGuessLetter"
if(str==null)
{str="
*"
if(str.length()==0)
guess:
GuessLetterguessLetter="
%=str%>
当前猜测结果:
%=message%>
%if(message.startsWith("
您猜对了"
))
{
br>
AHREF="
lianxi6.jsp"
重新获得一个字母<
%}
输入您的猜测:
method="
post"
name=form>
>
送出"
/FONT>
GuessLetter.jsp:
%@tagpageEncoding="
GB2312"
guessLetter"
%Stringmess="
Characterch=(Character)session.getAttribute("
charrealLetter=ch.charValue();
charc=(guessLetter.trim()).charAt(0);
if(c<
c>
)
if(realLetter==c)
intn=((Integer)session.getAttribute("
)).intValue();
n=n+1;
newInteger(n));
mess="
您猜对了,这是第"
+n+"
次猜测"
}
elseif(realLetter<
c)
您猜大了,这是第"
elseif(realLetter>
您猜小了,这是第"
else
{mess="
请输入a至z之间的英文字母。
mess);
习题五
不能
调用publiclonglength()方法。
A和D。
4.答:
RandomAccessFile类既不是输入流