logo资料库

JSP程序设计习题答案.doc

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
习题一:
习题二
习题三
Lianxi6.jsp:
Rect.tag:
Circle.tag:
GetArea.tag:
Biaoge.tag:
习题四
GuessLetter.jsp:
习题五
Read.tag:
习题六
1.答:
GetRecord.tag:
AddRecord.tag:
RenewRecord.tag:
DelRecord.tag:
习题七
3. 答: C。
4. A
Rect.java:
习题八
5. 答:doGet和doPost方法。
6. 答:HttpServletResponse类的sendRedirect方法可以把用户重新定向到
习题九
Equation.java:
(2)视图
input.jsp:
show.jsp:
(3)控制器
HandleData.java:
习题一: 1.答:确保 Tomcat 服务器使用的是 Java_home 环境变量设置的 JDK。 2.答:属于操作题,解答略。 3.答:Web 服务目录的下的目录称为该 Web 服务目录下的相对 Web 服务目录。浏览器的 地址栏中键入:http://IP:8080/Web 目录名字/子目录名字/JSP 页面。 4.答:修改 Tomcat 服务器安装目录中 conf 文件夹中的主配置文件:server.xml,只要没有 其他应用程序正在占用 80,就可以将端口号设置为 80。 习题二 1.答:“<%!”和“%>”之间声明的变量在整个 JSP 页面内都有效,称为 JSP 页面的成员 变量,成员变量的有效范围与标记符号<%!、%>所在的位置无关。所有用户共享 JSP 页面 的成员变量,因此任何一个用户对 JSP 页面成员变量操作的结果,都会影响到其他用户。 “<%”和“%>”之间声明的变量称为局部变量,局部变量在 JSP 页面后继的所有程序 片以及表达式部分内都有效。运行在不同线程中的 Java 程序片的局部变量互不干扰,即一 个用户改变 Java 程序片中的局部变量的值不会影响其他用户的 Java 程序片中的局部变量。 当一个线程将 Java 程序片执行完毕,运行在该线程中的 Java 程序片的局部变量释放所占的 内存。 2.答:两次。 3.答:第一个问题的答案是允许;第二个问题的答案是不允许。 4.答:第一个用户看到的 sum 的值是 610,第二个用户看到的 sum 的值是 1210 5.答: <%@ page contentType="text/html;charset=GB2312" %> <% for(char c='A';c<='Z';c++) out.print(" "+c); { } %> 6.答:include 指令标记的作用是在 JSP 页面出现该指令的位置处,静态插入一个文件,即 JSP 页面和插入的文件合并成一个新的 JSP 页面,然后 JSP 引擎再将这个新的 JSP 页面转译 成 Java 文件。因此,插入文件后,必须保证新合并成的 JSP 页面符合 JSP 语法规则,即能 够成为一个 JSP 页面文件。include 动作标记告诉 JSP 页面动态加载一个文件,不把 JSP 页 面中动作指令 include 所指定的文件与原 JSP 页面合并一个新的 JSP 页面,而是告诉 Java 解 1
释器,这个文件在 JSP 运行时(Java 文件的字节码文件被加载执行)才被处理。如果包含 的文件是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;如果包含 的文件是 JSP 文件,JSP 引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户 端负责显示这些结果。 7.答: main.jsp: <%@ page contentType="text/html;charset=GB2312" %> lader.jsp: <%@ page contentType="text/html;charset=GB2312" %> <% String strA=request.getParameter("a"); String strB=request.getParameter("b"); String strH=request.getParameter("h"); double a=Double.parseDouble(strA); double b=Double.parseDouble(strB); double h=Double.parseDouble(strH); double area=(a+b)*h/2; %>

梯形面积:<%=area%> 习题三 1.答:不可以 2.答:如果某个 Web 服务目录下的 JSP 页面准备调用一个 Tag 文件,那么必须在该 Web 服务目录下,建立目录:Web 服务目录\WEB-INF\tags,其中,WEB-INF 和 tags 都是固定的 子目录名称,而 tags 下的子目录名字可由用户给定。一个 Tag 文件必须保存到 tags 目录或 其下的子目录中。 3.答:body-content、language、import、pageEncoding 。 2

4.答:使用 attribute 指令可以动态地向该 Tag 文件传递对象的引用。 5.答:使用 variable 指令可以将 Tag 文件中的对象返回给调用该 Tag 文件的 JSP 页面。 6.答: Lianxi6.jsp: <%@ page contentType="text/html;Charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>

以下是调用 Tag 文件的效果:

以下是调用 Tag 文件的效果:

Rect.tag:

这是一个 Tag 文件,负责计算矩形的面积。 <%@ attribute name="sideA" required="true" %> <%@ attribute name="sideB" required="true" %> <%! public String getArea(double a,double b) { if(a>0&&b>0) { } double area=a*b ; return "
矩形的面积:"+area; else { return("
"+a+","+b+"不能构成一个矩形,无法计算面积"); } } %> <% out.println("
JSP 页面传递过来的两条边:"+sideA+","+sideB); double a=Double.parseDouble(sideA); double b=Double.parseDouble(sideB); out.println(getArea(a,b)); %> Circle.tag:

这是一个 Tag 文件,负责计算园的面积。 <%@ attribute name="radius" required="true" %> <%! public String getArea(double r) { if(r>0) { 3

double area=Math.PI*r*r ; return "
圆的面积:"+area; } else { return("
"+r+"不能构成一个圆,无法计算面积"); } } %> <% out.println("
JSP 页面传递过来的半径:"+radius); double r=Double.parseDouble(radius); out.println(getArea(r)); %> 7.答: one.jsp: <%@ page contentType="text/html;charset=GB2312" %> <%@ page import ="java.text.*" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>

面积保留 3 位小数点: <% NumberFormat f=NumberFormat.getInstance(); f.setMaximumFractionDigits(3); double result=area.doubleValue(); String str=f.format(result); out.println(str); %> two.jsp: <%@ page contentType="text/html;charset=GB2312" %> <%@ page import ="java.text.*" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>

面积保留 6 位小数点: <% NumberFormat f=NumberFormat.getInstance(); 4

f.setMaximumFractionDigits(6); double result=area.doubleValue(); String str=f.format(result); out.println(str); %> GetArea.tag: <%@ attribute name="sideA" required="true" %> <%@ attribute name="sideB" required="true" %> <%@ attribute name="sideC" required="true" %> <%@ variable name-given="area" variable-class="java.lang.Double" scope="AT_END" %> <% double a=Double.parseDouble(sideA); double b=Double.parseDouble(sideB); double c=Double.parseDouble(sideC); if(a+b>c&&a+c>b&&c+b>a) { double p=(a+b+c)/2.0; double result=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ; jspContext.setAttribute("area",new Double(result)); } else { jspContext.setAttribute("area",new Double(-1)); } %> 8.答: linxi8.jsp: <%@ page contentType="text/html;Charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="ok"%> 5
Biaoge.tag: <%@ attribute name="color" %> <%@ attribute name="name" %> <%@ attribute name="phone" %> <%@ attribute name="email" %> <%=name%> <%=phone%> <%=email%> 习题四 1.答:(C)。 2.答:将获取的字符串用 ISO-8859-1 进行编码,并将编码存放到一个字节数组中,然后再 将这个数组转化为字符串对象。 3.答: inputString.jsp: <%@ page contentType="text/html;charset=GB2312" %>
computer.jsp: <%@ page contentType="text/html;charset=GB2312" %> <% String textContent=request.getParameter("str"); byte b[]=textContent.getBytes("ISO-8859-1"); textContent=new String(b); 6
%> 字符串:<%=textContent%>的长度:<%=textContent.length()%> 4.答:实现用户的重定向。 5.答:(1) 不相同。(2)相同。(3)可能消失。(4)一定消失。 6.答: lianxi6.jsp: <%@ page contentType="text/html;charset=GB2312" %> <% session.setAttribute("message","请您猜字母"); char a[]=new char[26]; int m=0; for(char c='a';c<='z';c++) { a[m]=c; m++; } int randomIndex=(int)(Math.random()*a.length); char ch=a[randomIndex]; //获取一个英文字母 session.setAttribute("savedLetter",new Character(ch)); session.setAttribute("count",new Integer(0)); %> 访问或刷新该页面可以随机得到一个英文字母.
单击超链接去猜出这个字母:去猜字母 guess.jsp: <%@ page contentType="text/html;charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="guess"%> <% String str=request.getParameter("clientGuessLetter"); if(str==null) { str="*"; } if(str.length()==0) { str="*"; } %> 7
当前猜测结果:<%=message%> <% if(message.startsWith("您猜对了")) { %>
重新获得一个字母 <% } else { %>
输入您的猜测:
<% } %> GuessLetter.jsp: <%@ tag pageEncoding="GB2312" %> <%@ attribute name="guessLetter" required="true" %> <%@ variable name-given="message" scope="AT_END" %> <% String mess=""; Character ch=(Character)session.getAttribute("savedLetter"); char realLetter=ch.charValue(); char c=(guessLetter.trim()).charAt(0); if(c<='z'&&c>='a') { if(realLetter==c) { } int n=((Integer)session.getAttribute("count")).intValue(); n=n+1; session.setAttribute("count",new Integer(n)); mess="您猜对了,这是第"+n+"次猜测"; else if(realLetter
分享到:
收藏