JavaWeb编程技术(沈泽刚版)教材习题参考答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public void service(ServletRequest request, ServletResponse response)
throws ServletExceBiblioteka Baidution, IOException
public void destroy()
public ServletConfig getServletConfig()
9.答:forward()方法转发请求是服务器端控制权的转向,客户端地址栏中不显示转发后的资源地址。sendRedirect()方法是服务器向浏览器发送302状态码,它使浏览器连接到新的位置,浏览器地址栏可看到地址的变化。使用重定向,资源不能位于WEB-INF目录中。
10.答:可先通过请求对象的getParameterNames()方法得到Enumeration对象,然后在其上得到每个请求参数名,再通过getParameter()得到请求参数值。
6.答:开发Servlet的一般步骤包括:(1)编写Servlet源程序;(2)编译;(3)将Servlet部署到Servlet容器中;(4)访问执行Servlet。
7.答:<tomcat-install>\lib\servlet-api.jar文件。
8.答:部署描述文件名是web.xml,它是XML文件,应该存放在Web应用程序的\WEB-INF目录中。
7.答:GET请求主要用来从服务器检索资源,POST请求主要用来向服务器发送数据。它们的详细比较请参阅教材的表2.8。
8.答:在ServletRequet接口中定义了setAttribute()、getAttribute()、getAttributeNames()和removeAttribute()方法来处理请求作用域的属性。
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
synchronized(this){
visits = visits +1;
out.println("<html><body>");
public String getServletInfo()
2.答:Servlet是在容器中运行的组件,有一个从创建到销毁的过程,其中包括加载和实例化、初始化、提供服务以及销毁几个阶段。其中生命周期方法有init()、service()和destroy()等3个。
3.答:发生下列事件,浏览器向服务器发出请求。
6.答:D7.答:A, B8.答:A, D
9.答:C10.答:A,C11.答:C
12.答:C, D13.答:B,C14.答:C
15.答:B16.答:A17.答:C
18.答:A,B,D,F
19.答:具有很大的影响。该应用程序将不能维护用户的状态。Servlet容器将为每个客户的每次请求都创建一个新的会话。修改这个问题的唯一方法是修改Servlet代码加入URL重写功能。
2.答:web.xml bankapp\WEB-INF
3.答:D4.答:A5.答:D
6.答:F7.答:E8.答:D
9.答:getServletConfig().getServletContext()或getServletContext()
10.答:B11.答:B12.答:D
13.答:因为Applet只能运行在客户端,所以可以将它放在Web应用程序的文档根目录的任何位置,但不能将其放在WEB-INF目录或其子目录中。
out.println("欢迎您!<br>"+"该Servlet已被访问" + visits +"次。");
out.println("</body></html>");
}
}
修改后的Servlet如下:
package com.demo;
import javax.servlet.*;
import javax.servlet.http.*;
FileInputStream fis = new FileInputStream(dbPath);
DataInputStream dis = new DataInputStream(fis);
visits = dis.readInt();
dis.close();
}catch(Exception e){
privateIntegervisits = 0;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException {
response.setContentType("text/html;charset=gb2312");
import java.io.*;
public class HelloCounterServlet extends HttpServlet{
private Integer visits = 0;
private String dbPath = null;
public void init(){
try{
dbPath = getServletContext().getRealPath("/WEB-INF/counter.db");
PrintWriter out = response.getWriter();
visits = visits +1;
try{
Thread.sleep(2000);
}catch(InterruptedException e){
log("Exception during sleeping.");
}
out.println("<html><body>");
(1)用户点击了HTML页面中的超链接;
(2)用户在HTML页面中填写一个表单并点击提交按钮;
(3)用户在浏览器的地址栏中输入URL并按回车键。
4.答:查询串
5.答:HTTP请求结构由请求行、请求头、空行和请求数据组成。请求行由方法名、请求资源的URI和使用的HTTP版本3部分组成。
6.答:HTTP响应结构由状态行、响应头和响应数据3部分组成。状态行由HTTP版本、状态码和简短描述3部分组成。
4.5 第5章习题解析
1.答:包含JSP指令、JSP小脚本和JSP表达式。
2.答:合法的JSP表达式:
<%= 500 %>
<%= anInt*3.5/100-500 %>
<%= aBool %>
<%= false %>
<%= !false %>
<%= getChar() %>
<%= Math.random() %>
1.答:使用请求对象(即HttpServletRequest接口)的getSession()方法。
2.答:如果客户在指定时间内没有访问服务器,则该会话超时。对超时的会话对象,服务器使其失效。通过会话对象的setMaxInactiveInterval()方法设置会话最大超时时间。
web.xml文件使用<session-config>元素的子元素<session-timeout>设置最大超时时间,如下所示。
3.答:有些客户浏览器可能不支持Cookie或用户阻止所有的Cookie,此时不能用Cookie实现会话。
4.答:使用响应对象(即HttpServletResponse接口)的encodeURL()方法或encodeRedirectURL()方法。
5.答:不能。因为许多用户是通过代理服务器访问Internet的,此时服务器得到的是代理服务器的IP地址而不是实际用户的IP地址,因此这些用户的IP地址不唯一。
11.答:A12.答:B13.答:E
14.答:
action="courseServlet.do"
HttpServlet
com.demo.CourseServlet
courseServlet
15.答:①E②D③C④B⑤A
4.3 第3章习题解析
1.答:Web应用程序是运行在应用服务器之中的。应用服务器为Web应用程序提供一种简单的和可管理的对系统资源的访问机制。
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(visits);
dos.close();
}catch(Exception e){
log("Error storing persistent counter", e);
}
}
}
4.4 第4章习题解析
9.答:当服务器找不到用户请求的资源时将发生404错误。
10.答:JSP页面是嵌入了Java脚本元素的HTML页面。
11.答:Servlet主要用来实现业务逻辑和控制逻辑,JSP页面主要用来实现表示逻辑。
4.2 第2章习题解析
1.答:Servlet接口定义了下面5个方法:
public void init(ServletConfig config)
log("Error loading persistent counter", e);
}
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException {
schema:schema-specific-part
URI是URL和URN的超集。
3.答:①是URL,①和②都是URI,③是URN
4.答:动态Web文档技术包括服务器端动态文档技术和客户端动态文档技术,前者包括CGI技术、服务器扩展技术和HTML页面中嵌入脚本技术。其中HTML页面中嵌入脚本技术包括ASP、PHP和JSP技术。
最流行的客户端动态文档技术是在HTML页面中嵌入JavaScript脚本代码。使用JavaScript可以设计交互式页面。与服务器端动态文档不同,JavaScript脚本是在客户端执行的。
5.答:Servlet是用Servlet API开发的Java程序,它运行在Servlet容器中。Servlet容器是运行Servlet的软件,主要用来扩展Web服务器的功能。
<init-param>
然后在Servlet中解析param-value串的值并解释字符串中列出的多个值。
15.答:
package com.demo;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloCounterServlet extends HttpServlet{
<session-config>
<session-timeout>20</session-timeout>
</session-config>
这里的最大超时时间是对整个应用程序的所有会话有效,<session-timeout>元素指定的时间单位是分钟。setMaxInactiveInterval()方法参数单位是秒。
Java Web编程习题解析
4.1第1章习题解析
1.略。
2.答:URL称为统一资源定位符,URL通常由4部分组成:协议名称、页面所在主机的DNS名、可选的端口号和资源的名称。URI称为统一资源标识符,是以特定语法标识一个资源的字符串。URI由模式和模式特有的部分组成,它们之间用冒号隔开,一般格式如下:
out.println("欢迎您!<br>" +"该Servlet已被访问" + visits +"次。");
out.println("</body></html>");
}
}
public void destroy(){
try{
FileOutputStream fos = new FileOutputStream(dbPath);
<%= aFloatObj %>
<%= aFloatObj.floatValue() %>
<%= aFloatObj.toString() %>
14.答:不能这样做,至少不能直接这样。部署描述文件不允许为一个名称指定多个参数,所以必须像下面这样:
<init-param>
<param-name>countries</param-name>
<param-value>Australia,Brazil,India,UK,US</param-value>
throws ServletExceBiblioteka Baidution, IOException
public void destroy()
public ServletConfig getServletConfig()
9.答:forward()方法转发请求是服务器端控制权的转向,客户端地址栏中不显示转发后的资源地址。sendRedirect()方法是服务器向浏览器发送302状态码,它使浏览器连接到新的位置,浏览器地址栏可看到地址的变化。使用重定向,资源不能位于WEB-INF目录中。
10.答:可先通过请求对象的getParameterNames()方法得到Enumeration对象,然后在其上得到每个请求参数名,再通过getParameter()得到请求参数值。
6.答:开发Servlet的一般步骤包括:(1)编写Servlet源程序;(2)编译;(3)将Servlet部署到Servlet容器中;(4)访问执行Servlet。
7.答:<tomcat-install>\lib\servlet-api.jar文件。
8.答:部署描述文件名是web.xml,它是XML文件,应该存放在Web应用程序的\WEB-INF目录中。
7.答:GET请求主要用来从服务器检索资源,POST请求主要用来向服务器发送数据。它们的详细比较请参阅教材的表2.8。
8.答:在ServletRequet接口中定义了setAttribute()、getAttribute()、getAttributeNames()和removeAttribute()方法来处理请求作用域的属性。
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
synchronized(this){
visits = visits +1;
out.println("<html><body>");
public String getServletInfo()
2.答:Servlet是在容器中运行的组件,有一个从创建到销毁的过程,其中包括加载和实例化、初始化、提供服务以及销毁几个阶段。其中生命周期方法有init()、service()和destroy()等3个。
3.答:发生下列事件,浏览器向服务器发出请求。
6.答:D7.答:A, B8.答:A, D
9.答:C10.答:A,C11.答:C
12.答:C, D13.答:B,C14.答:C
15.答:B16.答:A17.答:C
18.答:A,B,D,F
19.答:具有很大的影响。该应用程序将不能维护用户的状态。Servlet容器将为每个客户的每次请求都创建一个新的会话。修改这个问题的唯一方法是修改Servlet代码加入URL重写功能。
2.答:web.xml bankapp\WEB-INF
3.答:D4.答:A5.答:D
6.答:F7.答:E8.答:D
9.答:getServletConfig().getServletContext()或getServletContext()
10.答:B11.答:B12.答:D
13.答:因为Applet只能运行在客户端,所以可以将它放在Web应用程序的文档根目录的任何位置,但不能将其放在WEB-INF目录或其子目录中。
out.println("欢迎您!<br>"+"该Servlet已被访问" + visits +"次。");
out.println("</body></html>");
}
}
修改后的Servlet如下:
package com.demo;
import javax.servlet.*;
import javax.servlet.http.*;
FileInputStream fis = new FileInputStream(dbPath);
DataInputStream dis = new DataInputStream(fis);
visits = dis.readInt();
dis.close();
}catch(Exception e){
privateIntegervisits = 0;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException {
response.setContentType("text/html;charset=gb2312");
import java.io.*;
public class HelloCounterServlet extends HttpServlet{
private Integer visits = 0;
private String dbPath = null;
public void init(){
try{
dbPath = getServletContext().getRealPath("/WEB-INF/counter.db");
PrintWriter out = response.getWriter();
visits = visits +1;
try{
Thread.sleep(2000);
}catch(InterruptedException e){
log("Exception during sleeping.");
}
out.println("<html><body>");
(1)用户点击了HTML页面中的超链接;
(2)用户在HTML页面中填写一个表单并点击提交按钮;
(3)用户在浏览器的地址栏中输入URL并按回车键。
4.答:查询串
5.答:HTTP请求结构由请求行、请求头、空行和请求数据组成。请求行由方法名、请求资源的URI和使用的HTTP版本3部分组成。
6.答:HTTP响应结构由状态行、响应头和响应数据3部分组成。状态行由HTTP版本、状态码和简短描述3部分组成。
4.5 第5章习题解析
1.答:包含JSP指令、JSP小脚本和JSP表达式。
2.答:合法的JSP表达式:
<%= 500 %>
<%= anInt*3.5/100-500 %>
<%= aBool %>
<%= false %>
<%= !false %>
<%= getChar() %>
<%= Math.random() %>
1.答:使用请求对象(即HttpServletRequest接口)的getSession()方法。
2.答:如果客户在指定时间内没有访问服务器,则该会话超时。对超时的会话对象,服务器使其失效。通过会话对象的setMaxInactiveInterval()方法设置会话最大超时时间。
web.xml文件使用<session-config>元素的子元素<session-timeout>设置最大超时时间,如下所示。
3.答:有些客户浏览器可能不支持Cookie或用户阻止所有的Cookie,此时不能用Cookie实现会话。
4.答:使用响应对象(即HttpServletResponse接口)的encodeURL()方法或encodeRedirectURL()方法。
5.答:不能。因为许多用户是通过代理服务器访问Internet的,此时服务器得到的是代理服务器的IP地址而不是实际用户的IP地址,因此这些用户的IP地址不唯一。
11.答:A12.答:B13.答:E
14.答:
action="courseServlet.do"
HttpServlet
com.demo.CourseServlet
courseServlet
15.答:①E②D③C④B⑤A
4.3 第3章习题解析
1.答:Web应用程序是运行在应用服务器之中的。应用服务器为Web应用程序提供一种简单的和可管理的对系统资源的访问机制。
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(visits);
dos.close();
}catch(Exception e){
log("Error storing persistent counter", e);
}
}
}
4.4 第4章习题解析
9.答:当服务器找不到用户请求的资源时将发生404错误。
10.答:JSP页面是嵌入了Java脚本元素的HTML页面。
11.答:Servlet主要用来实现业务逻辑和控制逻辑,JSP页面主要用来实现表示逻辑。
4.2 第2章习题解析
1.答:Servlet接口定义了下面5个方法:
public void init(ServletConfig config)
log("Error loading persistent counter", e);
}
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException {
schema:schema-specific-part
URI是URL和URN的超集。
3.答:①是URL,①和②都是URI,③是URN
4.答:动态Web文档技术包括服务器端动态文档技术和客户端动态文档技术,前者包括CGI技术、服务器扩展技术和HTML页面中嵌入脚本技术。其中HTML页面中嵌入脚本技术包括ASP、PHP和JSP技术。
最流行的客户端动态文档技术是在HTML页面中嵌入JavaScript脚本代码。使用JavaScript可以设计交互式页面。与服务器端动态文档不同,JavaScript脚本是在客户端执行的。
5.答:Servlet是用Servlet API开发的Java程序,它运行在Servlet容器中。Servlet容器是运行Servlet的软件,主要用来扩展Web服务器的功能。
<init-param>
然后在Servlet中解析param-value串的值并解释字符串中列出的多个值。
15.答:
package com.demo;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloCounterServlet extends HttpServlet{
<session-config>
<session-timeout>20</session-timeout>
</session-config>
这里的最大超时时间是对整个应用程序的所有会话有效,<session-timeout>元素指定的时间单位是分钟。setMaxInactiveInterval()方法参数单位是秒。
Java Web编程习题解析
4.1第1章习题解析
1.略。
2.答:URL称为统一资源定位符,URL通常由4部分组成:协议名称、页面所在主机的DNS名、可选的端口号和资源的名称。URI称为统一资源标识符,是以特定语法标识一个资源的字符串。URI由模式和模式特有的部分组成,它们之间用冒号隔开,一般格式如下:
out.println("欢迎您!<br>" +"该Servlet已被访问" + visits +"次。");
out.println("</body></html>");
}
}
public void destroy(){
try{
FileOutputStream fos = new FileOutputStream(dbPath);
<%= aFloatObj %>
<%= aFloatObj.floatValue() %>
<%= aFloatObj.toString() %>
14.答:不能这样做,至少不能直接这样。部署描述文件不允许为一个名称指定多个参数,所以必须像下面这样:
<init-param>
<param-name>countries</param-name>
<param-value>Australia,Brazil,India,UK,US</param-value>