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 voi
15、d setLongside(double longside) this.longside = longside;public double getWidth() return width;public void setWidth(double width) this.width = width;1011第 5 章 Java Servlet 基础1. servlet 对象是在服务器端还是在客户端创建的?答:服务器端.2. servlet 对象被创建后首选调用 init 方法还是 service 方法?答:init 方法.3. “servlet 第一次被请求加载时调用 init 方法,当后续的客户
16、请求 servlet 对象时, servlet 对象不再调用 init 方法”, 这样的说法是否正确 ?答:正确.4. 假设创建 servlet 的类是 tom.jiafei.Dalian,创建的 servlet 对象的名字是myservlet,应当怎样配置 web.xml 文件?答:myservlet tom.jiafei.Dalian myservlet/lookHello5. 如果 Servlet 类不重写 service 方法,那么应当重写哪两个方法?答:doGet 方法或 doPost 方法。6. HttpServletResponse 类的 sendRedirect 方法和 Req
17、uestDispatcher 类的forward 方法有何不同?答:javax.servlet.http .HttpServletResponse 提供的方法 void sendRedirect(String location) throws IOException 客户端跳转.即当前页面可用 request 对象获取用户提交参数 ,而目标页面都不可用 request 对象获取用户提交参数 . 转发 javax.servlet .RequestDispatcher 接口提供的方法 12void forward(ServletRequest request, ServletResponse re
18、sponse) / Forwards a request from a servlet to another resource (servlet, JSP file, or HTML file) on the server.服务器跳转.即当前页面和目标页面都可用 request 对象获取用户提交参数. 7. Servlet 对象怎样获得用户的会话对象?答:在 doGet()或 doPost()方法中使用获取当前会话对象. HttpSession session=request.getSession(true);一个用户在不同的 Servlet 中获取的 session 对象是完全相同的,不同的
19、用户的session 对象互不相同。 13第 6 章 MVC 模式1. 在 JSP 中,MVC 模式中的数据模型之角色由谁担当?答:由 Java Bean 或 EJB 充当.2. 在 JSP 中,MVC 模式中的控制器之角色由谁担当?答:一个或多个 Servlet 对象充当 .3. 在 JSP 中,MVC 模式中的视图之角色由谁担当?答:由一个或多个 JSP 页面或 HTML 页面充当.4. MVC 的好处是什么 ?答:MVC 模式的核心思想是有效地组合“视图” 、 “模型”和“控制器” 。在 JSP 技术中,视图是一个或多个 JSP 页面,其作用主要是向控制器提交必要的数据和为模型提供数据显
20、示;模型是一个或多个 Javabean 对象,用于存储数据;控制器是一个或多个 servlet 对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到 Javabean 中,然后 servlet 使用重定向方式请求视图中的某个JSP 页面更新显示。5. MVC 模式中用到的 Javabean 是由 JSP 页面还是 servlet 负责创建?答:是 servlet 负责14第 7 章 在 JSP 中使用数据库1. 加载 MySQL 的 JDBC 数据库驱动程序代码是什么?答:try Class.forName(“com.mysql.jdbc.Driver“); catch(Except
21、ion e) 2. 加载 SQL server 的 JDBC 数据库驱动程序代码是什么?答:try Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“); catch(Exception e) 4. 使用预处理语句的好处是什么?答:预处理语句 PreparedStatement 会将传入的 SQL 命令封装在PreparedStatement 对象中 ,事先进行预编译处理等待使用。 当有单一的 SQL 语句多次执行时,用 PreparedStatement 类会比 Statement 类更有效率。 15第 8 章 JSP 中
22、的文件操作1. File 对象能读写文件吗?答:不能。2. File 对象怎样获取文件的长度?答:调用 public long length()方法。3. 准备读取文件“A.java” ,下列哪些是正确创建输入流的代码?A.try FileInputStream in=new FileInputStream(“A.java”);catch(IOException e)B. try InputStream in=new InputStream(“A.java”);catch(IOException e)C. try FileReader in=new FileInputStream(new Fi
23、le(“A.java”);catch(IOException e)D. try FileReader in=new FileReader (new File(“A.java”);catch(IOException e)答:A 和 D。4. RandomAccessFile 类创建的流在读写文件时有什么特点?答:RandomAccessFile 类既不是输入流类 InputStream 类的子类,也不是输出流类 Outputstream 类的子类。想对一个文件进行读写操作时,可以创建一个指向该文件的 RandomAccessFile 流,这样我们既可以从这个流中读取这个文件的数据,也可以通过这个流给这个文件写入数据。