JSP实用教程课后答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《JSP实用教程(第三版)》课后答案
第1章 JSP简介
1.安装Tomcat引擎的计算机需要事先安装JDK吗?
答:需要。

2.怎样启动和关闭Tomcat服务器?
答:bin目录下使用启动Tomcat服务器。

bin目录下使用关闭Tomcat服务器。

3. 和是否是相同的JSP文件名字?
答:不是
4. 请在D:\下建立一个名字为water的目录,并将该目录设置成一个Web服务目录,然后编写一个简单JSP页面保存到该目录中,让用户使用虚拟目录fish 来访问该JSP页面。

答:设置方法:
①建立D:\ water目录;
②修改文件,在</host>上一行添加:
<Context path="/fish" docBase="D:\ water" debug="0" reloadable="true"/>
③使用 fish /访问页面.
5. 假设Dalian是一个Web服务目录,其虚拟目录为moon。

保存在Dalian的子目录sea中。

那么在Tomcat服务器(端口号8080)所在计算机的浏览器键入下列哪种方式是访问的正确方式?
A. B. D. 答:D
6.如果想修改Tomcat服务器的端口号,应当修改哪个文件?能否将端口号修改为80?
答:修改Tomcat服务器的conf目录下的主配置文件可以更改端口号.
若Tomcat服务器上没有其它占有80端口号的程序,可以将其修改为80,否则不能。

第2章 JSP语法
1."<%!"和"%>"之间声明的变量与"<%"和"%>"声明的变量有何不同?答:
"<%!"和"%>"声明的变量为类的成员变量,其所占的内存直到Tomcat服务器关闭才释放.
"<%"和"%>"为类方法中声明的局部变量,仅在JSP页面后继的程序片及表达式中有效.
2. 如果有2个用户访问一个JSP页面,该页面中的Java程序片将被执行几次?答:2次(当有一个用户访问JSP页面,JAVA程序片就被访问一次).
5. 假设有两个不同用户访问下列JSP页面,请问第一个访问和第二个访问页面的用户看到的页面的效果有何不同?
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page isThreadSafe="false" %>
<BODY><HTML>
<%! int sum=1;
void add(int m){
sum = sum +m;
}
%>
<% int n =100;
add(n);
%>
<%=sum%>
</BODY></HTML>
答:第一个客户看到结果是101;
第二个客户看到结果是201;
6. 请编写一个简单的JSP页面,显示英文字母表。

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<%
for(char c='A';c<='Z';c++)
{
(" "+c);
}
%>
</BODY></HTML>
7. 请简单叙述include指令标记和include动作标记的不同.
答:
include指令标记:是把被包含的文件的内容放于包含文件中,组成一个文件后编译运行.
include动作标记: 是把被包含的文件的运行结果放于包含文件运行产生的结果中,这2个文件各自编译运行.
8. 编写三个JSP页面:、、,将三个JSP页面保存在同一web服务目录中。

使用include动作标记加载和页面。

页面可以计算并显示圆的面积。

页面可以计算并显示梯形的面积。

当和被加载时获取页面include动作标记的param子标记提供的圆的半径以及梯形的上底、下底和高的值。

答:

<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=yellow>
<% double r=3,a=2,b=5,c=2;
%>
<br>加载计算半径为 <%=r%>的圆的面积:
<jsp:include page="">
<jsp:param name="sideR" value="<%=r%>"/>
</jsp:include>
<br>加载计算上底,下底,高为<%=a%>,<%=b%>,<%=c%>的梯形面积:
<jsp:include page="">
<jsp:param name="sideA" value="<%=a%>"/>
<jsp:param name="sideB" value="<%=b%>"/>
<jsp:param name="sideC" value="<%=c%>"/>
</jsp:include>
</BODY>
</HTML>

<%@ page contentType="text/html;charset=GB2312" %>
<%! public String getArea(double a,double b,double c)
{
if(a>0&&b>0&&c>0)
{
double area=((a+b)*c)/;
return ""+area;
}
else
{
return (""+c+"传递的参数小于零,出现错误!" );
}
}
%>
<% String sideA=("sideA");
String sideB=("sideB");
String sideC=("sideC");
double a=(sideA);
double b=(sideB);
double c=(sideC);
%>
<font color=red size=4>
我是被加载的文件,负责计算梯形的面积<br>
给我传递的上底,下底,高分别是:<%=sideA%>,<%=sideB%>,<%=sideC%>
<br>圆形的面积:<%=getArea(a,b,c) %>
</font>
:
<%@ page contentType="text/html;charset=GB2312" %>
<%!public String getArea(double r)
{
if(r>0)
{
double area=*r*r;
return ""+area;
}
else
{
return (""+r+"传递的参数小于零,出现错误!请重新检查r的数值!" ); }
}
%>
<% String sideR=("sideR");
double r=(sideR);
%>
<font color=blue size=4>
我是被加载的文件,负责计算圆的面积<br>
给我传递的半径是:<%=sideR%>
<br>圆形的面积:<%=getArea(r) %>
</font>
第3章 JSP 内置对象
1.假设JSP使用的表单中有如下的GUI(复选框)
<input type="checkbox" name="item" value="bird">鸟
<input type="checkbox" name="item" value="apple">苹果
<input type="checkbox" name="item" value="cat">猫
<input type="checkbox" name="item" value="moon">月亮
该表单所请求的JSP可以使用内置对象request获取该表单提交的数据,那么,下列哪些是request获取该表单提交的值的正确语句?
A. String a=("item");
B. String b=("checkbox");
C. String c[]=("item");
D. String d[]=("checkbox");
答: C.
2. 如果表单提交的信息中有汉字,接收该信息的页面应做怎样的处理?
答:处理方法有2种:
第1种:
<%@ page contentType="text/html;Charset=GB2312" %>指令中的Charset首字母”C”大写.
第2种:
<% String str1=("number");
byte c[]=("ISO-8859-1");
str1=new String(c);
%>
3.编写两个JSP页面和,用户可以使用提供的表单输入一个字符串,并提交给页面,该页面通过内置对象获取页面提交的字符串,计算并显示该字符串的长度。

答:
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY><Font size=5>
<FORM action="" method=post name=form>
<BR>请输入字符串:<INPUT type="text" name="string" value=""></BR>
<INPUT TYPE="submit" value="提交" name="submit">
<INPUT TYPE="reset" value="重置" >
</FORM>
</FONT></BODY></HTML>
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY><Font size=5>
<% String yourString=("string"); %>
<P> 您输入的字符串是:<%=yourString %></P>
<p>字符串的长度是:<%=() %></p>
<a href = "">return</a>
</FONT></BODY></HTML>
4. response调用sendRedirect(URL: url)方法的作用是什么?
答:从一个页面跳转到sendRedirect(URL: url)中url指定的页面,并且这种跳转是客户端跳转.
5. 略
6. 一个用户在不同Web服务目录中的session对象相同吗?
答:不相同.
7. 一个用户在同一Web服务目录的不同子目录的session对象相同吗?
答:相同.
第4章 JSP与Javabean
1. 假设Web服务目录mymoon中的JSP页面要使用一个bean,该bean的包名为。

请说明,应当怎样保存bean的字节码文件?
答:
(1)在当前Web服务目录下建立如下目录结构:
(2)Web服务目录\WEB-INF\classes
(3)根据类的包名,在目录classes下建立相应的子目录.即:
Web服务目录\WEB-INF\classes\blue\sky
(4)将获得的字节码文件保存在其中.
2. 是创建bean的类,下列哪个标记是正确创建session周期bean的标记?
<jsp:useBean id="circle" class="" scope="page"/>
<jsp:useBean id="circle" class="" scope="request"/>
<jsp:useBean id="circle" class="" scope="session"/>
<jsp:useBean id="circle" type="" scope="session"/>
答: <jsp:useBean id="circle" class="" scope="session"/>
3. 假设创建bean的类有一个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页面将计算梯形的面积之任务交给一个bean去完成。

JSP页面使用getProperty动作标记显示梯形的面积。

答:
:
<%@ page pageEncoding="GBk" %>
<jsp:useBean id="ladder" class="" scope="page"/>
<HTML><BODY bgcolor=yellow><Font size=3>
<FORM action="" Method="post" >
输入梯形上底、下底和高:
上底:<Input type=text name="top" value=0>
下底:<Input type=text name="bottom" value=0>
高:<Input type=text name="height" value=0>
<Input type=submit value="提交">
</FORM>
<jsp:setProperty name="ladder" property="*"/>
输入梯形上底、下底和高:
上底:<jsp:getProperty name="ladder" property="top"/>,
下底:<jsp:getProperty name="ladder" property="bottom"/>,
高:<jsp:getProperty name="ladder" property="height"/>.
<BR>面积是: <jsp:getProperty name="ladder" property="area"/>
</FONT></BODY></HTML>
:
package pfc;
public class Ladder
{
double 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 setBottom(double bottom) {
= bottom;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
= height;
}
public double getTop() {
return top;
}
public void setTop(double top) {
= top;
}
}
6. 编写两个JSP页面和,页面提供一个表单,用户可以通过表单输入矩形的两个边长提交给页面,调用一个bean去完成计算矩形面积的任务。

页面使用getProperty动作标记显示矩形的面积。

答:
:
<%@ page pageEncoding="GBk" %>
<jsp:useBean id="ladder" class="" scope="page"/>
<HTML><BODY bgcolor=yellow><Font size=3>
<FORM action="" Method="post" >
输入矩形的长和宽:
长:<Input type=text name="longside" value=0>
宽:<Input type=text name="width" value=0>
<Input type=submit value="提交">
</FORM>
</FONT></BODY></HTML>
:
<%@ page pageEncoding="GBk" %>
<jsp:useBean id="rectangle" class="" scope="request"/>
<HTML><BODY bgcolor=yellow><Font size=3>
<jsp:setProperty name="rectangle" property="*"/>
矩形的长和宽:
长:<jsp:getProperty name="rectangle" property="longside"/>,
宽:<jsp:getProperty name="rectangle" property="width"/>,
<BR>面积是: <jsp:getProperty name="rectangle" property="area"/> </FONT></BODY></HTML>
:
package pfc;
public class Rectangle
{
double longside=0,width=0,area=-1;
public double getArea()
{ area=longside*width;
return area;
}
public double getLongside() {
return longside;
}
public void setLongside(double longside) {
= longside;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
= width;
}
}
第5章Java Servlet 基础
1.servlet对象是在服务器端还是在客户端创建的?
答:服务器端.
2.servlet对象被创建后首选调用init方法还是service方法?
答:init方法.
3.“servlet第一次被请求加载时调用init方法,当后续的客户请求servlet
对象时, servlet对象不再调用init方法”,这样的说法是否正确?
答:正确.
4.假设创建servlet的类是创建的servlet对象的名字是myservlet,应当怎样
配置文件?
答:
<?xml version=“” e ncoding="ISO-8859-1"?>
<web-app>
<servlet> <!--创建一个servlet对象 -->
<servlet-name>myservlet</servlet-name> <!--对象名 -->
<servlet-class>指定创建对象的servlet -->
</servlet>
<servlet-mapping> <!--为Servlet 进行映射地址 --><!--必须与Servlet 标记中的servlet-name指定的名称相同 -->
<servlet-name>myservlet</servlet-name><!--具体的映射路径,前面必须有一个/ -->
<url-pattern>/lookHello</url-pattern>
</servlet-mapping>
…..
</web-app>
5.如果Servlet类不重写service方法,那么应当重写哪两个方法?
答:doGet方法或doPost方法。

6. HttpServletResponse类的sendRedirect方法和RequestDispatcher类的forward方法有何不同?
答:
.HttpServletResponse提供的方法
void sendRedirect(String location) throws IOException 客户端跳转.即当前页面可用request对象获取用户提交参数,而目标页面都不可用request对象获取用户提交参数.
转发
.RequestDispatcher接口提供的方法
void forward(ServletRequest request,
ServletResponse response)
服务器跳转.即当前页面和目标页面都可用request对象获取用户提交参数.
7. Servlet对象怎样获得用户的会话对象?
答:
在doGet()或doPost()方法中使用获取当前会话对象.
HttpSession session=(true);
一个用户在不同的Servlet中获取的session对象是完全相同的,不同的用户的session对象互不相同。

第6章 MVC模式
1.在JSP中,MVC模式中的数据模型之角色由谁担当?
答:
由Java Bean或EJB充当.
2.在JSP中,MVC模式中的控制器之角色由谁担当?
答:
一个或多个Servlet对象充当.
3.在JSP中,MVC模式中的视图之角色由谁担当?
答:
由一个或多个JSP页面或HTML页面充当.
4.MVC的好处是什么?
答:
MVC模式的核心思想是有效地组合“视图”、“模型”和“控制器”。

在JSP技术中,视图是一个或多个JSP页面,其作用主要是向控制器提交必要的数据和为模型提供数据显示;模型是一个或多个Javabean对象,用于存储数据;控制器是一个或多个servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到Javabean中,然后servlet使用重定向方式请求视图中的某个JSP 页面更新显示。

5.MVC模式中用到的Javabean是由JSP页面还是servlet负责创建?
答:
是servlet负责
第7章在JSP中使用数据库
1.加载MySQL的JDBC数据库驱动程序代码是什么?
答:
try{ ("");
}
catch(Exception e){ }
2.加载SQL server的JDBC数据库驱动程序代码是什么?
答:
try{ ("");
}
catch(Exception e){ }
4.使用预处理语句的好处是什么?
答:
预处理语句PreparedStatement会将传入的SQL命令封装在PreparedStatement对象中,事先进行预编译处理等待使用。

当有单一的SQL语句多次执行时,用PreparedStatement类会比Statement类更有效率。

第8章 JSP中的文件操作
1. File对象能读写文件吗?
答:不能。

2.File对象怎样获取文件的长度?
答:调用public long length()方法。

3.准备读取文件“”,下列哪些是正确创建输入流的代码?
{ FileInputStream in=new FileInputStream(“”);
}
catch(IOException e){}
B. try{ InputStream in=new InputStream(“”);
}
catch(IOException e){}
C. try{ FileReader in=new FileInputStream(new File(“”));
}
catch(IOException e){}
D. try{ FileReader in=new FileReader (new File(“”));
}
catch(IOException e){}
答:A和D。

4.RandomAccessFile类创建的流在读写文件时有什么特点?
答:RandomAccessFile类既不是输入流类InputStream类的子类,也不是输出流类Outputstream类的子类。

想对一个文件进行读写操作时,可以创建一个指向该文件的RandomAccessFile流,这样我们既可以从这个流中读取这个文件的数据,也可以通过这个流给这个文件写入数据。

相关文档
最新文档