JavaWeb编程技术(沈泽刚版)教材习题参考答案(2)

2021-09-24 15:17

import javax.servlet.*;

import javax.servlet.http.*;

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");

FileInputStream fis = new FileInputStream(dbPath);

DataInputStream dis = new DataInputStream(fis);

visits = dis.readInt();

dis.close();

}catch(Exception e){

log("Error loading persistent counter", e);

}

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws IOException,ServletException {

response.setContentType("text/html;charset=gb2312");

PrintWriter out = response.getWriter();

synchronized(this){

visits = visits +1;

out.println("<html><body>");

out.println("欢迎您!<br>" +"该Servlet已被访问 " + visits +" 次。"); out.println("</body></html>");

}

}

public void destroy(){

try{

FileOutputStream fos = new FileOutputStream(dbPath);

DataOutputStream dos = new DataOutputStream(fos);

dos.writeInt(visits);

dos.close();

}catch(Exception e){

log("Error storing persistent counter", e);

}

}

}

4.4 第4章习题解析

沈泽刚 秦玉平主编清华大学出版社

元素的子元素<session-timeout>设置最大超时时间,这里的最大超时时间是对整个应用程序的所有会话有效,<session-timeout>元素指定的时间单位是分钟。setMaxInactiveInterval()方法参数单位是秒。

3. 答:有些客户浏览器可能不支持Cookie或用户阻止所有的Cookie,此时不能用Cookie实现会话。

4. 答:使用响应对象(即HttpServletResponse接口)的encodeURL()方法或

encodeRedirectURL()方法。

5. 答:不能。因为许多用户是通过代理服务器访问Internet的,此时服务器得到的是代理服务器的IP地址而不是实际用户的IP地址,因此这些用户的IP地址不唯一。

6. 答:D 7. 答:A, B 8. 答:A, D

9. 答:C 10. 答:A,C 11. 答:C

12. 答:C, D 13. 答:B,C 14. 答:C

15. 答:B 16. 答:A 17. 答:C

18. 答:A,B,D,F

19. 答:具有很大的影响。该应用程序将不能维护用户的状态。Servlet容器将为每个客户的每次请求都创建一个新的会话。修改这个问题的唯一方法是修改Servlet代码加入URL重写功能。

4.5 第5章习题解析

1. 答:包含JSP指令、JSP小脚本和JSP表达式。

2. 答:合法的JSP表达式:

<%= 500 %>

<%= anInt*3.5/100-500 %>

<%= aBool %>

<%= false %>

<%= !false %>

<%= getChar() %>

<%= Math.random() %>

<%= aFloatObj %>

<%= aFloatObj.floatValue() %>

<%= aFloatObj.toString() %>

不合法的JSP表达式:

<%= aVector %>

<%= aBool; %>

<%= int i = 20 %>

<%= sBuff.setLength(12); %>

沈泽刚 秦玉平主编清华大学出版社

3. 答:C

4. 答:正确声明应为:

<%! int i = 5; %>

<% !int getI() { return i; } %>

5. 答:B是合法的。解析:JSP表达式中百分号和等号之间不能有空格。

6. 答:D。解析:A中import的属性值中应该有等号。B的import属性值应该在一个字符串中指定。C,属性之间不允许有逗号。E,bgcolor不是合法的属性名。F,true不是buffer属性合法值。G,指令名、属性名和值都是大小写敏感的,Page应为page。

7. 答:B,C

A.非法:等号表明它是表达式,但表达式不能以分号结束,产生的Servlet代码将发生语法错误。

out.print(myObj.m1(););

B.合法:<%=x=y%>将被转换成:

out.print(x=y); // y的值5赋给x并将其打印输出

C. 合法:这是合法的小脚本,因为在方法调用语句的后面有分号。即使该方法返回一个值,它也是合法的,因为返回的值将被忽略。

8. 答:不能在小脚本中定义方法。上面代码一旦被转换成Servlet,_jspService()方法就会像下面这样:

public void _jspService(...){

// 其他代码

int x = 0;

int incr() { return ++x; }

out.write("The value of x is ");

out.print(incr());

}

由于incr()方法定义在_jspService()方法内,所以代码不能编译。

9. 答:The value of i is 3

注意:如果代码写成下面形式:

<% int i; %>

<% for(i = 0; i<3; i++)%>The value of i is <%=i%>

输出结果将为:

The value of i is The value of i is The value of i is 3

10. 答:不能在japInit()方法中使用application对象。

沈泽刚 秦玉平主编清华大学出版社

out.print( ++count );

out.write("</body></html>\r\n");

16. 答:

Page改为page

<%! int count = 0 %> // 声明缺少分号

<% count++; %> // 去掉分号

17. 答:D

18. 答:

<% Float one = new Float(88.88) %> 小脚本

<%! int y = 3; %> 声明

<%@ page import="java.util.*" %> 指令

<jsp:include page="foo.jsp" /> 动作

JavaWeb编程技术(沈泽刚版)教材习题参考答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于交际的高中英语词汇有效教学模式初探

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: