lidonghe 发表于 2017-1-7 07:18:40

Apache Wicket 学习(下载文件)续

  为了充数,新开一页~~
  这次记下的东西包括对 WebResponse 重写时注意的东西,以及在 HTTP 传递文件的时候,Response 头信息的使用。
  在类: org.apache.wicket.protocol.http.WebResponse 中
  有成员变量 private final HttpServletResponse httpServletResponse,但这个变量是 final 并且为 private
  那根据功能扩展 WebResponse 的时候就直接使用带有 httpServletResponse 的构造方法来 生成新的类,不然在继续使用wicket框架的时候,wicket本身的一些方法会对 httpServletResponse 操作(因为毕竟最终还是 Request 和Response 在起作用,只是上面封装了一些东西,方便开发),而wicket虽然回去判断 httpServletResponse是不是空,但它不抛异常,这个都已经是底层的东西,关系到HTTP信息处理是否正常,竟然不抛异常?也许新的wicket版本会把这个我认为的漏洞填补吧。但对于新手来说,不注意这一点的话,很难找到出错的原因。
  HTTP Response 在传递文件的时候会涉及如下的 Header 信息,这里是完整的 HTTP 的 Header
  

Content-TypeResponse MIME内容类型,这里有时还会包含charsetContent-LengthResponse body 的长度 (8位字节的个数)Content-Disposition  有了这个 浏览器就会 弹出个对话框,包括下载文件的名称,以让用户保存文件
  Content-Disposition: attachment; filename=fname.ext
Transfer-Encoding  Response body 的格式
  chunked, compress, deflate, gzip, identity
  (在Wicket中,如果你将通过 Response 返回的 Stream 的长度设置为-1,那 wicket 就会将返回的 HTTP Response 中添加上
  transfer-encoding: chunked)
页: [1]
查看完整版本: Apache Wicket 学习(下载文件)续