java web(Servlet、Filter、Listener、<context-param>)
参考:
1、JavaWeb三大组件(Servlet、Filter、Listener)
2、一个web项目web.xml的配置中<context-param>配置作用
Servlet:
1、接收请求数据:
我们都知道客户端请求会被封装成HttpServletRequest对象,里面包含了请求头、参数等各种信息。
2、处理请求:
通常我们会在service、doPost或者doGet方法进行接收参数,并且调用业务层(service)的方法来处理请求。
3、完成响应:
处理完请求后,我们一般会转发(forward)或者重定向(redirect)到某个页面,转发是HttpServletRequest中的方法,重定向是HttpServletResponse中的方法,两者是有很大区别的。
4、创建加载时机
Servlet可以在第一次接收请求时被创建,也可以在在服务器启动时就被创建,这需要在web.xml的< servlet>中添加一条配置信息 < load-on-startup>5< /load-on-startup>,当值为0或者大于0时,表示容器在应用启动时就加载这个servlet,当是一个负数时或者没有指定时,则指示容器在该servlet被请求时才加载。
5、重要方法
5.1 void init(ServletConfig):
servlet的初始化方法,只在创建servlet实例时候调用一次,Servlet是单例的,整个服务器就只创建一个同类型Servlet
5.2 void service(ServletRequest,ServletResponse):
1、servlet的处理请求方法,在servle被请求时,会被马上调用,每处理一次请求,就会被调用一次。ServletRequest类为请求类,ServletResponse类为响应类。
2、缺省的service功能是调用与 HTTP 请求的方法相应的 do 功能。例如,如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。
5.3 doGet(ServletRequest,ServletResponse):
当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时,doGet() 方法被调用。与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用 doGet() 方法。
5.4 doPost(ServletRequest,ServletResponse):
当一个客户通过 HTML 表单发出一个 HTTP POST 请求时,doPost() 方法被调用。与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用 doPost() 方法。
5.5 void destory()
1、servlet销毁之前执行的方法,只执行一次,用于释放servlet占有的资源,通常Servlet是没什么可要释放的,所以该方法一般都是空的
2、缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另一个示例是关闭数据库连接。
3、当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个 Servlet 在运行 service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。
5.6 ServletConfig getServletConfig():
1、获取servlet的配置信息的方法,所谓的配置信息就是WEB-INF目录下的web.xml中的servlet标签里面的信息。
2、 getServletConfig() 方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和 ServletContext。ServletContext 接口提供有关 servlet 的环境信息。
5.7 String getServletInfo():
获取servlet的信息方法,getServletInfo() 方法是一个可选的方法,它提供有关 servlet 的信息,如作者、版本、版权。
Filter:
1、功能
filter与servlet在很多的方面极其相似,但是也有不同,例如filter和servlet一样都又三个生命周期方法,同时他们在web.xml中的配置文件也是差不多的、但是servlet主要负责处理请求,而filter主要负责拦截请求,和放行。
2、url-mapping三种匹配规则:
精确匹配 —— 如/foo.htm,只会匹配foo.htm这个URL。
路径匹配 —— 如/foo/*,会匹配以foo为前缀的URL。
后缀匹配 —— 如*.htm,会匹配所有以.htm为后缀的URL。
3、执行filter的顺序:
如果有多个过滤器都匹配该请求,顺序决定于web.xml filter-mapping的顺序,在前面的先执行,后面的后执
4、四种拦截方式:REQUEST、FORWARD、INCLUDE、ERROR
4.1 REQUEST:
直接访问目标资源时执行过滤器。包括:在地址栏中直接访问、表单提交、超链接、重定向,只要在地址栏中可以看到目标资源的路径,就是REQUEST
4.2 FORWARD:
转发访问执行过滤器。包括RequestDispatcher#forward()方法、< jsp:forward>标签都是转发访问;
4.3 INCLUDE:
包含访问执行过滤器。包括RequestDispatcher#include()方法、< jsp:include>标签都是包含访问;
4.4 ERROR:
当目标资源在web.xml中配置为< error-page>中时,并且真的出现了异常,转发到目标资源时,会执行过滤器。
Listener:
1、它可以监听Application、Session、Request对象,当这些对象发生变化就会调用对应的监听方法。
2、常用的WebListener:
2.1 ServletContext
(ServletContextListener:用于监听Web的启动及关闭)
(ServletContextAttributeListener:用于监听ServletContext范围内属性的改变)
典型应用:定时器扫描、系统启动时加载全局属性对象(如全局数据库连接、缓存信息)等和系统全局相关的操作
2.2 HttpSession
(HttpSessionListener:用于监听用户session的开始及结束)
(HttpSessionAttributeListener:用于监听HttpSession范围内的属性改变)
典型应用:统计在线用户数,记录访问日志等和用户相关的操作
2.3 ServletRequest
(ServletRequestListener:用于监听用户请求)
(ServletRequestAttributeListener:用于监听ServletRequest范围属性的改变)
典型应用:读取用户请求参数用于控制流程,记录用户的访问历史记录等。
context-param:
1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>
2. 紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.
3. 容器将<context-param></context-param>转化为键值对,并交给ServletContext.这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早.
4. conetxt-param应该用来配合Servlet、Listener和Filter来使用。
web.xml中ServletContext 、context-param、Listener、Filter、Servlet的启动加载顺序
1、基本顺序
ServletContext -> context-param -> listener -> filter -> servlet
2、特殊点-servlet
可以在web.xml的配置中指定<load-on-startup>1</load-on-startup>参数。
当参数为正数时,容器在加载的时候就初始化servlet,数值越小启动优先级越高。
当参数为负数或者不存在时,则第一次被调用时初始化servlet。
3、特殊点-filter
filter的初始化顺序和它们出现在web.xml中的前后次序有关,先出现的先初始化,此外,filter-mapping必须出现在filter配置之后。
当一个请求匹配到多个filter-mapping时,filter们会按照filter-mapping配置出现的先后顺序来依次调用doFilter()方法。
相关推荐
Java及Web开发是信息技术领域的重要组成部分,涉及到...以上仅是Java及Web开发的部分核心知识点,实际参考手册中可能涵盖了更深入的技术细节、最佳实践以及案例研究,对于学习和提升Java和Web开发技能具有极大的价值。
总结来说,“经典Java Web例子”涵盖了Java Web开发的基本要素,包括Servlet、JSP、部署描述符以及可能的数据库操作。学习和理解这些例子有助于开发者深入理解Java Web开发,并能够构建自己的Web应用程序。
这份"Java Web开发资料整理大全"包含了丰富的学习资源,旨在帮助开发者全面掌握这一领域。下面将对其中涉及的知识点进行详细阐述: 一、Java开发环境及开发工具 1. **Java Development Kit (JDK)**:Java程序开发...
Java Web 应用的核心要素包括: - **Servlet**:处理客户端请求的 Java 类。 - **JSP (Java Server Pages)**:结合 HTML 和 Java 代码,用于动态生成网页。 - **实用类**:支持 Servlet 和 JSP 功能的 Java 类。 - *...
以上是对"JAVA WEB 选课系统源代码"中的主要知识点的解析,这些内容涵盖了Java Web开发的基本要素,对于学习和理解Java Web编程具有极大的价值。通过分析和实践这个项目,开发者可以提升自己的技能,并了解实际开发...
Java是一种流行的编程语言,广泛应用于Android应用程序开发、Web应用程序开发、桌面应用程序开发等领域。以下是Java学习笔记的摘要信息: 一、Java技术基础 * 1.1 编程语言:Java是一种面向对象的编程语言,具有跨...
本教程的目的是为初学者提供一个全面的入门指南,让他们能够理解并应用Java Web开发的关键要素。以下是一些核心知识点的详细说明: 1. **Java Servlets**:Servlet是Java编程语言中的一个接口,用于扩展服务器的...
基于Java的Web应用系统开发模式是指利用Java语言开发基于互联网的应用程序,这种开发模式涉及多种技术要素和开发流程,旨在高效、安全地构建Web应用系统。以下是对给定文件中提到的基于Java的Web应用系统开发模式的...
Java Web是一种基于Java技术的...通过学习以上知识点,你将能够掌握Java Web开发的基本技能,并能够处理类似"年龄+姓名"这样的简单数据交互。不断实践和深入理解这些概念,你将能够构建出更复杂、功能丰富的Web应用。
总的来说,"selfWebServer(java).rar"是一个适合初学者研究的项目,它涵盖了Web服务器开发的基本要素,包括静态资源服务、并发处理以及CGI接口的实现,对于提升Java Web开发技能大有裨益。通过深入研究和实践,...
首先,获取工作坊的资料是学习和理解如何使用Java开发ArcGIS Server 9.2 Web应用的基础。这些资料通常包括幻灯片、音频和视频记录,以及任何演示中出现的示例代码或教程。根据给定的部分内容,这些资料可以在...
NetBeans的智能代码完成、错误检测和调试工具极大提升了开发效率,是学习和实践Java Web开发的理想选择。 ### 结语 《Springer.Web.Development.with.Java.Using.Hibernate.JSPs.and.Servlets.Oct.2007》不仅是一本...
综上所述,这个实验项目提供了丰富的学习内容,涵盖了Java Web开发的基本要素和微信小程序的开发实践,对于学习者来说,不仅可以深入理解Java Web应用的架构和实现,还能了解移动互联网时代下小程序的开发流程和技术...
通过这个项目,开发者可以提升对Java Web开发的理解,学习如何将后端逻辑与前端界面结合,同时熟悉服务器端的状态管理和用户交互处理。对于初学者来说,这是一个很好的实践项目,涵盖了Web开发的基本要素。
Java 是一种广泛使用的高级编程语言,应用于 Android 应用开发、Web 开发、企业软件开发等领域。本文档主要介绍 Java 基础概念和 JDK 安装配置方法,适合初学者和 Java 开发者。 一、JDK 安装和配置 JDK(Java ...
在现代Web开发中,JSON格式取代了XML,成为AJAX传输数据的主要方式。 8. **RESTful API**:Representational State Transfer,一种设计Web服务的风格,强调资源的状态转移。在BS模式中,后端常常提供RESTful接口供...
【标题】"基于Java web的员工管理系统(源码+数据库).zip" 是一个完整的Java Web应用程序项目,它提供了一套用于...同时,提供的源码和数据库脚本为学习Java Web开发提供了一个实际案例,有助于提升技能和实践经验。
10. **Java EE相关**:如果笔记内容深入,还可能包含Java服务器端开发,如Servlet、JSP、JDBC、Spring框架等,以及相关的Web开发知识。 "Java超强学习笔记"的详细程度表明,它不仅适合初学者入门,也对有一定经验的...