2021SC@SDUSC【软件工程应用与实践】Cocoon项目6——core文件夹分析(5)

2021SC@SDUSC

core文件夹分析(5)

  • MultipartConfigurationHelper.java
    • 1、总结
    • 2、主要属性
    • 3、方法
  • MultipartFilter
    • 1、总结
    • 2、主要属性
    • 3、方法
  • MultipartParser.java
    • 1、总结
    • 2、构造器
    • 3、方法
    • 4、其他

MultipartConfigurationHelper.java

1、总结

继承自object

多部分过滤器的配置对象

2、主要属性

  • 这个参数允许指定 Cocoon 应该把上传的文件放在哪里。指定的路径可以是绝对的,也可以是相对于 servlet 的上下文路径。 在windows平台上,绝对目录必须以volume开头:C:PathToUploadDirectory
  • 使多部分请求中的所有文件都得到处理,出于安全原因,默认值为 false
    protected boolean autosaveUploads;
  • 使多部分请求中的所有文件都保存到上传目录,出于安全原因,默认值为 true
  • 指定在将上传的文件保存到磁盘时处理名称冲突。可接受的值为拒绝、允许、重命名(默认)。文件被重命名为 x_filename,其中 x 是一个整数值,递增以使新文件名唯一
  • 指定允许的最大上传大小,默认为 10 Mb

3、方法

给上述每个参数配备get和set方法,以autosaveUploads为例:

  • 返回参数autosaveUploads
  • 设置参数autosaveUploads
  • 从设置对象进行配置

MultipartFilter

1、总结

继承自AbstractLogEnabled
实现了Filter接口

2、主要属性

3、方法

实现filter接口

  • 由 Web 容器调用以向过滤器指示它正在投入使用。 servlet 容器在实例化过滤器后只调用一次 init 方法。在要求过滤器执行任何过滤工作之前,init 方法必须成功完成
  • Web 容器无法将过滤器投入使用如果 init 方法 :
    1.抛出一个ServletException
    2.在web容器定义的时间段内不返回
  • 由 Web 容器调用以向过滤器指示它正在停止服务。 只有在过滤器的 方法中的所有线程都退出或超时时间过后,才会调用此方法。
  • Web 容器调用此方法后,将不会在此过滤器实例上再次调用 方法
  • 此方法使过滤器有机会清理任何被占用的资源(例如,内存、文件句柄、线程)并确保任何持久状态与过滤器在内存中的当前状态同步
  • 由于客户端对链尾资源的请求,每次请求/响应对通过链时,容器都会调用 Filter 的 doFilter 方法。 传入此方法的 FilterChain 允许 Filter 将请求和响应传递给链中的下一个实体。
  • 此方法的典型实现将遵循以下模式:
  1. 检查请求
  2. 可选地使用自定义实现包装请求对象以过滤内容或标题以进行输入过滤
  3. 可选地使用自定义实现包装响应对象以过滤内容或标题以进行输出过滤
  4. a) 要么使用 FilterChain 对象(chain.doFilter())调用链中的下一个实体
  5. b) 或不将请求/响应对传递给过滤器链中的下一个实体以阻止请求处理
  6. 调用过滤器链中的下一个实体后,直接在响应上设置标头

补充:filter接口

  1. 过滤器是一个对象,它对资源(servlet 或静态内容)的请求或来自资源的响应或两者执行过滤任务。
  2. 过滤器在 doFilter 方法中执行过滤。 每个过滤器都可以访问一个 FilterConfig 对象,它可以从中获取其初始化参数,一个对 ServletContext 的引用,它可以使用它来加载过滤任务所需的资源
  3. 过滤器在 Web 应用程序的部署描述符中配置

MultipartParser.java

1、总结

继承自object

此类用于实现多部分请求包装器

它将解析 http post 流并用值填充它的哈希表
哈希表包含:①Vector:内联部分值 ②FilePart:文件部分

2、构造器

3、方法

  • 将来自请求 URI 的所有参数复制到部件表,上传进度条支持
  • 读取部分标题
  • headers.put 中的额外 处理 IE6 为空上传字段提交的 filename=”” 情况
  • 从内容标题获取边界
  • 读取字符串直到换行或流结束

补充:方法

使用平台的默认字符集将此 String 编码为字节序列,并将结果存储到新的字节数组中。
当此字符串无法在默认字符集中编码时,此方法的行为未指定。 当需要对编码过程进行更多控制时,应使用 java.nio.charset.CharsetEncoder

4、其他

哈希表:也叫散列表,哈希表是一种数据结构,它提供了快速的插入操作和查找操作,无论哈希表总中有多少条数据,插入和查找的时间复杂度都是为O(1),因为哈希表的查找速度非常快,所以在很多程序中都有使用哈希表

哈希表也有自己的缺点,哈希表是基于数组的,我们知道数组创建后扩容成本比较高,所以当哈希表被填满时,性能下降的比较严重

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93767 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月28日
下一篇 2021年9月28日

相关推荐