关于指定资源下载的控制 [Permalink]
Thu Nov 25 00:33:32 CST 2004
因为kjava要求文件格式的特殊性,最终设计决定采用如下方案:
- 所有的权限控制都由filter处理,这样可以最大限度保证灵活性。实现上,所有的资源都会过filter。实际控制上,对于wml页面,用
/*.jwml /*.kwml /*.wml
来区分不同状态用户所能访问的页面;对于servlet,则通过他们共同父类,来进行精确到动作的访问控制(参看下面那个关于糟糕的'AOP'的文章)。
- 对于客户端,kjava游戏需要的两个文件(*.jad和*.jar)将会在逻辑上处于一个目录下。比如:
http://wap.didy.net/game/1.jad
http://wap.didy.net/game/1.jar
实现上,/game/*映射到一个servlet,通过path_info取得后面的/1.jar部分,然后在里面进行资源访问的逻辑细节,包括扣点,记录流水,以及读取指定资源,并用stream写到客户端。path_info是一个不错的东西,利用它可以作出灵活的应用。只要可以自由定制uri mapping的技术就能用它。当然,asp就做不到。
这里有一个细节,就是为了提供高可维护性、灵活性和扩展性,jad和jar文件(文件名不限)存储时候,只需要放入一个zip文件,而且jad文件的MIDlet-Jar-URL字段也不需要绝对路径。具体下载时候,程序会寻找正确的zip,解压,并且处理后交给客户端。将来对于图片铃声也类似处理。这样控制力很强,可以实现防止盗链、给图片打戳等高级功能。
附上kjava的jad和jar文件contenttype(mimetype):
private static final String CONTENT_TYPE_DOWN_JAD="text/vnd.sun.j2me.app-descriptor";
private static final String CONTENT_TYPE_DOWN_JAR="application/java-archive";