1、1JSP 实用教程(第三版) 课后答案第 1 章 JSP 简介1. 安装 Tomcat 引擎的计算机需要事先安装 JDK 吗?答:需要。2. 怎样启动和关闭 Tomcat 服务器?答:bin 目录下使用 startup.bat 启动 Tomcat 服务器。 bin 目录下使用shutdown.bat 关闭 Tomcat 服务器。 3. Boy.jsp 和 boy.jsp 是否是相同的 JSP 文件名字?答:不是4. 请在 D:下建立一个名字为 water 的目录,并将该目录设置成一个 Web 服务目录,然后编写一个简单 JSP 页面保存到该目录中,让用户使用虚拟目录 fish来访问该 JSP
2、页面。答:设置方法: 建立 D: water 目录; 修改 server.xml 文件,在上一行添加: 使用 http:/localhost:8080/ fish /example1_1.jsp 访问 example1_1.jsp 页面.5. 假设 Dalian 是一个 Web 服务目录,其虚拟目录为 moon。A.jsp 保存在Dalian 的子目录 sea 中。那么在 Tomcat 服务器(端口号 8080)所在计算机的浏览器键入下列哪种方式是访问 A.jsp 的正确方式?Ahttp:/127.0.0.1:8080/A.jsp B. http:/127.0.0.1:8080/Dalian/
3、A.jspC. http:/127.0.0.1:8080/moon/A.jsp D. http:/127.0.0.1:8080/moon/sea/A.jsp答:D6如果想修改 Tomcat 服务器的端口号,应当修改哪个文件?能否将端口号修改为 80?答:修改 Tomcat 服务器的 conf 目录下的主配置文件 server.xml 可以更改端口号. 若 Tomcat 服务器上没有其它占有 80 端口号的程序,可以将其修改为 80,否则不能。2第 2 章 JSP 语法1.之间声明的变量与声明的变量有何不同?答: 声明的变量为类的成员变量,其所占的内存直到 Tomcat 服务器关闭才释放.为类方
4、法中声明的局部变量,仅在 JSP 页面后继的程序片及表达式中有效.2. 如果有 2 个用户访问一个 JSP 页面,该页面中的 Java 程序片将被执行几次?答:2 次(当有一个用户访问 JSP 页面,JAVA 程序片就被访问一次).5. 假设有两个不同用户访问下列 JSP 页面 hello.jsp,请问第一个访问和第二个访问 hello.jsp 页面的用户看到的页面的效果有何不同?hello.jsp答:第一个客户看到结果是 101;第二个客户看到结果是 201;6. 请编写一个简单的 JSP 页面,显示英文字母表。37. 请简单叙述 include 指令标记和 include 动作标记的不同
5、.答: include 指令标记:是把被包含的文件的内容放于包含文件中,组成一个文件后编译运行.include 动作标记: 是把被包含的文件的运行结果放于包含文件运行产生的结果中,这 2 个文件各自编译运行.8. 编写三个 JSP 页面:main.jsp、circle.jsp、ladder.jsp,将三个 JSP 页面保存在同一 web 服务目录中。main.jsp 使用 include 动作标记加载 circle.jsp 和ladder.jsp 页面。 circle.jsp 页面可以计算并显示圆的面积。ladder.jsp 页面可以计算并显示梯形的面积。当 circle.jsp 和 ladd
6、er.jsp 被加载时获取 main.jsp 页面include 动作标记的 param 子标记提供的圆的半径以及梯形的上底、下底和高的值。答:main.jsp:加载 circle.jsp 计算半径为 的圆的面积:“/加载 ladder.jsp 计算上底,下底,高为, 的梯形面积:“/“/“/ladder.jsp:0return “+area;else4return (“+c+“传递的参数小于零,出现错误!“ );%我是被加载的文件,负责计算梯形的面积给我传递的上底,下底,高分别是:,圆形的面积:circle.jsp:0)double area=3.14*r*r;return “+area;e
7、lsereturn (“+r+“传递的参数小于零,出现错误!请重新检查 r 的数值!“ );%我是被加载的文件,负责计算圆的面积给我传递的半径是:圆形的面积:5第 3 章 JSP 内置对象1.假设 JSP 使用的表单中有如下的 GUI(复选框)鸟苹果猫月亮该表单所请求的 JSP 可以使用内置对象 request 获取该表单提交的数据 ,那么,下列哪些是 request 获取该表单提交的值的正确语句?A. String a=request.getParameter(“item“);B. String b=request.getParameter(“checkbox“);C. String c=r
8、equest.getParameterValues(“item“);D. String d=request.getParameterValues(“checkbox“);答: C.2. 如果表单提交的信息中有汉字,接收该信息的页面应做怎样的处理?答:处理方法有 2 种:第 1 种:指令中的 Charset 首字母”C”大写.第 2 种:3.编写两个 JSP 页面 inputString.jsp 和 computer.jsp,用户可以使用inputString.jsp 提供的表单输入一个字符串,并提交给 computer.jsp 页面,该页面通过内置对象获取 inputString.jsp 页面
9、提交的字符串,计算并显示该字符串的长度。答: inputString.jsp请输入字符串:computer.jsp6您输入的字符串是:字符串的长度是:return4. response 调用 sendRedirect(URL: url)方法的作用是什么?答:从一个页面跳转到 sendRedirect(URL: url)中 url 指定的页面,并且这种跳转是客户端跳转.5. 略6. 一个用户在不同 Web 服务目录中的 session 对象相同吗?答:不相同.7. 一个用户在同一 Web 服务目录的不同子目录的 session 对象相同吗?答:相同.7第 4 章 JSP 与 Javabean1.
10、 假设 Web 服务目录 mymoon 中的 JSP 页面要使用一个 bean,该 bean 的包名为 blue.sky。请说明 ,应当怎样保存 bean 的字节码文件?答:(1)在当前 Web 服务目录下建立如下目录结构: (2)Web 服务目录 WEB-INFclasses (3)根据类的包名,在目录 classes 下建立相应的子目录.即:Web 服务目录WEB-INFclassesbluesky (4)将获得的字节码文件保存在其中.2. tom.jiafei.Circle 是创建 bean 的类,下列哪个标记是正确创建 session 周期bean 的标记?答: 3. 假设创建 bea
11、n 的类有一个 int 型的属性 number,下列哪个方法是设置该属性值的正确方法?A. public void setNumber(int n) B. void setNumber(int n) number=n; number =n; C. public void SetNumber(int n) D. public void Setnumber(int n) number =n; number =n; 答: A.5. 编写一个 JSP 页面,该页面提供一个表单,用户可以通过表单输入梯形的上底,下底和高的值,并提交给本 JSP 页面,该 JSP 页面将计算梯形的面积之任务交给一个 bea
12、n 去完成。 JSP 页面使用 getProperty 动作标记显示梯形的面积。答:ladder.jsp:输入梯形上底、下底和高:上底:下底:8高:输入梯形上底、下底和高:上底:,下底:,高:.面积是: Ladder.java:package pfc;public class Ladderdouble top=0,bottom=0,height=0,area=-1;public double getArea() area=(top+bottom)*height/2;return area;public double getBottom() return bottom;public void s
13、etBottom(double bottom) this.bottom = bottom;public double getHeight() return height;public void setHeight(double height) this.height = height;public double getTop() return top;public void setTop(double top) this.top = top;6. 编写两个 JSP 页面 a.jsp 和 b.jsp,a.jsp 页面提供一个表单,用户可以通过表单输入矩形的两个边长提交给 b.jsp 页面,b.j
14、sp 调用一个 bean 去完成计算矩形面积的任务。b.jsp 页面使用 getProperty 动作标记显示矩形的面积。9答:a.jsp:输入矩形的长和宽:长:宽:b.jsp:矩形的长和宽:长:,宽:,面积是: Rectangle.java:package pfc;public class Rectangledouble longside=0,width=0,area=-1;public double getArea() area=longside*width;return area;public double getLongside() return longside;public void setLongside(double longside) this.longside = longside;public double getWidth() return width;public void setWidth(double width) this.width = width;10