在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。(Servlet是位于Web 服务器内部的服务器端的Java应用程序,Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。 servlet是在服务器上运行的小程序 ,它的工作模式:1.客户端发送请求至服务器 2.服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器 3.服务器将响应返回客户端)而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。
JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,先初始化,在调用方法处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.
但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。 如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。 虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。
学习体会:
1.JSP是一种表示层的技术,我认为必须熟知JSTL和EL表达式。学JSP一定要对这些脚本元素很熟悉:
(1) 声明脚本元素
(2) 表达式脚本元素
(3) scriptlet脚本元素
可以再这些脚本元素中直接插入Java代码,用于流程控制和应用逻辑,看似十分简单和方便,但恰恰这些脚本元素污染了表示层。这些脚本元素是JSP早期版本遗留下来的问题,在JSP2.0中引入了EL并结合JSTL基本上解决了上述问题,这使我们可以编出不含有脚本的JSP代码,让JSP是真正意义上是用于表示。
2.JSP实质是Servlet ,究其本质来看JSP最终要编译成Java字节码即.class文件。在Tomcat下发现所有.jsp文件都被编译成.class文件,而这些类实质都是继承自Servlet。
3.java是大小写敏感的,用过其他编程语言的人最容易犯这个错误,尤其是刚上手的时候。java的调用过程都是要加括号的,一开始比较容易忽视
4.jsp中对应asp中的request.form()和request.querystring()的解决方法。
5.头疼的汉字处理问题。在其他的文章里曾说到在中文NT环境下如下语句输出会得到乱码解决方法是只要对字符串变量进行编码就可以得到正确结果。
6.在asp中经常使用到字符串判断语句,在java中String变量不是一个简单的变量而是一个类实例,不同的方法会得到不同的结果。
7. 在jsp中实现分页。符合搜索结果的多页呈现。
8.代码要调整规范便于他人阅读,方便自己修改。
9.虽然项目中应用不多,也没有连接数据库等资源,但作为jsp的学习还是很有成效的。 |
|