文档库 最新最全的文档下载
当前位置:文档库 › Java Web开发——在线人数统计程序

Java Web开发——在线人数统计程序

Java Web开发——在线人数统计程序
Java Web开发——在线人数统计程序

Java Web开发——在线人数统计程序

作者:孙鑫来源:程序员之家发布者:admin

时间:2009-07-24 10:07:00 点击:3904

下面,我们利用HttpSessionBindingListener接口Java语言,编写一个在线人数统计的程序。当一个用户登录后,显示欢迎信息,同时显示出当前在线的总人数和用户名单。当一个用户退出登录或者Session超时值发生时,从在线用户名单中删除这个用户,同时将在线的总人数减1。这个功能的完成,主要是利用一个实现了HttpSessionBindingListener 接口的对象,当这个对象被绑定到Session中或者从Session中被删除时,更新当前在线的用户名单。实例的开发主要有以下步骤。

Step1:配置Web应用程序的运行目录

在%CATALINA_HOME%\conf\Catalina\localhost\目录下新建ch15.xml文件,输入如例15-4所示的内容。

例15-4 ch15.xml

Step2:编写login.html

将编写好的login.html文件放到F:\JSPLesson\ch15\online目录下。完整的代码如例15-5所示。

例15-5 login.html

登录页面

请输入用户名:
请输入密码:

Step3:编写UserList.java,User.java,OnlineUserServlet.java和LogoutServlet.java

为了和本章其他例子中的类相区别,本例中的类定义在

org.sunxin.ch15.online包中。编写UserList.java,User.java,OnlineUserServlet.java和LogoutServlet.java源文件,将编写好的源文件放到F:\JSPLesson\ch15\src\online目录下。

UserList.java的完整代码如例15-6所示。

例15-6 UserList.java

1.package org.sunxin.ch15.online;

2.

3.import java.util.Vector;

4.import java.util.Enumeration;

5.

6.public class UserList

7.{

8.private static final UserList userList=new UserList(); 9. private Vector v;

10.

11.private UserList()

12.{

13. v=new Vector();

14.}

15.

16. public static UserList getInstance()

17. {

18.return userList;

19. }

20.

21. public void addUser(String name)

22. {

23. if(name!=null)

24. v.addElement(name);

25. }

26.

27. public void removeUser(String name)

28. {

29. if(name!=null)

30. v.remove(name);

31. }

32.

33. public Enumeration getUserList()

34. {

35. return v.elements();

36. }

37.

38. public int getUserCount()

39. {

40. return v.size();

41. }

42.}

在UserList这个类的设计上,我们应用了单例(Singleton)设计模式,关于设计模式的知识,读者可以参看相关的书籍。UserList是一个单例类,所谓单例类,是指一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例类的一个最重要的特点是类的构造方法是私有的,从而避免了外部利用该类的构造方法直接创建多个实例。在代码的第8行,定义一个静态的常量userList,它表示了UserList类的一个对象。在UserList类加载的时候,这个对象就产生了。第11~14行,声明UserList类的构造方法为private,这是为了避免在外部使用UserList类的构造方法创建其对象。要注意的是,如果在类中不写构造方法,那么Java编译器就会为这个类提供一个默认的不带参数的公开的构造方法,这样,在外部就可以通过类的构造方法创建对象了,那么UserList也就不再是一个单例类了。既然UserList类的构造方法是私有的,那么在外部就不能用new去构造对象,于是在代码的第16~19行,定义了一个静态的方法getInstance(),在这个方法中,返回在类加载时创建的UserList类的对象。因为getInstance()方法本身是静态的,所以可以直接通过类名来调用。

那么为什么要将UserList设计成单例类呢?这是因为UserList类的对象是用于存储和获取在线用户的列表,而这个用户列表对于所有的页面来说都应该是同一个,所以将UserList类设计成单例类,这样,所有的类访问的就是同一个UserList对象了。

代码的第9行,定义了一个私有的Vector类型的变量,在UserList类的构造方法中,对Vector类型的变量v进行了初始化,用于存放String类型的对象。注意,在这个地方没有使用ArrayList,是考虑到UserList对象可能会被多个线程同时访问,因为ArrayList不是同步的,而Vector是同步的,所以采用Vector来保存用户列表。

User.java的完整代码如例15-7所示。

例15-7 User.java

1. package org.sunxin.ch15.online;

2.

3. import javax.servlet.http.HttpSessionBindingListener;

4. import javax.servlet.http.HttpSessionBindingEvent;

5.

6.public class User implements HttpSessionBindingListener 7. {

8. private String name;

9.private UserList ul=UserList.getInstance();

10.

11. public User()

12. {

13. }

14. public User(String name)

15. {

16. https://www.wendangku.net/doc/a518031783.html,=name;

17. }

18. public void setName(String name)

19. {

20. https://www.wendangku.net/doc/a518031783.html,=name;

21. }

22. public String getName()

23. {

24. return name;

25. }

26.public void valueBound(HttpSessionBindingEvent event) 27. {

28.ul.addUser(name);

29. }

30. public void valueUnbound(HttpSessionBindingEvent event) 31. {

32.ul.removeUser(name);

33. }

34.}

User类实现了HttpSessionBindingListener接口,表示登录的用户。代码第9行,通过UserList类的静态方法getInstance()得到UserList类的对象,第26~29行,当User对象加入到Session中时,Servlet容器将调用valueBound()方法,我们将用户的名字保存到用户列表中。第30~33行,当User对象从Session中被删除时,Servlet容器将调用valueUnbound()方法,我们从用户列表中删除该用户。

OnlineUserServlet.java的完整代码如例15-8所示。

例15-8 OnlineUserServlet.java

2.

3.import javax.servlet.*;

4.import java.io.*;

5.import javax.servlet.http.*;

6.import java.util.Enumeration;

7.

8.public class OnlineUserServlet extends HttpServlet

9.{

10. public void doGet(HttpServletRequest req, HttpServletResponse resp)

11. throws ServletException,IOException

12. {

13. req.setCharacterEncoding("gb2312");

14. String name=req.getParameter("user");

15. String pwd=req.getParameter("password");

16.

17. if(null==name || null==pwd || name.equals("") ||

pwd.equals(""))

18. {

19. resp.sendRedirect("login.html");

20. }

21. else

22. {

23.HttpSession session=req.getSession();

24.User user=(User)session.getAttribute("user"); 25.if(null==user || !name.equals(user.getName())) 26.{

27. user=new User(name);

28. session.setAttribute("user",user);

29.}

30.

31. resp.setContentType("text/html;charset=gb2312"); 32. PrintWriter out=resp.getWriter();

33.

34. out.println("欢迎用户"+name+"登录"); 35.UserList ul=UserList.getInstance();

36. out.println("
当前在线的用户列表:
"); 37.Enumeration enums=ul.getUserList(); 38. int i=0;

39. while(enums.hasMoreElements())

40. {

41. out.println(enums.nextElement());

42.out.println("    "); 43.if(++i==10)

44.{

45. out.println("
");

46. }

47. }

48.out.println("
当前在线的用户数:"+i);

49.out.println("

退出登录"); 50.out.close();

51. }

52. }

53.

54. public void doPost(HttpServletRequest req, HttpServletResponse resp)

55. throws ServletException,IOException

56. {

57. doGet(req,resp);

58. }

59.}

OnlineUser类用于向用户显示欢迎信息、当前在线用户列表和在线用户数。代码的第24~29行,首先从Session中获取名为user的属性对象,通过判断它是否为空来判断在此次会话中用户是否已经登录。如果user对象不为null,那么接着判断在同一个会话中,用户是否更换了一个用户名登录。如果user对象为空或者当前登录的用户名和先前登录的用户名不同,则以用户的当前登录名创建一个User对象,将这个对象绑定到Session中,这个时候,Servlet容器就会调用User对象的valueBound()方法,将这个用户的名字保存在用户列表中。第35行,得到UserList类的对象。第37行,得到用户列表的枚举对象。第39~47行,循环取出在线用户的名字并输出,一旦输出超过10个用户名,就输出一个换行(
)。第48行,输出当前在线的用户数。第49行,输出“退出登录”的链接。

LogoutServlet.java的完整代码如例15-9所示。

例15-9 LogoutServlet.java

3. import javax.servlet.*;

4. import java.io.*;

5. import javax.servlet.http.*;

6.

7. public class LogoutServlet extends HttpServlet

8. {

9. public void doGet(HttpServletRequest req, HttpServletResponse resp)

10. throws ServletException,IOException

11. {

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

13.

14. HttpSession session=req.getSession();

15. User user=(User)session.getAttribute("user");

16.session.invalidate();

17.

18. PrintWriter out=resp.getWriter();

19. out.println("退出登录</p><p>");

20. out.println(user.getName()+",你已退出登录
");

21. out.println("重新登录");

22. out.println("");

23. out.close();

24. }

25.}

LogoutServlet类用于退出登录。代码第16行,调用HttpSession对象的invalidate()方法,使Session失效,从而删除绑定到这个Session中的User对象,Servlet容器就会调用这个User对象的valueUnbound()方法,从用户列表中删除该用户。

Step4:编译上述四个Java源文件

打开命令提示符,进入到源文件所在的目录F:\JSPLesson\ch15\src\online下,然后执行javac -d ..\..WEB-INF\classes *.java

在WEB-INF\classes目录下生成4个源文件对应的包和类文件。

Step5:部署Servlet

编辑WEB-INF目录下的web.xml文件,添加对本例中的Servlet的配置,内容如例15-10所示。

例15-10 web.xml

OnlineUserServlet

org.sunxin.ch15.online.OnlineUserServlet

OnlineUserServlet

/online/online

logout

org.sunxin.ch15.online.LogoutServlet

logout

/online/logout

Step6:运行在线人数统计程序

启动Tomcat服务器,打开IE浏览器,首先在地址栏中输入

http://localhost:8080/ch15/online/login.html

出现登录页面后,输入用户名和密码,将看到如图15-1所示的页面。

读者可以再打开一个浏览器,输入

http://localhost:8080/ch15/online/login.html,然后登录,将看到如图15-2所示的页面。

图15-1 OnlineUserServlet显示一个用户在线图15-2 OnlineUserServlet显示有两个用户在线

读者可以退出其中一个用户的登录,然后刷新另外一个窗口中的页面,可以看到显示的在线用户数为1。读者可以多打开几个浏览器,进行测试。

在线人数统计程序存在的问题:在第5.2.4节“Session和Cookie的深入研究”中介绍过,如果用户没有退出登录而直接关闭了浏览器,那么在服务器端的Session中,这个用户仍然是存在的,直到Session的超时值发生。所以在线人数统计只能做到在一个时间段内统计出大致的在线人数,而不能统计出精确的人数。为了提高统计的精确性,可以在客户端设置脚本,当浏览器关闭时,自动向服务器发送一个请求,服务器收到这个请求后,使Session失效。不过,这也不能做到100%的精确,因为还存在着客户端的浏览器异常终止,或者客户机器崩溃的可能。

转载请注明出处:程序员之家https://www.wendangku.net/doc/a518031783.html,

JAVAWEB期末复习题

第1章WEB开发环境 (1)下列关于WEB开发说法正确的是。 ABCD A)Web是图形化的和易于导航的 B)Web与平台无关 C)Web是分布式的 D)Web 是动态的 (2)下列关于Tomcat说法正确的是。 ABCD A) Tomcat是一种编程语言 B) Tomcat是一种开发工具 C) Tomcat是一种编程思想 D) Tomcat是一种开编程规范 (3)下列关于Tomcat个目录说法错误的是。 E E) work目录——包含web项目示例,当发布web应用时,默认情况下把web 文件夹放于此目录下 (4)下列关于HTTP协议说法正确的是。 ABCDE A) HTTP是一种请求/响应式的协议 B) HTTP请求消息中Accept表示浏览器可接受的MIME类型 C) HTTP请求消息中Accept-Encoding表示浏览器能够进行解码的数据编码方式 D) HTTP请求消息中Accept-Language表示浏览器所希望的语言种类 E) HTTP请求消息中Host表示初始URL中的主机和端口。 (5)下列对于JSP说法中正确的是。ABCDE A) JSP是Sun公司推出的新一代站点开发语言 B) JSP完全解决了目前ASP、PHP的一个通病——脚本级执行 C) JSP将内容的生成和显示进行分离 D) JSP强调可重用的组件 E) JSP采用标识简化页面开发 第2章JSP编译指令 (1)下列关于JSP编译指令说法错误的是。 C C)编译指令向客户端产生任何输出 (2)下面关于page指令说法中错误的是。 B B)一个JSP页面只能包含一个page指令 (3)下面关于page指令的属性说法错误的是。 DE D)session属性制定此页面是否参与HTTP会话。默认值false E)errorpage属性指示当前页面是否为其他页的errorpage目标 (4)下列说法中正确的是。 ABDE A)include指令通知容器将当前的JSP页面中内嵌的、在指定位置上的资源内容包含 B)include指令中file属性指定要包含的文件名 D)Taglib指令允许页面使用者自定义标签 E)你必须在使用自定义标签之前使用<% @ taglib %>指令 (5)下列说法中错误的是。 B B)<%-- This comment will not be visible in the page source --%>会在客户端的HTML源代码中产生和上面一样的数据

JavaWeb程序设计 习题参考答案(第7章)

第七章监听和过滤 1、调用ServletContext的getAttribute()方法时,会触发哪个方法调用?(假设有关联的 监听器) A、ServletContextAttributerListener的attributeAdded()方法 B、ServletContextAttributeListener的attributeRemove()方法 C、ServletContextAttributerListener的attributeReplace() D、不会调用任何监听方法 参考答案:D 2、调用HttpSession的removeAttribute()方法时,会触发哪个方法调用?(假设有关联的监听器) A、HttpSessionListener的attributeRemove()方法 B、HttpSessionActivateionListener的attributeRemove()方法 C、HttpSessionBindingListener的attributeRemove() D、HttpSessionAttributerListener的attributeRemove 参考答案:D 3、调用HttpServletRequest的setAttribute()方法时,会触发哪个方法调用?(假设有关联的监听器) A、ServletRequestAttributeListener的attributeAdded()方法 B、ServletRequestAttributeListene的attributeReplaced()方法 C、ServletRequestAttributeListene的attributeRemove()方法 D、ServletRequestAttributeListene的attributeSetted()方法 参考答案:A 4、在web.xml中使用什么元素配置监听器 A、 B、 C、 D、 参考答案:B 5、下述代码定义了两个过滤器

Java基础入门教程(适合所有初学者)

第1章 Java语言概述与面向对象思想 1 1.1 Java语言的发展 1 1.1.1 Java语言的产生 1 1.1.2 Java语言的发展 1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念和特征 4 1.4.1 主要概念 5 1.4.2 主要特征 5 *1.5 Java与C++的差异 5 1.6本章小结5 习题 5 第2章 Java语言开发环境 6 2.1 JDK 6 2.1.1 JDK的简介6 2.1.2 JDK的构成6 2.1.3 JDK的使用6 2.2 IDE 8 2.2.1 IDE简介8 2.2.2 JBuilder 9 2.2.3 Eclipse 9 2.2.4 相关资源9 2.3 Project管理9 2.3.1 Project的含义9 2.3.2 可行的Project组织模式9 2.3.3 主要开发工具的Project目录10 2.4 本章小结10 习题10 第1章 Java语言概述与面向对象思想 1.1 Java语言的发展 1.1.1 Java语言的产生以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java 技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作 上世纪90年代初期,Sun公司在研究一种适用于未来的智能设备的编程语言,该语言要具有一些新的特性,以避免C++的一些不足。 该语言起初命名为Oak,来源于语言作者Gosling办公室窗外的一棵橡树(Oak)。后来在注册时候遇到了冲突,于是就从手中的热咖啡联想到了印度尼西亚一个盛产咖啡的岛屿,中文名叫爪哇,Java语言得名于此。 随着Internet的迅速发展,Web应用日益广泛,Java语言也得到了迅速发展。1994年,Gosling

JAVA WEB程序设计第4章

《Java Web程序设计》课程第4章章节检测 一、选择题:(每题4分,共40分) 1、假设myObj是一个对象的引用,ml()是该对象上一个合法的方法。下面的JSP结构哪个是合法的?(B) A.<%myObj.ml()%> B.<%=myObj.ml()%> C.<%myObj.ml();%> D.<%=myObj.ml();%> 2、说明下面代码哪些是合法的JSP结构?(BC) A.<%=myObj.ml();%> B.<%int x=4,y=5;%> C.<%!Int getI(int i){return i;}%> D.<%myObj.ml();%> 3、下面哪个page指令是合法的?(A) A.<%@page pageEncoding="utf-8"%> B.<%!page pageEncoding="utf-8"%> C.<%page pageEncoding="utf-8"%> D.<%@Page pageEncoding="utf-8"%> 4、下面哪个page指令是合法的?(B) A.<%@page import="java.util.*java.text.*"%> B.<%@page import="java.util.*,java.text.*"%> C.<%@page import="java.util.*","java.text.*"%> D.<%@page buffer="true"%> 5、下面哪些是合法的JSP隐含变量?(CD) A.stream B.context C.exception D.application 6、下面关于JSP生命周期方法,哪个是正确的?(A) A.只有jspInit()可以被覆盖 B.只有jspDestroy()可以被覆盖 C.jspInit()和jspDestroy()都可以被覆盖 D.jspInit()、_jspService()和jspDestroy()都可以被覆盖 7、下面哪个JSP标签可以再请求时把另一个JSP页面的结果包含到当前页面中?(B) A.<%@page import%> B. C. D.<%@include%> 8、在一个JSP页面中要把请求转发到view.jsp页面,下面哪个是正确的?(B) A. B. C. D. 9、下面哪个说法是正确的?(A) A.<%@include file="right.jsp?name=hacker"%>语法结构是正确的 B.<%@include file="<%=str%>"%>语句是合法的 C.<%@include file="right.jsp"%>属于动态包含 D.以上都不正确 10、对于,下面哪个说法是正确的?(A) https://www.wendangku.net/doc/a518031783.html,值必须与中的id值一致 https://www.wendangku.net/doc/a518031783.html,值必须与中的name值一致 C.property值必须与类UserInfo中的属性username一致 D.property值不必与类UserInfo中的属性username一致

Javaweb程序开发入门

《JavaWeb程序设计任务教程》试卷 得分 单选题(每题2分,共计30分) 1.MVC中的M是指 A、Model B、Method C、Mapping D、mac地址 2.XML是一种类似于HTML的标记语言,它的全称是 A、超文本标记语言 B、可扩展标记语言 C、动态标记语言 D、动态超文本标记语言3.下面关于HTTP请求头消息个数的说法中,正确的是 A、一个HTTP请求消息中只能允许有一个请求头消息 B、一个HTTP请求消息中只能允许有两个请求头消息 C、一个HTTP请求消息中只能允许有三个请求头消息 D、一个HTTP请求消息中允许有若干请求头消息 4.下面关于实现重定向sendRedirect()方法的描述中,正确的是 A、生成300响应码和Refresh响应头 B、生成302响应码和Location响应头 C、生成302响应码和Refresh响应头 D、生成300响应码和Location响应头 5.阅读下面XML代码片段: 1980-03-27 下面选项中能与之匹配的Schema是 A、 B、 C、 总分题型单选题多选题填空题简答题题分 得分

D、 6.ServletRequest接口中的getRequestURL()方法返回的结果类型是 A、int B、String C、StringBuffer D、Object 7.下面关于include指令的语法格式中,正确的是 A、<%@ include path="relativeURL"%> B、<%@ include file="relativeURL"%> C、<%# include path="relativeURL"%> D、<%# include file="relativeURL"%> 8.下面关于C/S架构缺点的描述中,错误的是 A、C/S架构的客户端程序安装在客户机上,造成安装工作量非常巨大 B、C/S架构的客户端程序,不利于软件的升级与维护 C、C/S架构的客户端程序,同时访问数据库服务器的数量是有限制的 D、以上说法都不正确 9.下列选项中,能够正确创建Cookie对象的语句是 A、Cookie c = new Cookie(“name”,”itcast”); B、Cookie c = request.getCookie(“name”); C、Cookie c = response.getCookie(“name”); D、Cookie c = session.getCookie(“name”); 10.下列关于XML文档的描述中,正确的是 A、XML文件只有格式良好,才能被浏览器解析 B、XML文档必须符合DTD或Schema约束,才能被浏览器解析 C、只有XML标准中定义的标记才能被浏览器解析 D、只要XML文档的扩展名为xml就可以被浏览器解析 11.下列选项中,哪个是JSP配置注册和映射虚拟路径的文件 A、service.xml B、context.xml C、server.xml

JAVA WEB程序设计报告

南京晓庄学院《JAVA WEB程序设计》 课程报告 题目: 《学生成绩管理系统》 姓名: 戴佳伟 学号: 班级: 14软件工程3班 完成时间 成绩: 数学与信息技术学院 2016年5月

目录 1.系统需求分析 (3) 2.相关技术与原理介绍 (4) 3.系统分析与设计 (5) 系统功能分析 (5) 系统结构分析 (7) 数据库设计 (9) 4.系统实现 (11) 教师信息管理模块实现 (11) 成绩信息管理模块实现 (13) 5.总结与体会 (16) 工作总结 (16) 改进设想 (1)

1.系统需求分析 本系统模拟学校对日常教务信息管理过程,开发学生信息管理系统。该系统可实现对教务资源中的学生信息、教师信息、课表信息、课程信息四个模块进行查询及处理操作。系统面向的用户分为:管理员、教师、学生。根据访问角色的不同,在系统中应体现出对教务资源的访问的权限的不同,其中管理员权限最大,拥有增、删、改、查的权限,而教师和学生角色仅拥有查及限制性的增、改权限,因此在这里需要对系统进行需求分析。 系统功能模块分为六大模块,它们包括: 1.登录模块 该模块实现用户登录、密码修改功能。用户可选择管理员、教师或学生身份进行登录,并可修改登录密码。 2.学生信息管理 该模块实现学生信息查询、学生信息添加、学生信息修改、学生信息删除功能。 3.教师信息管理 该模块实现教师信息查询、教师信息添加、教师信息修改、教师信息删除。 4.课程信息管理 该模块实现课程信息查询、课程信息添加、课程信息修改、课程信息删除。 5.选课信息管理 该模块实现学生选课查询、学生选课添加、学生选课删除、学生选课修改。 6.成绩信息管理 该模块实现学生成绩查询、学生成绩修改、学生成绩录入、学生成绩删除。

JAVA WEB 基础考试题

一、填空题(每空2分,共30分) 1、在tomcat上发布javaweb应用时的默认目录是__webapps___目录。 2、javaweb应用的部署描述符是指web.xml__ 文件。 3、在tomcat中访问helloapp应用的login.html文件时,在浏览器地址栏应写的url为:__http://localhost:8080/helloapp/login.html___。 4、Servlet容器启动每一个web应用时,都会为它创建一个唯一的 ___ServletContext__对象,该对象和web应用有相同的生命周期。 5、请求转发源组件的响应结果___不会__发送到客户端,包含__会__发送到客户端。(填“会”或“不会”) 6、jsp中实现请求转发的标记为:_________。 7、在JSP中,request 内置对象代表请求消息,response 内置对象代表响应消息,___session_内置对象代表会话。 8、如果使用第四类jdbc驱动器连接数据库,jar文件的存放位置为“web应用/_WEB-INF /lib_______”。 9、Servlet容器为每一个HttpSession对象分配一个唯一标识符,叫做 ___SessionID___。 10、javaweb在mvc设计模式下,___javabean___是模型,___jsp是视图,__servlet__是控制器。 二、选择题(每题2分,共30分) 1、下面哪一个选项不是http响应的一部分?( c ) a) 响应头 b) 响应正文 c) 协议版本号 d) 状态行 2、http请求及响应的正文部分可以是任意格式的数据,要保证接收方能看得懂发送方发送的数据,http协议采用( d )协议来规范正文的数据格式? a) FTP b) TCP c) HTTP d) MIME 3、Servlet API 由哪两个包组成?(两个答案)(ac ) a) javax.servlet b) javax.servlet.jsp c) javax.servlet.http d) java.servlet 4、一个servlet的生命周期不包括(b )方法? a) init()方法 b) invalidate()方法 c) service()方法 d) destroy()方法 5、HttpServletRequest对象的( c )方法能够获取一个表单参数的值: a) getQuaryString() b) getPathInfo() c) getParameter()

java web 工作原理总结

总结 第一章java web 工作原理 1.1、web应用程序有web服务器,web客服端浏览器,HTTP协议以及静态HTML文件。 Web服务器的作用是接受客服端请求,然后向客服端返回些结果;浏览器的作用是允许用户请求服务器上的某个资源,并且向用户显示请求的结果; HTML是用于告诉浏览器怎么样向用户显示内容; HTTP是web上客服端和服务器之间通信所用的协议。 1.1.2 HTTP协议将来自于客服端的请求信息封装成HTTP请求; 封装的信息当中包括请求行、请求头、消息体、分隔请求头、消息体的一个空行。 请求行是一个ASCII文本行,由三个标记组成:请求的HTTP方法、请求的URL、HTTP版本;中间用空格分开例如: GET /lovobook/index.html HTTP/1.0 在HTTP1.1版本中请求方法有八种分别是下面: GET:用于向服务器检索资源在HTTP请求头 POST:用于向服务器发送资源,并要求指定的URI处理在消息体HEAD:于GET方法相同,服务器只返回状态行和头标,并不返回请求文档。 PUT:请求服务器保持请求数据作为指定的URI新内容;

DELETE:请求服务器删除URI中命名的资源; OPTIONS:请求关于服务器支持的请求方法信息; TRACE:请求web服务器反馈HTTP请求和其头标;CONNECT:已文档化但当前未实现的一个方法,预留做隧道处理;请求头: HTTP协议使用HTTP头来传递请求的元信息。HTTP头是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。 1.1.3 HTTP响应包括:状态行、响应头、消息体、分割消息头、响应头。状态行里面出现: 1XX:表示信息,请求收到,继续处理。 2XX:表示成功 3XX:表示重定向 4XX:表示客服端错误 5XX:表示服务器错误 1.2 Web服务器的缺陷是只能向用户提供静态网页内容。 1.3 服务器端网页编程就是web服务器创建动态服务器端内容的过程。 1.3.1 服务器端网页编程出现得最早的技术就是CGI,它的缺点就是每次请求一个CGI资源,将在服务器上创建一个新的进程,并且通过标准输

JavaWeb程序设计教程课后练习答案

第1章 Web应用开发简介 习题答案 1.Web在组成上包括______和______两部分。 答案: 服务器 客户端 2.谈谈对面向对象的认识。 答案: 面向对象将将要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙解决问题中的各个步骤中的行为。面向对象编程方式是建立在面向过程编程方式基础上,其最重要的改变在于面向对象编程中,程序将围绕被操作的对象来设计,而不是操作本身。面向对象编程方式以类作为构造程序的基本单位,具有封装、抽象、继承、多态性等特点。 3.介绍几种常用的框架技术。 答案: Java中常用的框架。 1.Struts Struts是Apache 基金会Jakarta 项目组的一个开源项目,是一个基于Sun J2EE平台的MVC框架,它将Servlet和JSP标签作为实现自身功能的一部分。 2.WebWork WebWork是由OpenSymphony组织开发的,是一个基于Web的MVC框架。它在运行时通过Interceptor(拦截器)自动应用,因此脱离了Action类。 3.Struts 2 Struts 2是Apache基金会的一个开源项目,它建立在Struts框架与WebWork框架基础之上,继承了二者的优点,是目前非常流行的一个Web框架。 4.Spring Spring是一个以IoC和AOP为核心的轻量级容器框架。它提供了一系列的Java EE开发解决方案,包括表示层的Spring MVC、持久层的Spring JDBC以及业务层事务管理等众

多的企业级应用技术。 5.Hibernate Hibernate是一个ORM(对象关系映射)框架,它对JDBC进行了轻量级的封装。通过使用Hibernate框架,开发人员能够以面向对象的思维方式来操作数据库。 6.Ibatis 相对于Hibernate而言,Ibatis是一个“半自动化”的ORM实现框架,它主要致力于POJO与SQL之间的映射关系,是对“全自动化”ORM框架的一种有益补充。 7.EasyJWeb EasyJWeb是一个核心基于模板技术实现的MVC框架,主要致力于Java Web应用程序的快速开发。 4.IDE的用途是什么? 答案: IDE是一种用于辅助开发人员开发应用程序的应用软件,它一般包括代码编辑器、编译器、调试器和图形用户界面工具,有的还包括版本控制系统、性能分析器等更多工具,因此IDE也就具有了编写、编译、调试等多种功能。正是基于这些功能,使用IDE能够减少项目的开发周期,减轻程序员的工作量,提高应用程序的开发效率等。 5.Web应用服务器的用途是什么? Web应用服务器是为创建、部署、运行以及管理Web应用提供多种运行时服务(如事务、安全等等)的分布式系统,它是应用程序运行的一个基本环境。

Java-Web程序设计题库

Java Web程序设计题库 一、选择题 1、以下文件名后缀中,只有( C )不是静态网页的后缀。 A、.html B、.htm C .JSP D、.shtml 2、以下文件名后缀中,只有( B )不是动态网页的后缀。 A、.jsp B、.html C、.aspx D、php 3、在page指令中,( C )属性是可以在页面中重复的属性。 A、language B、buffer C、import D、autoflush 4、JSP的结构由( B )组成(多选)。 A、指令 B、注释 C、脚本元素 D、操作 5、以下选项中,那一项不是JSP指令( B )。 A、page B、import C、include D、taglib 6、下面哪种数据类型是基本类型( D )。 A、class B、interface C、数组 D、char 7、下面哪种数据类型是引用类型( C )。 A、boolean B、int C、interface D、long 8、下面哪一个运算符具有3个操作数( D )。 A、* B、++ C、&& D、: 9、下面那个运算符只有一个操作数( A )。 A、~ B、|| C、<< D、/ 10、下面那个语句是条件语句( C )。 A、break语句 B、while语句 C、if语句 D、for语句 11、类中的成员默认的访问修饰符是( A )。 A、private B、protected C、public D、空 12、常量使用( C )进行修饰 A、private B、abstract C、final D、static 13、包含Servlet发回到客户端信息的ServletResponse对象是由( C )创建的。

javaWeb基础复习题

J a v a w e b复习资料 1.理解Jsp的page指令。 page 指令可以定义下面这些大小写敏感的属性(大致按照使用的频率列出):import、contentType、pageEncoding、session、isELIgnored(只限 JSP 2.0)、buffer、autoFlush、 info、errorPage、isErrorPage、isThreadSafe、language 和 extends。 2. 理解Jsp的include指令。 include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改。由于被包含的文件是在编译时才插入的,因此如果只修改了include文件内容,而没有对JSP修改,得到的结构将不会改变,所以直接执行已经存在的字节码文件,而没有重新编译。因此对不经常变化的内容,用include指令是合适的,如果需要的内容是经常变化的,则需要动作元素.下面将详细区分他们之间的不同 1.include指令 ??include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。 语法:<%@ include file="sample.jsp" %> 2.include动作 ??jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面,将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。 语法: ? 3. 理解Jsp的include标签和forward标签。 forward是转发的另一个页面. include是把另一个页面加载到当前页面. JSP:include 是将一段java代码或页面放到页面指定的位置 jsp:forward 是跳转页面的 include标签

(完整版)《JavaWeb程序开发入门》课后练习(含答案)

第一章 【测一测】 1、请编写一个格式良好的XML文档,要求包含足球队一支,队名为Madrid,球员5人:Ronaldo、Casillas、Ramos、Modric、Benzema;篮球队一支,队名为Lakers,队员2人:Oneal,Bryant。要含有注释。 2、在XML Schema文档中,定义一个雇员的年龄为18~58周岁之间。请写出相应的元素声明。 ------第1题答案------ <球队列表> <球队类型="足球队"> <队名>Madrid <队员> <姓名>Ronaldo <姓名>Casillas <姓名>Ramos <姓名>Modric <姓名>Benzema <球队类型="篮球队"> <队名>Lakers <队员> <姓名>Oneal <姓名>Bryant ------第2题答案------

第二章 【测一测】 1、如何将web应用发布到tomcat上localhost主机,请写出至少3种实现方式? 2、请问在chapter02应用的web.xml文件中进行哪些配置,可以将welcome.html页面配置成该应用的默认页面? ------第1题答案------ 1、直接将web应用部署到tomcat/webapps下 2、将web应用通过tomcat/conf/server.xml进行配置 3、创建一个xml文件,并配置web应用信息,将xml文件放置tomcat\conf\Catalina\localhost ------第2题答案------ 在web-app标签中进行如下配置即可: welcome.html 第三章 【测一测】 1、简述HTTP1.1协议的通信过程? 2、简述POST请求和GET请求有什么不同? ------第1题答案------ 1、客户端与服务器端建立TCP连接。

2020年Java自学路线图--Javaweb学习

2020年Java自学路线图--Javaweb学习Javaweb的学习时是Java学习路线图的第三个阶段,在Java学习路线图前两个阶段学习后开始学习Javaweb。具备基本的JavaWeb开发能力,熟悉Linux服 务器及相关软件的使用,可完成中小型企业级项目的开发需求。这个阶段学完后就可以考虑工作了,是不是很快? 这个阶段需要你掌握JavaWeb开发基础知识,熟悉Java基本开发环境、熟悉项目管理工具使用及Linux服务器使用,达到了这些才能满足Java软件开发行业的基本开发需求。

1.数据库的概念 2.常见的数据库软件 3.MySQL数据库的安装卸载 4.MySQL数据库的登录退出 5.MySQL的目录结构 6.SQL语句的分类 7.数据库和数据表的操作 8.数据的添加(insert) 9.数据的删除(delete) 10.数据的修改(update) 11.数据的查询(select) 12.数据的复杂查询 13.约束的使用 14.多表关系(一对一、一对多、多对多) 15.三大范式详解 16.数据库的还原和备份 17.多表查询操作 18.事务介绍 19.事务的隔离 20.数据库的用户管理和权限管理 21.黑马程序员视频库网址:https://www.wendangku.net/doc/a518031783.html,(海量热门编程视频、资料免费学习) 22.学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 1679806262

1.JDBC入门 2.DriverManager类详解 3.Connection类详解 4.Statement类详解 5.JDBC完成增删改查操作 6.ResultSet类详解 7.JDBC工具类的编写 8.PreparedStatement类详解 9.使用JDBC完成事务管理 10.连接池的介绍 11.c3p0连接池的使用 12.druid连接池的使用 13.创建druid连接池工具类 14.JDBCTemplate的使用HTML5&CSS3 1.B/S架构 2.HTML基本使用 3.HTML常用标签 4.CSS选择器 5.常用样式

JavaWeb程序设计题库

、选择题 Java Web 程序设计题库 包含 Servlet 发回到客户端信息的 ServletResponse 对象是由( C )创建的。 A . 客户端的浏览器 B . Web 服务器的 HTTP 引擎 C . Web 服务器的 Servlet 容器 D . Servlet 对象 对于标准的 Web 网页,通常使用( B )表示响应信息是 HTML 格式的文本文件。 A . text/css B. text/html C .application/vnd.ms-excel D. application/msword 下面哪个方法不属于 session 对象( D ) A 、 getAttributeNames() B 、 getservletContext() C 、 invalidate() D 、 addCookie(Cookie cook) 下面哪个方法不属于 request 对象( B ) A 、 getServerName() B 、 getServerInfo() A 、 private B 、 abstrac t C 、 fina l D 、 13 、 14 、 15、 16、 C 、 D 、 1、 以下文件名后缀中, 只 有 C )不是静态网页的后缀。 2、 3、 4、 5、 6、 7、 8、 9、 A 、 .html B 、 .htm C .JSP D 、 .shtml 以下文件名后缀中, A 、 .jsp 在 page 指令中, A 、 language JSP 的结构由( A 、指令 只有 以下选项中,那一项不是 A 、 page 10、 11、 12、 B )不是动态网页的后缀。 B 、 .html C 、 .aspx D 、 php C )属性是可以在页面中重复的属性。 B 、 buffer )组成(多选) B 、注释 JSP 指令( )。 B 、 import C 、 C 、 C 、 面哪种数据类型是基本类型 A 、 class B 、 面哪种数据类型是引用类型 A 、 boolean 面哪一个运算符具有 B 、 int )。 interface 3 个操作数( B 、 ++ C 、 面那个运算符只有一个操作数( A 、 B 、 || 面那个语句是条件语句( A 、 break 语句 B 、 类中的成员默认的访问修饰符是( A 、 private B 、 )。 )。 C 、 )。 while 语句 protected )。 )。 C 、 常量使用( C )进行修饰 import 脚本元素 include 数组 interface C 、 C 、 C 、 public && << if 语句 D 、 D 、 D 、 D 、 D 、 D 、 autoflush 操作 taglib char long D 、 for 语句 D 、 ?: static

javaweb基础知识整理

一、TOMCAT服务器的安装与配置 1.常见服务器: WebLogic(BEA)、webSphere(IBM)、Tomcat(Apache) 2.Tomcat 的下载与安装 下载地址:https://www.wendangku.net/doc/a518031783.html,/ 安装目录不能包含中文和空格 JAVA_HOME环境变量指定Tomcat运行时所要用的jdk所在的位置,注意,配到目录就行了,不用指定到bin。 端口占用问题:netstat -ano命令查看端口占用信息 Catalina_Home环境变量:startup.bat启动哪个tomcat由此环境变量指定,如果不配置则启动当前tomcat,推荐不要配置此环境变量。 3.Tomcat的目录结构 bin--存放tomcat启动关闭所用的批处理文件 conf--tomcat的配置文件,最终要的是server.xml *实验:修改servlet.xml,更改tomcat运行所在的端口号,从8080改为80 lib--tomcat运行所需jar包 logs--tomcat运行时产生的日志文件 temp--tomcat运行时使用的临时目录,不需要我们关注 webapps--web应用所应存放的目录 work--tomcat工作目录,后面学jsp用到 4.虚拟主机 一个真实主机可以运行多个网站,对于浏览器来说访问这些网站感觉起来就像这些网站都运行在自己的独立主机中一样,所以,我们可以说这里的每一个网站都运行在一个虚拟主机上,一个网站就是一个虚拟主机。 4.1配置虚拟主机 在server.xml中标签下配置,其中name属性指定虚拟主机名,appBase指定虚拟主机所在的目录只在servlet.xml中配置Hosts,还不能使其他人通过虚拟主机名访问网站,还需要在DNS服务器上注册一把,我们可以使用hosts文件模拟这个过程。 默认虚拟主机:在配置多个虚拟主机的情况下,如果浏览器使用ip地址直接访问网站时,该使用哪个虚拟主机响应呢?可以在标签上设置defaultHost来指定。 5.web应用 web资源不能直接交给虚拟主机,需要按照功能组织用目录成一个web应用再交给虚拟主机管理。 5.1web应用的目录结构 web应用目录 | - html、css、js、jsp静态资源和JSP文件都可以直接放置在web应用的目录下,直接放在web应用下的内容,浏览器可以直接访问到 | - WEB-INF 可以没有,但是最好有,如果有则一定要保证他的目录结构是完整的。放置在WEB-INF目录下的所有资源浏览器没有办法直接进行访问。 | - classes动态web资源运行时的class文件要放在这个目录下。 | - lib 动态web资源运行时所依赖的jar包要放在这个目录下。 | - web.xml整个web应用的配置文件,配置主页/Servlet的映射/过滤器监听器的配置都需要依赖这个文件进行。 5.2web.xml文件的作用 某个web资源配置为web应用首页 将servlet程序映射到某个url地址上 为web应用配置监听器

JavaWeb

二、填空题 1.在编写Servlet时,需要继承HttpServlet类,在Servlet中声明doGet()和doPost()需要HttpServletRequest 和HttpServletResponse类型的两个参数。 2.jsp主要内置对象有:response、exception、pageContext、 request、session、application 、out、config、page。 3.使用useBean动作标记的时候scope属性有4种选项,作用范围由小到大是page、_requset_、_session ,application__,其中session _是指当关闭浏览器的时候这个javabean失效,_application_ 是指当关闭服务器的时候这个javabean失效。 1、控制一个Servlet的生命周期的方法有init( ), service( )和_ destroy( )。其中init()_在Servlet加载时调用,_destroy()__在撤消应用或关闭web container时调用,客户端的每次请求此Servlet时都会调用service()方法。Servlet通常只有一个实例,被所有的访问者共享,因此要注意资源的同步。 2. 在Servlet中要输出内容,使用HttpServletResponse的方法_setContentType 方法设置文档内容类型,对于文本类型调用方法_getWriter获得一个PrintWrite的输出流,对于二进制类型调用_getOutputStream获得ServeltOutputStream的输出流。调用HttpServletRequest的方法_getParameter获取有名参数,调用getInputStream获得一个ServletInputStream 的输入流。在Servlet中也可以调用ServletContext 和HttpServletRequest 的方法_ getRequestDispatche_获得RequestDispatcher, 将请求的处理权交给一个新的资源。 3.在Java Web开发中,跟踪客户状态的手段可通过_session_和_cookie_; 增加一个新的cookie, 调用HttpServletResponse的_addCookie _方法;要在服务器端查询cookie, 调用HttpServletRequest的getCookies方法。Session的类型是HttpSession, 获得session的途径是调用HttpServletRequest的方法是_ getSession_。 三.笔试题 18简述servlet进行中文处理的方法。 19请写出获取初始化参数的方法。 20简述使用Cookie进行会话跟踪过程。(写出主要步骤)

《Java Web程序设计》试卷四

〈JSP程序设计〉试卷四 一、填空题(每空2 分,共40分) 1.JSP文件最终会转换为文件。2.在JSP文件中汉字所使用的编码机制是。 4.是,<%--注释内容--> 是。 7.在JSP中连接数据库通常有两种形式:一是; 二是。8. 操作可以定义一个具有一定生存范围以及一个唯 一id的JavaBean的实例。 9.是Sun公司推出的一种在服务器端运行的小程序,它的 实质就是一个类,是一个能够使用print语句产生动态HTML内容的Java类。10.编译Servlet之前,将Servlet所需要的包添加到classpath中。 11.Java API 提供了和包为编写Servlet提供了接口和类。 12.在编写Servlet时要用到的javax.servlet.HttpServlet类为 的子类。 13.是同应答相关的HttpServletResponse类的一个对象,它封装了服务器对客户端的响应,然后被送到客户端以响应客户请求。

15. DatabaseMetaData接口用来获取数据库中可能取得的所有数据类型的描述 的方法是方法。 16.ResultSetMetaData类用来指示指定列的最大标准宽度的方法是 方法。 二、判断题(每小题2分,共30分) 1.charset=GB2312指明了页面中html动态内容的编码方式。()。 2.学习JSP并不需要学习JavaBean。( ) 3.JSP的执行肯定要经过Servlet才能执行。() 4. 格式如“”的注释是隐藏注释。() 5.Page指令的所有属性都可以重复设置。() 6. 操作允许将请求转发到其他的HTML文件、JSP文件或者是一个程序段, 通常请求被转发后,会停止当前JSP文件的执行。( ) 7.JSP内置对象是指不用声明就可以在JSP页面的脚本部分使用的对象。() 8.空字符串""和NULL的意义是相同的,都表示这个对象不存在。() 9.在服务器上存放cookie的数量是有限制的。() 10.执行Statement接口的executeUpdate()方法会返回一个ResultSet对象。 ( F ) 11.JavaBean中的属性既可以是public型的,也可以是private型的。() 12.中的name及property区分大小写。() 13.Servlet包含类包javax.servlet与javax.servlet.http。() 14. 在Servlet中系统自动解决中文显示问题。() 15. 如果用JDK直接编译Servlet将引起程序错误。() 三、选择题(每小题 2 分,共30 分) 1.下面哪一个不是JSP本身已加载的基本类?() (A)https://www.wendangku.net/doc/a518031783.html,ng.* (B)java.io.* (C)javax.servlet.* (D)javax.servlet.jsp.*

相关文档