Grails编写断点续传服务器端
在测试Tomcat对断点续传的支持中发现,Tomcat是支持静态内容的断点续传的,但是,它无法支持动态内容的断点续传。比如我有一些客户定制化数据,只有登录的用户才能下载。如果放在静态目录下,安全就形同虚设。 因此,在Grails中一般要放在WEB-INF目录的子目录下。比如: 这样的内容需要自己创建文件,然后输出到response的输出流上。因此断点续传必须自己实现。 日志引用ASIHTTPRequest实现断点续传 发送文章为PDF
在测试Tomcat对断点续传的支持中发现,Tomcat是支持静态内容的断点续传的,但是,它无法支持动态内容的断点续传。比如我有一些客户定制化数据,只有登录的用户才能下载。如果放在静态目录下,安全就形同虚设。 因此,在Grails中一般要放在WEB-INF目录的子目录下。比如: 这样的内容需要自己创建文件,然后输出到response的输出流上。因此断点续传必须自己实现。 日志引用ASIHTTPRequest实现断点续传 发送文章为PDF
虽然看Tomcat api中提供了对断点续传的支持。但是要确定下来就需要做实验。 还是借助编写断点续传客户端代码中的示例。另外,启动Grails项目(Grails实现复杂的数据录入),先测试一下静态资源文件: 链接是: http://localhost:8080/BookProto/images/grails_logo.png Grails降级后(Grails从1.4m1版本回退到1.3.7)后会不会使用的是jetty啊,测试一下: 日志引用Grails编写断点续传服务器端 发送文章为PDF
在HttpClient下载二进制文件的基础是编写断点续传代码。 断点续传的基本原理是,客户端在发送请求中可加入比如这样的请求头: Range: bytes=3- 表示,要服务器发送从第四个字节开始的内容。如果服务器端支持断点续传,则返回响应的码不再是200,而是206。并且发送的内容是从第四个字节开始。 下面编写了两段代码,其中第一段,模拟正常请求,但是在读取到11个字节时停止。 日志引用测试Tomcat对断点续传的支持 发送文章为PDF
在最简单的HttpClient应用基础上,编写了从服务器下载二进制文件的示例。示例链接为: http://labs.renren.com/apache-mirror//activemq/apache-activemq/5.5.0/activemq-parent-5.5.0-source-release.zip 在国内,而且比较快,文件尺寸也合适。 日志引用编写断点续传客户端代码 发送文章为PDF
使用httpclient编写最简单的应用,获取我博客的主页。 httpclient在: http://hc.apache.org/ 首先要下载分发包。然后将分发包解压缩,将lib目录下的jar文件,导入到项目中来,比如这样: 日志引用使用ASIHTTPRequest获取文本HTTP响应HttpClient下载二进制文件 发送文章为PDF
Grails引入了flash作用域的概念。这是很多高级web框架都引入的概念了。在Servlet中没有这个作用域。如果要处理这样的场景,比如更新(新建)表单提交,又重定向到表单页面,用户看不到什么变化。 比如这个界面(详见Grails实现复杂的数据录入),保存前后,都是相同的界面和相同的链接。无法让客户看出是否真的更新了。 发送文章为PDF
本示例由Grails实现备选相关图书修改而来。前者存在一些问题,在本示例中进行了纠正。 首先说一下实现的效果,新建图书: 点击增加按钮,可从图书列表中获取相关图书: 日志引用Grails实现zip文件上传及加入文件方案查找被关联对象Grails图书示例纠正bugGrails编写断点续传服务器端测试Tomcat对断点续传的支持使用Grails flash作用域 发送文章为PDF
Android的Wifi,默认情况下是不接受组播的,见:http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html 默认情况下,应用是不接收组播信息的,这样要接收处理的报文太多,很快就会把电池用尽。要知道移动设备(特指电话一类的,平板要好得多)目前最重要的因素是电量。 要想打开组播功能,有以下几个步骤: 在Manifest文件中加入:android.permission.CHANGE_WIFI_MULTICAST_STATE,这个权限 获取到MulticastLock对象,这个对象不能直接实例化,要通过WifiManager间接得到,工厂模式 调用MulticastLock对象的acquire方法,获取到组播锁 相应的,用完组播,为了不浪费电力,要调用MulticastLock的release方法释放锁 下面写了个简单示例,通过组播发现服务器。 日志引用CocoaAsyncSocket学习 发送文章为PDF
比如,由管理员手工挑选图书的相关图书。从用户体验上,这个选择,应该是异步的。即使用ajax。 当用户在图书编辑页面时,点击相关图书的增加按钮,应该弹出对话框,对话框中包含了可选的备选图书。 这里要保证,如果是编辑(不是新的图书),那么不能包含自身,也不能包含已经选择了的相关图书。 日志引用Grails实现复杂的数据录入 发送文章为PDF
创建和更新实体,是使用相同的视图还是不同的视图。这需要权衡。如果我来写,一般我希望是相同的,即,无论是新建图书还是编辑图书,使用相同的gsp页面。好处是便于维护。如果新建和编辑的流程出入较大,也是出于维护的角度,可能会考虑使用不同的视图。 以下写个简单的使用相同视图实现创建和更新的示例。示例是在Grails开发环境下如何生成模拟测试数据基础上做了改动。 实现的效果类似这样,如果是新增,链接中没有参数,显示空白的表单页面: 否则: 日志引用Grails实现备选相关图书 发送文章为PDF
Patagonia Theme designed by Wp Themes Planet and proudly powered by WordPress