友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

JSP入门教程(DOC格式)-第37章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




方式进行加密(毫无意义的做法,把 jsp 唯一的灵活性都浪费了)。  



演示程序在 99…02 目录下,需要安装ant 之后才可能执行 run。bat 将 jsp 转换成 

servlet。  



在了解如何手工转换 jsp 之后,我们可以来讨论在数据库中保存 jsp 的问题了。  



将 jsp 从数据库中提取出来,将这些数据保存成本地文件,使用 jspc 转换成 

servlet 再编译为 class,最后使用自定义的ClassLoader 读取到 jvm 中执行。  



难点在于生成文件要保证互不影响和自定义 ClassLoader 如何加载管理这些生 

成的 class。  



这个问题是典型的无用研究之一,任何想获得灵活模板功能的同学都应该亦然决 

然的抛弃 jsp,jsp 这种先解释编译再执行的机制不仅没有帮助我们提升效率, 

反而大大增加技术难度并降低响应效率。需要自定义模板的同志务必考虑 

velocity; freemarker 此类模板引擎或者 groovy 一类脚本语言,这时使用 jsp 

无异于给自己带上一副沉重的枷锁。  



16。3。 胡乱解释一下 session  



会话都保存在服务器端。  



每个用户打开浏览器就服务器就会给它生成一个 sessionId,浏览器或者把这个 

sessionId 放到 cookie 里,或者每次请求都带在 url 后边(自动的),然后服 

务器就拿到这个 sessionid,在内存里翻啊翻啊,翻出对应的 session 来,就这 

么对应上的。  



ServletContext 和 session 就没多大关系了,虽然 ServletContext 也是在服务 

器端,每个 web 应用发布的时候,就要创建这么一块空间放置 ServletContext, 



                               146 / 148  


…………………………………………………………Page 147……………………………………………………………

                                          



这个 web 应用中的所有的 servlet; jsp; filter; listener 都可以访问这块空 

间。你可以把他看作是一个全局变量,所有共享数据都放到里边。  



16。4。 下载文件乱码  



参考 如何在 PHP 下载文件名中解决乱码。  



基本代码如下:  



 0) {  

    fileName = 〃attachment; filename=”〃 +  

java。URLEncoder。encode(fileName; 〃utf…8〃) + 〃。txt”〃 ;  

} else  {  

    fileName = 〃attachment; filename*=”utf8''〃 +  

java。URLEncoder。encode(fileName; 〃utf…8〃) + 〃。txt”〃 ;  

}  

String content = 〃xml 格式内容。〃  ;  

response。setContentType(〃application/octet…stream;charset=UTF…8〃);  

response。setHeader(〃Content…Disposition〃; fileName);  

out。print(content);  

%》  

          



按照 RFC2231 的定义, 多语言编码的 Content…Disposition 应该这么定义:  



Content…Disposition: attachment;  

filename*=〃utf8''%E4%B8%AD%E6%96%87%20%E6%96%87%E4%BB%B6%E5%90%8D。txt 

〃  



filename 后面的等号之前要加 *  



filename 的值用单引号分成三段,分别是字符集(utf8)、语言(空)和 urlencode 

过的文件名。  



最好加上双引号,否则文件名中空格后面的部分在 Firefox 中显示不出来。  



使用 urlencode 对非 iso…8859…1 字符进行编码。  



                                      147 / 148  


…………………………………………………………Page 148……………………………………………………………

                                                



经过试验,发现几种主流浏览器的支持情况如下:  



    IE6  



attachment; filename=〃〃  



    FF3  



attachment; filename=〃UTF…8 文件名〃  

attachment; filename*=〃utf8''〃  



    O9  



attachment; filename=〃UTF…8 文件名〃  



    Safari3(Win)  



貌似不支持?上述方法都不行  



                                            148 / 148  


………………………………………………………………………用户上传之内容结束……………………………………………………………………………………

返回目录 上一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!