`
bbwang8088
  • 浏览: 43998 次
  • 性别: 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()方法。

 

 

 

分享到:
评论

相关推荐

    jsp服装穿搭推荐系统Myeclipse开发mysql数据库web结构java编程计算机网页项目源码

    JSP 服装穿搭推荐系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql...

    Java JDK 5.0 经典入门

    本书综合介绍了使用J2SE(Java 2 Standard Edition)5.0或更高版本开发动态程序的过程,阐述了Java语言的各个方面,包括Java语言结构和工作原理的基本知识,用大量的实例讲述如何开发功能齐全的Java应用程序,以期...

    javaee笔试题-Notes-For-Interviews:Java-Web开发-后台开发面试笔记

    Web开发 - 后台开发 面试笔记 面试答题四大要素和模版,亲历4+1+1六场面试所得 是什么 原理 细节 应用 3月进展 3.16开始,沉心复习,从Java基础看起 《Java面试宝典 第四版》 有很多很有趣的知识点,但是以面试题为...

    基于Delphi的Web Service 客户端调用

    概述了Web Service的特点和核心要素, 依据Delphi和Java对Web Service 的支持,给出了基于Java ,Delphi开发Web Service的流程, 并用一个Delphi调用Java开发Web Service应用程序来说明跨平台Web Service应用程序的步骤...

    基于Java web SSH框架+jquery的旅游信息交流网站(源码+数据库脚本).zip

    本项目描述了旅游信息交流系统的开发过程。网站前台实现了旅游新闻和旅游资讯,优惠信息的查看,留言板模块为游客和旅行社、游客和游客之间提供了一个信息交流的平台。网站后台提供部分系统维护功能,主要是旅行社...

    java程序设计与开发课件

    2.1 Java语言要素······························ (11) 2.1.1 标识符······························· (11) 2.1.2 关键字·············...

    Java数据编程指南

    &lt;br&gt;目录 第一部分 软件、对象、数据设计与建模 第1章 软件开发的方法与过程 为什么我们需要方法与过程 什么是软件方法与过程 方法的内容 过程模型 源代码管理的要素 软件缺陷与修改的...

    AssignmentOne:Web应用程序开发的分配库一

    Web应用程序最终项目:第1部分作者:以赛亚·海利(Isaiah Haley)和伊桑·沃尔顿(Ethan Walton) 该项目的目的是演示从Web应用程序开发课程中学到的所有知识,并能够将学习的所有要素应用到我们的最终项目中,在该...

    WEB设计大全

    Web设计进程 &lt;br&gt;2.1 进程需求 &lt;br&gt;2.2 特别的Web进程 &lt;br&gt;2.3 基本的Web进程模型 &lt;br&gt;2.3.1 修正瀑布模型 &lt;br&gt;2.3.2 联合应用开发模型 &lt;br&gt;2.4 Web站点项目的途径 &lt;br&gt;2.5 目标和问题 ...

    JAVA_JSP_sql server企业合同管理系统设计软件源码+数据库+WORD毕业论文文档.zip

    目前国内主流的软件开发基于两种模式:客户机/服务器(Client/Server,简称C/S)模式和Web浏览器/服务器(Browser/Server,简称B/S)模式。虽然出于安全性等方面的因素,C/S结构的管理信息系统仍然占据企业管理信息...

    上市公司全要素生产率2000-2022(含源代码).zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    上市公司全要素生产率2000-2021(含源代码).zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    浅探《Java程序设计》的教学目标和课程设计(全文).docx

    这门课程的前导课程是《C语言》、《XX页制作》和《计算机XX络》,所以它一般放在第三或第四个学期开设,后续课程是面向服务器编程《JSP》、面向Web通信的《J2EE》、面向移动通信《J2ME》。 3.《Jv程序设计》的课程...

    docker-stack:使用Docker开发,构建,测试,部署和维护您的12要素Web应用程序

    Docker堆栈允许开发团队利用Dockerized服务(数据库,邮件服务器,任务运行器,消息队列等)将用PHP,NodeJS,Java和Python的任意组合编写的Web应用程序编织在一起。对于开发商作为开发人员团队的成员,基于Docker...

    WEB设计大全(part2)

    Web设计进程 &lt;br&gt;2.1 进程需求 &lt;br&gt;2.2 特别的Web进程 &lt;br&gt;2.3 基本的Web进程模型 &lt;br&gt;2.3.1 修正瀑布模型 &lt;br&gt;2.3.2 联合应用开发模型 &lt;br&gt;2.4 Web站点项目的途径 &lt;br&gt;2.5 目标和问题 ...

Global site tag (gtag.js) - Google Analytics