`
bbwang8088
  • 浏览: 45971 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java web 开发要素学习

 
阅读更多

 

java webServletFilterListener<context-param>

 

参考:

1、JavaWeb三大组件(Servlet、Filter、Listener)

2、一个web项目web.xml的配置中<context-param>配置作用

3、java web 监听器listener

 

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例子

    总结来说,“经典Java Web例子”涵盖了Java Web开发的基本要素,包括Servlet、JSP、部署描述符以及可能的数据库操作。学习和理解这些例子有助于开发者深入理解Java Web开发,并能够构建自己的Web应用程序。

    Java Web开发资料整理大全

    这份"Java Web开发资料整理大全"包含了丰富的学习资源,旨在帮助开发者全面掌握这一领域。下面将对其中涉及的知识点进行详细阐述: 一、Java开发环境及开发工具 1. **Java Development Kit (JDK)**:Java程序开发...

    java-web开发技术01-overview

    Java Web 应用的核心要素包括: - **Servlet**:处理客户端请求的 Java 类。 - **JSP (Java Server Pages)**:结合 HTML 和 Java 代码,用于动态生成网页。 - **实用类**:支持 Servlet 和 JSP 功能的 Java 类。 - *...

    JAVA WEB 选课系统源代码

    以上是对"JAVA WEB 选课系统源代码"中的主要知识点的解析,这些内容涵盖了Java Web开发的基本要素,对于学习和理解Java Web编程具有极大的价值。通过分析和实践这个项目,开发者可以提升自己的技能,并了解实际开发...

    (完整版)最全的java学习笔记(必看).pdf

    Java是一种流行的编程语言,广泛应用于Android应用程序开发、Web应用程序开发、桌面应用程序开发等领域。以下是Java学习笔记的摘要信息: 一、Java技术基础 * 1.1 编程语言:Java是一种面向对象的编程语言,具有跨...

    Java Web程序设计基础教程.zip

    本教程的目的是为初学者提供一个全面的入门指南,让他们能够理解并应用Java Web开发的关键要素。以下是一些核心知识点的详细说明: 1. **Java Servlets**:Servlet是Java编程语言中的一个接口,用于扩展服务器的...

    基于Java的Web应用系统开发模式分析.pdf

    基于Java的Web应用系统开发模式是指利用Java语言开发基于互联网的应用程序,这种开发模式涉及多种技术要素和开发流程,旨在高效、安全地构建Web应用系统。以下是对给定文件中提到的基于Java的Web应用系统开发模式的...

    Java web上课内容(年龄+姓名)

    Java Web是一种基于Java技术的...通过学习以上知识点,你将能够掌握Java Web开发的基本技能,并能够处理类似"年龄+姓名"这样的简单数据交互。不断实践和深入理解这些概念,你将能够构建出更复杂、功能丰富的Web应用。

    selfWebServer(java).rar_cgi_java web_web服务器_静态网页

    总的来说,"selfWebServer(java).rar"是一个适合初学者研究的项目,它涵盖了Web服务器开发的基本要素,包括静态资源服务、并发处理以及CGI接口的实现,对于提升Java Web开发技能大有裨益。通过深入研究和实践,...

    用java开发Arcgis server 9.2 web application

    首先,获取工作坊的资料是学习和理解如何使用Java开发ArcGIS Server 9.2 Web应用的基础。这些资料通常包括幻灯片、音频和视频记录,以及任何演示中出现的示例代码或教程。根据给定的部分内容,这些资料可以在...

    Springer.Web.Development.with.Java.Using.Hibernate.JSPs.and.Servlets.Oct.2007

    NetBeans的智能代码完成、错误检测和调试工具极大提升了开发效率,是学习和实践Java Web开发的理想选择。 ### 结语 《Springer.Web.Development.with.Java.Using.Hibernate.JSPs.and.Servlets.Oct.2007》不仅是一本...

    java web项目实验,包括一个医院挂号系统和微信小程序实验.zip

    综上所述,这个实验项目提供了丰富的学习内容,涵盖了Java Web开发的基本要素和微信小程序的开发实践,对于学习者来说,不仅可以深入理解Java Web应用的架构和实现,还能了解移动互联网时代下小程序的开发流程和技术...

    number(web).rar_猜数字java web

    通过这个项目,开发者可以提升对Java Web开发的理解,学习如何将后端逻辑与前端界面结合,同时熟悉服务器端的状态管理和用户交互处理。对于初学者来说,这是一个很好的实践项目,涵盖了Web开发的基本要素。

    java学习文档

    Java 是一种广泛使用的高级编程语言,应用于 Android 应用开发、Web 开发、企业软件开发等领域。本文档主要介绍 Java 基础概念和 JDK 安装配置方法,适合初学者和 Java 开发者。 一、JDK 安装和配置 JDK(Java ...

    bs模式java开发课件

    在现代Web开发中,JSON格式取代了XML,成为AJAX传输数据的主要方式。 8. **RESTful API**:Representational State Transfer,一种设计Web服务的风格,强调资源的状态转移。在BS模式中,后端常常提供RESTful接口供...

    基于Java web的员工管理系统(源码+数据库).zip

    【标题】"基于Java web的员工管理系统(源码+数据库).zip" 是一个完整的Java Web应用程序项目,它提供了一套用于...同时,提供的源码和数据库脚本为学习Java Web开发提供了一个实际案例,有助于提升技能和实践经验。

    java超强学习笔记

    10. **Java EE相关**:如果笔记内容深入,还可能包含Java服务器端开发,如Servlet、JSP、JDBC、Spring框架等,以及相关的Web开发知识。 "Java超强学习笔记"的详细程度表明,它不仅适合初学者入门,也对有一定经验的...

Global site tag (gtag.js) - Google Analytics