当前位置:  编程技术>综合
本页文章导读:
    ▪Oracle培训(四十七)——Servlet第八章知识点总结——过滤器 过滤器链        Oracle培训(四十七)——Servlet第八章知识点总结——过滤器过滤器链   一.过滤器概述 a)         一个中间组件,用于拦截源数据和目的数据之间的消息.........
    ▪Oracle培训(四十六)——Servlet第七章知识点总结——监听器      Oracle培训(四十六)——Servlet第七章知识点总结——监听器   一.监听器概述 a)         监听session,request,application这三个对象里存取数据的变化 b)  &.........
    ▪学习java必知的概念      1、java面向对象的特征  1)封装:封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据.........

[1]Oracle培训(四十七)——Servlet第八章知识点总结——过滤器 过滤器链
    来源: 互联网  发布时间: 2013-11-05

 

Oracle培训(四十七)——Servlet第八章知识点总结——过滤器过滤器链

 

一.过滤器概述

a)         一个中间组件,用于拦截源数据和目的数据之间的消息

b)        过滤二者之间传递的数据

二.Web应用上的过滤器

a)         驻留在Web服务器上的Web组件

b)        过滤从客户端传递到服务器端的请求和响应(数据的流向不会受到影响、内容会) AOP概念

 

 

i.          以更改请求的内容,或者重新设置请求头,然后再将请求传递给目标资源

ii.        在Web应用程序中部署过滤器,对客户端和目标资源来说都是透明的,他们并不需要知道过滤器的存在

c)         Web应用上部署多个过滤器

i.          过滤器可以组成一个过滤器链。链中的每个过滤器负责特定的操作和任务,客户端的请求和响应在这些过滤器之间传递(整个Struts都是拦截器实现的)

 

d)        用途:

i.          认证过滤:对用户请求进行统一的认证。

ii.        登录和审核过滤:对用户的访问请求进行记录和审核。权限认证

iii.      图像转换过滤:转换图像格式。

iv.       数据压缩过滤:对用户发生的数据进行压缩,从而减少传输量。

v.         加密过滤:对请求和响应进行加密解密处理。

vi.       令牌过滤(防止表单重复提交)注册时

vii.     资源访问触发事件过滤

viii.   XSLT过滤

ix.       MIME-Type过滤

 

三.HelloWorldFilter –编码、编译:

i.          web_0701_first_filter\src\com\test\filter\FirstFilter.java

ii.        Web.xml

 

<!—指定过滤器名和过滤器类-->

 <filter>

      <filter-name>filter1</filter-name>

      <filter-class>com.test.filter.FirstFilter</filter-class>

  </filter>

<!-- 将过滤器与URL模式关联,过滤什么请求-->

  <filter-mapping>

      <filter-name>filter1</filter-name>

      <url-pattern>*.do</url-pattern>

  </filter-mapping>

 

四.过滤器API

a)         由容器实现的接口

i.          javax.servlet.Filter

ii.        javax.servlet.FilterChain

iii.      javax.servlet.FilterConfig

b)        四个包装器类(在请求送到过滤器链的下一个组件之前更改请求的内容或者改变从前一个组件接收的响应)

i.          javax.servlet.ServletRequestWrapper

ii.        javax.servlet.ServletResponseWrapper

iii.      javax.servlet.http.HttpServletRequestWrapper

iv.       javax.servlet.http.HttpServletResponseWrapper

c)         Filter接口:

 

 

d)        FilterConfig接口

i.          为过滤器提供初始化参数

ii.        由Servlet容器实现

 

 


    
[2]Oracle培训(四十六)——Servlet第七章知识点总结——监听器
    来源: 互联网  发布时间: 2013-11-05

Oracle培训(四十六)——Servlet第七章知识点总结——监听器

 

一.监听器概述

a)         监听session,request,application这三个对象里存取数据的变化

b)        监听器对象可以在事情发生前、发生后可以做一些必要的处理

c)         Servlet监听器主要目的是给Web应用增加事件处理机制,以便更好地监视和控制Web应用的状态变化

二.监听器分类

 

 

三.监听Web应用程序范围内的事件(application级别)

a)         Web应用启动和销毁事件(contentInitialed contentDestroyed)启动事件应用:页游(公用的数据加入缓存)关闭事件应用:关闭服务器之前保存活跃数据

b)        Web应用程序的属性发生改变的事件(包括增加、删除、修改)。

c)         定义了ServletContextListener和ServletContextAttributeListener两个接口

四.ServletContextListener接口

a)         ServletContextListener接口用于监听Web应用程序启动和销毁的事件

b)        contextInitialized(ServletContextEvent sce):通知正在接受的对象,应用程序已经被加载及初始化

c)         contextDestroyed(ServletContextEvent sce):通知正在接受的对象,应用程序已经被销毁

五.如何配置一个监听器?

a)         \web_0604_listener_context\src\com\test\listener\MyServletContextListener.java

b)        1.先从接口实现,写一个类

c)         2.在web.xml里配置linstener

d)        3.当web容器启动或对应的域对象有操作的时候由web容器监听并调用对应的实现类对象进行处理

六.监听会话范围内事件

a)         管理从同一个客户端或用户向一个Web应用程序发出的一系列请求相关的状态或资源

b)        HttpSessionBindingListener接口

i.          监听对象加入Session范围时

ii.        监听从Session范围中移出对象时

iii.      接口有两个方法

iv.       void valueBound(HttpSessionBindingEvent event):当对象正在绑定到Session中,Servlet容器调用该方法来通知该对象

v.         void valueUnbound(HttpSessionBindingEvent event):当从Session中删除对象时,Servlet容器调用该方法来通知该对象

vi.       购物车:会话超时使用,放入购物车,很久未操作,会话超时将数据存入数据库

c)         HttpSessionAttributeListener接口

d)        HttpSessionListener接口(可用于在线人数的统计)

i.          监听HttpSession对象的创建和销毁操作

ii.        当创建一个Session时,激发session Created(HttpSessionEvent se)方法

iii.      当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法

iv.       功能:统计在线人数

e)         HttpSessionActivationListener接口

七.监听请求生命周期内事件

 

请求作用域范围内的生命周期事件用于管理整个request生命周期的状态和资源

a)         ServletRequestListener接口

i.          public void requestDestroyed(ServletRe

    
[3]学习java必知的概念
    来源: 互联网  发布时间: 2013-11-05

1、java面向对象的特征

 1)封装:封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

        面向对象程序设计中,一个非常重要的技术便是封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。这样做的好处在于可以使类内部的具体实现透明化,只要其他代码不依赖类内部的私房数据,你便可以安心修改这些代码。此外,这样做也是出于安全方面的考虑,如果代表网上支付卡密码的变量随便就可以被访问到,这样的系统谁还敢用呢?

封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过 外部接口,一特定的访问权限来使用类的成员。

2)继承:子类对父类的继承,若子类与父类在同一包中。子类继承了父类中所有不是private的成员方法(除构造方法)及不是private的成员变量。

对象是用类来定义的。通过类,你能够充分了解对象的全貌。比如,一说起自行车,你就会联想到自行车是有两个轮子、车把以及脚踏板。

  更进一步,面向对象语言的另一个特点便是允许从一个已有的类定义新的类。比如,山地车、公路赛车和两人三轮车都是自行车。在面向对象语言中,你可以从一个已经有的自行车类定义山地车类、公路赛车类等等。山地车类、公路赛车类都称为自行车类的子类,自行车类是它们的父类,而这种定义关系,便是继承关系。

  子类继承了父类的属性。比如,山地车、公路赛车都是有两个轮子一个车座。子类也可继承了父类的方法,比如山地车、公路赛车、两人三轮车都可以前进、刹车、转弯等。
当然,子类并不限于继承,还可以发扬光大。比如两人三轮车便颠覆了自行车只有两个轮子、一个座垫的属性,使得自己更加休闲潇洒。

3)多态

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

实现多态,有二种方式,覆盖,重载。

覆盖,是指子类重新定义父类的虚函数的做法。

重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

2、Java中的关键字:
1)static,

 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。 
      static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用 

     用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块

static变量

      按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:
    对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

static方法

      静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

static代码块

      static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

static和final一块用表示什么
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。

2)final,

final变量:

      当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。

     当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

     另外方法中的内部类在用到方法中的参变量时,此参变也必须声明为final才可使用

final方法

     如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
使用final方法的原因有二:
    第一、把方法锁定,防止任何继承类修改它的意义和实现。
    第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

final类

     final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。

3)this,通常指向当前对象;
4)super,指向父类,如果想引用父类的某种东西时可以使用,此外当super后加参数时,表示调用父类中有相同参数形式的构造函数;
3、抽象类与接口

抽象类:

抽象方法与抽象类必须使用abstract修饰,有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法。
它们

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3