java mina(2.x)文件双向传输

java mina(2.x)文件双向传输,第1张

你得想法应该是这样吧:将用户传的文件传给服务器,然后服务器接受(有一个接受文件),然后将接受文件处理,(再存储成一个文件),第二个文件传回用户端。我感觉你可以上网搜一个上传图片的一个处理过程看一下,这个过程也是io处理,你得问题在第二部,那么你应该是在第二部读取文件的时候出问题了。你先尝试下不经过处理的文件传输回去,然后再改下对象试试。

jar包在服务器上是不可运行的!

在服务器上运行的是WEB程序是war包

jar包的安装使用一般在手机上!

其次!jar包 是放在WEB程序下面的webroot下面的lib中的 只不过是给别人调用的!jar包 也可以做为插件 共别人使用!

因为要下班了!所以暂时这么说吧!不知道LZ能接受不。。。

mina是一款网络应用框架, 它是基于java nio 的 通讯框架, 提供抽象的事件驱动异步的api。

mina 基本架构:

大致上分为三层IoSerivce, Filter, Handler

首先我们来看一下Filter

前面说过, mina 是基于事件驱动的, 所以我们先来看一下mina定义了那些事件:

IoEventType 类中定义了如下枚举变量:

这些事件对于用户使用者来说无需关心。

以上IoEventType仅是事件的类型(事件的属性), mina对于事件是通过IoEvent对象进行封装的。

来看一下IoEvent 都有哪些方法

我们看到IoEvent 实现了Runnable,也就是说这个对象会交给多线程去执行run方法。

在run方法中我们看到执行的是fire(), 也就是具体的任务了。

下面来看一下fire中做的事情, 首先看以下IoEvent 中 具体做了哪些事情, 再看一下其子类IoFilterEvent又做了哪些事情。 后面我会讲IoFilterEvent 的作用是什么, 在哪里用到。

其实做的事情就是触发(调用) session下filterchain的对应事件类型的方法。

IoFilterEvent 是IoEvent 的子类, 从名字就可以看出来, 其与IoFilter 有一定的关系, 所以IoFilterEvent是由IoFilter 产生的事件。

而IoFilter 产生的事件有什么特性呢?

在此插入IoFilter与IoFilterChain 的介绍。

IoFilter 是 拦截处理事件的过滤器, 如同servlet的filter。 它可以用于很多目的:

日志记录, 性能测量, 认证等等。

而filterchain 即代表一串IoFilter的链子, 其有多个IoFilter 组成。 事实上,在IoFilterChain 中,封装了一层Entry, 每个Entry中封装了当前的IoFilter和下一个IoFilter的引用。 可以看到Entry的接口如下

NextFilter 顾名思义, 即下一个IoFilter, 为什么需要有这么一个接口呢?

事实上, 我们可以想象, nextFilter 是用来 触发 下一个Iofilter的,其并不是IoFilter, 在IoFilter中, 我们可以看到这样的调用

说完了IoFilter, IoFilterChain, 那与IoFilterEvent有什么关系呢?

因为是IoFilter产生的事件, 当触发这个事件时, 由于链式的特征, 该事件将触发当前IoFilter 以后的Filter, 所以我们看到, IoFilter fire()的实现其实就是调用下一个filter的对应的事件方法:

也可以这样理解, 一个事件的产生, 产生地就是头, 事件从当前头向链后传播。

IoEvent 做的是从chain 的开头往后传播, IoFilterEvent是由当前IoFilter产生往后传播。

说完了IoFilter, 来探讨一下如何将IoFilter组装成IoFilterChain:

其实里面的结构就是链表。

来看看chain中add的内容:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11603906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存