为什么要有JSP?
在很多动态网页中,绝大部分内容是不需要改变的,只有局部内容需要动态改变。如果使用Servlet来输出只有局部内容改变的动态网页,其中所有的静态内容也需要用Java编写,整个servlet代码将很臃肿。同时对大量静态内容的设计和相关HTML语言的编写,程序员不一定在行。而Java代码美工也不一定会,于是产生了JSP,JSP是一种简化servlet编写的技术,它将Java代码和HTML语言混合在同一个文件中编写,只对网页中动态产生的内容用Java编写,对固定不变的内容采用用静态HTML页面的方式编写。
JSP页面是由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件,JSP 页面的文件扩展名必须为.jsp。
在JSP页面中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本片段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。
JSP中的Java代码可以使用out.println语句将其他Java程序代码产生的结果字符串输出给客户端,也可以使用System.out.println语句将它们打印到命令行窗口。
JSP文件就像普通的HTML文件一样,它们可以放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中,JSP页面的访问路径与普通HTML页面的访问路径形式也完全一样。
在JSP页面中也可以使用一种称之为JSP表达式的元素,只需将要输出的变量或表达式直接封装在<%= 和 %>之中,就可以向客户端输出这个变量或表达式的运算结果。在JSP表达式中嵌套的变量或表达式后面不能有分号。
JSP的运行原理:
F:\eclispe\place\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\webTest\org\apache\jsp
找到Eclipse工作目录下的.metadata文件的.......找到如上的一个路径即可。下面有2个文件,一个是Xxx.java文件,一个是Xxx.class文件。Xxx就是你写的JSP的命名
打开.java文件,你会发现你写的JSP继承了一个HttpJspBase,然后在Eclipse中找到该类关联上apache-tomcat-6.0.18-src源码,会发现该类继承了HttpServlet,里面也有相应的init(),destroy()方法,在下面的trycatch里面可以发现你写的Java代码。Java代码上面和下面则是输出HTML语句。
所以,其实JSP就是一个servlet类。
WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。
每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
JSP规范也没有明确要求JSP中的脚本程序代码必须采用Java语言,JSP中的脚本程序代码可以采用Java语言之外的其他脚本语言来编写,但是,JSP页面最终必须转换成Java Servlet程序。
可以在WEB应用程序正式发布之前,将其中的所有JSP页面预先编译成Servlet程序。
本文探讨了为什么需要JSP,指出在动态网页中,使用Servlet处理全部内容可能导致代码臃肿。JSP应运而生,允许将Java代码与HTML混合,使动态内容与静态内容分离,简化开发。接着,文章将介绍JSP的运行原理。

被折叠的 条评论
为什么被折叠?



