有在 servlet 中显式调用 getSession()方法时才创建 session。
对现象的理性说明
1。 只有执行了 getSession()才会生成 session。(此处无参数,默认与
getSession(true)功能相同)。
2。 jsp 转换成 servlet 后,生成的 servlet 代码中包含 getSession()。
例子中见 tomcat 目录下,
workCatalinalocalhost99…01orgapachejsptest1。jsp,其中包含
了pageContext。getSession()。
142 / 148
…………………………………………………………Page 143……………………………………………………………
3。 我们可以在 jsp 中使用禁止生成 session
的代码,这样即使访问此 jsp 页面,也不会创建 session。
例子中见 tomcat 目录下,
workCatalinalocalhost99…01orgapachejsptest2。jsp,这里已经
看不到 getSession()的代码了。
因为不会生成默认的 session,在这个 jsp 页面里
就无法直接使用 session 变量了。下面的代码会导致 jsp 无法编译的错误。
访问 test3。jsp 会出现 500 服务器内部错误
143 / 148
…………………………………………………………Page 144……………………………………………………………
在使用过的页面里只能使用 getSession()手工获
得 session 才能使用了。
演示用代码放在 99…01 目录下,TestServlet 映射到/请求路径,test1。jsp 会自
动创建 session,test2。jsp 禁用了 session,test3。jsp 直接使用 session 会出
现错误。
这个问题是典型的无用研究之一,实际工作中会有人使用 getSession(false)
吗?
16。2。 对手工将 jsp 转换为 servlet 的无用讨论
有同学提到了一个问题:让用户自己编写 jsp 上传到服务器,服务器接收后保存
入数据库,在用户访问的时候从数据库中取出对应的 jsp,运行后返回响应。
这个效果从理论上讲是可以实现的,我们已经对 jsp 的运行机制非常熟悉了,
第 6。2 节 “jsp 与 servlet 的关系”,我们只需要将 jsp 转换为对应 servlet
的 java 文件,再编译为 class,最后使用 ClassLoader 加载生成的 class 执行
即可。
好消息是 tomcat 为我们提供了批量转换 jsp 的工具,使用以下的 ant 脚本就可
以将指定目录下的 jsp 转换成对应 servlet 的 java 代码。(ant 的使用方法已
经超出了本文的讨论范围,如果有兴趣请自行参阅官方网站。
http://ant。apache。org/)
144 / 148
…………………………………………………………Page 145……………………………………………………………
为了顺利完成转换工作,我们需要把一系列 jar 文件放入 classpath 中:
1。 WEB…INF/lib/*。jar (星号代表所有)
2。 {java。home}/。。/lib/tools。jar ({java。home}表示 jdk 安装目录)
3。 {CATALINA_HOME}/server/lib/*。jar ({CATALINA_HOME}表示 tomcat
的安装目录)
4。 {CATALINA_HOME}/mon/lib/*。jar
简要介绍一下 jasper2 的配置参数。
1。 verbose=〃1〃表示打印进度信息,如果 verbose=〃0〃则不打印信息。
2。 package=〃org。apache。jsp〃表示生成 servlet 中的包名(package)。
3。 uriroot=〃。〃表示会把当前目录下的所有 jsp 都转换成 servlet。
4。 webXmlFragment=〃WEB…INF/generated_web。xml〃会在 WEB…INF 目录下生
成 servlet 的默认配置。
比如我们转换的test。jsp 将生成如下部分。
org。apache。jsp。test_jsp
org。apache。jsp。test_jsp
org。apache。jsp。test_jsp
/test。jsp
145 / 148
…………………………………………………………Page 146……………………………………………………………
将这部分复制到你项目中的web。xml 中就可以通过/test。jsp 请求来访问
生成的 servlet 了。
5。 outputDir=〃。/WEB…INF/src/〃表示生成的 servlet文件放在WEB…INF/src
目录下,tomcat 会自动生成 package 对应的目录,比如 test。jsp 生成的
最终路径是 WEB…INF/src/org/apache/jsp/test_jsp。java。
接着把生成的 servlet 编译成 class,这次除了 mon/lib/servlet…api。jar
以外我们还需要mon/lib/jasper…runtime。jar 加入 classpath 中,编译脚本
参考 WEB…INF/src/pile。bat。
现在可以删除 test。jsp 了,web。xml 中已经将/test。jsp 请求转发至对应的
servlet 处理,我们甚至不需要修改任何链接。
jspc 的主要功能在于预先编译 jsp 发现其中的语法错误,有些公司也使用这种
方式进行加密(毫无意义的做法,把 jsp 唯一的灵活性都浪费了)。
演示程序在 99…02 目录下,需要安装ant 之后才可能执行 run。bat 将 jsp 转换成
servl
小说推荐
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 最新章:第17章
- asp基础入门篇(DOC格式)
- ASP入门与实例-IIS的安装与配置1、运行环境与软件要求Windows 2000 以上(不包括Windows XP Home版)IIS 4.0 以上Microsoft Access 2000Dreamweaver MX2、IIS的安装与配置a.安装IIS若操作系统中还未安装IIS服务器,可打开"控
- 最新章:第23章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- Word2003使用技巧大全(DOC格式)
- Word使用技巧(二)表格使用大全更新时间:2009-11-16 19:32:15 本文共阅读了257次 作者:xushezheng 文章来源:电教组字体大小:大中小一、快速插入表格 拖动“插入表格”能插入的最大表格跟该图标位置、显示分辨率有关。如使用800×600分辨率时最大为18行×28列 二、
- 最新章:第1章
- Excel word ppt office使用技巧大全(DOC格式)
- -Page 1-Excel_word_ppt_使用技巧大全(完全版)Excelwordppt使用技巧大全(2011新版本)I-Page 2-Excel_word_ppt_使用技巧大全(完全版
- 最新章:第338章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章