JSP的起源、运行原理、执行过程
JSP介绍——精选推荐

JSP介绍1、 JSP概述: JSP全名为Java Server Pages,其根本是⼀个简化的Servlet设计。
它是在传统的⽹页HTML⽂件中插⼊Java程序段(Scriptlet)和JSP标记(tag),从⽽形成JSP⽂件。
JSP与Servlet⼀样,是在服务器端执⾏的。
通常返回给客户端的就是⼀个HTML⽂本,因此客户端只要有浏览器就能浏览。
2、JSP处理过程:就像其他普通的⽹页⼀样,您的浏览器发送⼀个HTTP请求给服务器。
Web服务器识别出这是⼀个对JSP⽹页的请求,并且将该请求传递给JSP引擎。
通过使⽤URL或者.jsp⽂件来完成。
JSP引擎从磁盘中载⼊JSP⽂件,然后将它们转化为servlet。
这种转化只是简单地将所有模板⽂本改⽤println()语句,并且将所有的JSP元素转化成Java代码。
JSP引擎将servlet编译成可执⾏类,并且将原始请求传递给servlet引擎。
Web服务器的某组件将会调⽤servlet引擎,然后载⼊并执⾏servlet类。
在执⾏过程中,servlet产⽣HTML格式的输出并将其内嵌于HTTP response 中上交给Web服务器。
Web服务器以静态HTML⽹页的形式将HTTP response返回到您的浏览器中。
Web浏览器处理HTTP response中动态产⽣的HTML⽹页,就好像在处理静态⽹页⼀样。
3、JSP运⾏环境: 由于JSP根本上是⼀个简化的Servlet设计,所以JSP的运⾏环境与Servlet相同。
<%@page language="java" contentType="text/html; charset=UTF-8"%><html><title>Insert the title here</title><body>当前访问时间是:<%out.print(new java.util.Date().toLocaleString());%></body></html>刷新浏览器访问时间也刷新在浏览器中查看源⽂件——发现每次内容都不⼀样——jsp是⼀个动态⽹页,它的动态效果实际上是服务器程序实现的(如果是⼀个静态⽹页那么每次查看源代码时内容都是⼀样的)4、JSP基本语法:4.1、JSP模版元素JSP页⾯可以按照编写HTML页⾯的⽅式来编写,其中可以包含HTML⽂件的所有内容,在静态的HTML中嵌套JSP的其他各种元素来产⽣动态内容和执⾏业务逻辑。
jsp的工作原理是什么意思

jsp的工作原理是什么意思
JSP(JavaServer Pages)是一种用于在服务器端生成动态网页
的技术。
其工作原理如下:
1. 客户端请求一个包含JSP标记的网页。
2. 服务器接收到请求后,将JSP文件翻译为Java Servlet。
3. Servlet被编译为Java字节码,并由Java虚拟机执行。
4. 运行时,Servlet生成动态内容并将其插入HTML页面中。
5. 服务器将生成的动态网页发送回客户端,用于显示。
JSP的工作原理主要涉及三个组件:编译器(JSP编译器),
容器(Servlet容器)和Java虚拟机。
编译器将JSP文件翻译
为Java Servlet,并将其编译为可由Java虚拟机执行的字节码。
容器负责管理和执行Servlet,并在运行时生成动态内容。
最终,Java虚拟机将执行生成的Servlet,并将动态生成的网页
发送回客户端。
jsp工作原理

jsp工作原理JSP(JavaServerPages)是一种由Java脚本技术实现的Web服务器端脚本技术,它可以把HTML(Hypertext Markup Language,超文本标记语言)与Java程序混合在一起。
它可以保证Java编程技术能够和HTML技术以及某些Web服务器实现结合,以创建有效的Web 应用程序。
JSP原理分为两个主要部分,即Java脚本技术和HTML技术。
Java 脚本技术提供Web服务器特定的Java类。
HTML技术用来创建网页,它与Java脚本技术结合的过程称为Web页面生成。
Java脚本技术和HTML技术可以在同一个文件中互操作,从而使Web应用程序更加有效。
JSP文件由两种类型的元素组成:JSP标记和JSP表达式。
JSP标记和JSP表达式都是由JSP编译器解析的,它们用于处理从客户端发布到Web服务器端的数据。
JSP标记是用于控制JSP页面的元素,用于创建HTML文档;而JSP表达式是用于从JSP页面中提取数据的元素,用于检索从客户端发送来的数据。
当用户使用Web浏览器访问JSP文件时,Web服务器用编译器来将JSP文件转换为Java类文件,接着Web服务器负责将这些Java类文件用Web浏览器语言转换成HTML页面,然后发送给客户端的Web 浏览器。
JSP文件的执行过程可以简单地描述为:Web服务器接收客户端的请求;Web服务器使用JSP编译器将JSP文件转换为Java类文件;接着Web服务器负责将这些Java类文件用Web浏览器语言转换成HTML页面;最后Web服务器将转换得到的HTML页面发送给客户端的Web浏览器。
而在这个过程中,Java类文件将使用JSP标记解析数据,JSP表达式将处理从客户端发送来的数据。
jsp

判断指定的HTTP文件头是否存在
sendError
向客户端发送错误信息
setHeader
设定指定名字的HTTP文件头的值
sendRedirect
重定向客户端的地址
• Out对象:是向客户端发送数据,表示输出流。
常用方法:
方法
描述
Close flush Clear clearBuffer getBufferSize getRemaining isAutoFlush newLine print
getScheme getServerName getServerPort
返回发送请求的接口程序的完全限定的 主机名 返回发出请求的 URL 的机制 返回接收请求的服务器的主机名 返回接收请求的端口
• Response:对客户端的响应对象
常用方法:
getCharacterEncoding 返回用于MIME编码的字符集合
isNew
检查是否客户端参加了会话
putValue
将指定的对象和使用指定名字的会话应用 层数据相连
setAttribute
以键/值的方式,将一个对象的值存放到 session 中
getAttribute
根据名称去获取session中存放对象的值
ห้องสมุดไป่ตู้
removeAttribute 移除session中存放对象的值
1. JSP介绍 近年来,随着Internet/Intranet建网技术的飞速发展和在世界
范围内的迅速普及,计算机应用程序已从传统的桌面应用转到 Web应用。基于B/S(Browser/Server)架构的3层开发模式逐 渐取代C/S(Client/Server)架构的开发模式,成为开发企业 级应用和电子商务普遍采用的技术。在Web应用开发的早期, 主要使用的技术是CGI?ASP?PHP等。之后,Sun公司推出了基 于Java语言的Servlet+Jsp+JavaBean技术。相比传统的开发技 术,它具有跨平台?安全?有效?可移植等特性,这使其更便于 使用和开发。
JSP基本语法、JSP运行原理04

JSP基本语法、JSP运行原理
JSP是如何运行的
JSP基本语法、JSP运行原理
JSP是如何转换成Java
JSP基本语法、JSP运行原理
如何将静态页面转换为动态页面
• Step1,拷贝静态页面代码至JSP页面 • Step2,添加page指令pageEncoding和contentType • Step3,修改页面内容与目标页面一致 • Step4,将需要动态生成的内容删除,替换为Java代码
- 指令
- 隐含对象
JSP基本语法、JSP运行原理
JSP页面中的HTML代码
• JSP页面中的HTML包括: -HTML标记 -CSS -JavaScript • 像编写HTML页面一样编写即可
• 作用:控制页面在浏览器中显示的效果
• 转译成Servlet时的规则 -成为Servlet中的service()方法的out.write语句
JSP基本语法、JSP运行原理
JSP基本语法、JSP运行原理
为什么有JSP规范
• Servlet技术产生以后,在使用时最麻烦的是使用大量的out.print语句输出页面。这样的形式在 系统变更、维护、预览效果时都不能方便快捷的完成任务,于是推出JSP这种技术,用来将 Servlet中负责显示的语句抽取出来
JSP页面中的隐含对象
• 什么是隐含对象? -容器自动创建,在JSP文件中可以直接使用的对象 • 作用: -JSP预先创建的这些对象可以简化对HTTP请求、响应信息的访问
JSP基本语法、JSP运行原理
JSP页面中的隐含对象
JSP基本语法、JSP运行原理
JSP页面中的隐含对象
• JSP页面中可适用的隐含对象如下:
• 作用:用于导包、设置页面属性 • 例如: <%--导包--> <%@ page import = “java.util.*” %> <%@ page import = “java.util.*,java.sql.*” %>
JSP

05
XML标签
Apache Tomcat安装JSTL库步骤如下: 使用任何库,你必须在每个JSP文件中的头部包含<taglib>标签。
核心标签是最常用的JSTL标签。引用核心标签库的语法如下: <%@ taglib prefix="c" uri="/jsp/jstl/core" %>
语言特点
ห้องสมุดไป่ตู้
优点
缺点
(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意 环境中扩展。相比ASP的局限性JSP的优势是显而易见的。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载 均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命 力。
标准脚本变量 以下是永远可用的脚本变量:
有三个基本的脚本元素,作用是使JAVA代码可以直接插入servlet.
JSP动作是一系列可以调用内建于网络服务器中的功能的XML标签。JSP提供了以下动作:
技术方法
为了快速方便地进行动态网站的开发,JSP在以下几个方面做了改进,使其成为快速建立跨平台的动态网站 的首选方案。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。 JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML 或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被 其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由 Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
jsp运行原理解析
一、 jsp入门java server page1. web资源的运行原理html:静态web资源,DefaultServlet读取html文件,通过response输出给IE浏览器Servlet:动态web资源,web容器(Servlet引擎)解析web.xml文件,找到url 对应的java类通过反射创建Servlet对象,调用service方法Class.forName(“cn.itcast.servlet.Servlet1”).newInstance();jsp: 动态web资源jsp页面在第一次被访问的时候,web容器(jsp引擎)会将jsp翻译成一个Servlet,然后调用servlet的service方法jsp 翻译后的Servlet会被放到%tomcat安装目录%\work\Catalina\localhost\webcontext当jsp页面被再次访问的时候,web容器会去直接调用Servlet的service方法,所以通常来讲 jsp 只是在第一次被访问的时候比较慢如果jsp页面做了修改,此时web容器会重新翻译jsp2. jsp 是什么实际上 jsp 就是 Servlet ,只是提供了一种比较直观的书写方式,因为写jsp就像在写Htmljsp中可以写 java 代码, 有两种写法1) jsp 脚本表达式内容会被放到 out.print() 里面输出个浏览器<%=new Date() %>2) jsp脚本片段内容会原封不动地被翻译到 Servlet 的service方法中<%// java 代码%>3. jsp 和 Servlet的区别1) Servlet 适合写java代码,因为Servlet就是一个java类在开发中使用Servlet对用户发送的请求进行处理并做出响应2) jsp 适合做数据美化,作为数据显示模板因为jsp页面直接书写HTML标签3) 项目中的web层通常使用mvc设计模式 Servlet+jsp+javabean其中, Servlet做控制器,处理用户请求jsp作为显示模板javabean 作为封装数据的实体4) 如何养成一种良好的编码风格在Servlet中应避免做任何的数据输出在 jsp 中应避免去直接书写java代码, 而实际上要做到这点很难, 所以需要用到el 和 jstl二、 jsp语法1. 模板元素在 jsp 页面中所有的 html 标签部分被称作模板元素,用于对整个网页进行布局2. jsp脚本jsp中的java代码被称作jsp脚本有三种形式1) 脚本表达式被翻译到 out.print() 方法中<%=new Date() %>2) 脚本片段被翻译到 service 方法中<%for(int i=0; i<10; i++) {System.out.println(i);}%>3) jsp 声明被翻译到 service 方法外面写成员变量\成员方法\静态代码块<%!private String name;static {.......}%>3. jsp指令include指令用于包含一个页面taglib 指令用于引入标签库文件page指令用于向jsp引擎说明jsp的页面情况page指令一般都放在页面的开头,但是不管放在哪都对整个页面起作用page指令常用的主要有一下几个:1) import 导包,导入多个包时需要以“,”隔开也可以分作多条指令书写2) session 说明是否使用session默认值为true,被翻译的Serlvet中会自动获得Session如果将该值指定为false 被翻译的Servlet的service方法中将不获取session3) errorPage 指定错误跳转的页面在 web.xml 文件中同样可以配置错误页面可根据异常类型或错误编码进行配置error-page4) pagaEncoding通知jsp引擎在翻译jsp的过程中以什么编码方式来解码jsp文件通知 Servlet引擎 response编码方式,相当于 response.setContentType() 说白了只要给jsp指定了 pageEncoding=”utf-8”jsp引擎在翻译jsp时, 就会自动加上一句response.setContentType(“text/html;charset=utf-8”)扩展 : jsp 乱码问题在 tomcat6 以后jsp就没有乱码问题了, 如果是使用tomcat5 才会出现乱码问题jsp 乱码解决告诉jsp引擎jsp页面是什么码,这样翻译才不会错告诉response用什么码编码再发给浏览器三、 jsp 九个隐式对象 (笔试)1. 面试题:列举出jsp页面的九个隐式对象,并加以说明2. out 对象JspWriter类型, 带缓冲的字符流 (包装流) BufferedWriter对response.getWriter() 进行了包装,提供了缓冲区,默认大小8KB写入该流的数据最终会被刷新到response , 调用response.getWriter().write() 方法什么情况下 JspWriter 会将数据刷新1) 缓冲区写满(默认大小为8kb, 可以在page指令中通过 buffer属性设置缓冲区大小)2) jsp 页面结束(此流会被关闭,数据刷新到底层的流)注意:1)jsp中输出数据尽量使用 out 不要使用response直接获得流输出原因在于, 写入 out 的数据会进缓冲区再刷新到response, 如果两个都用,会导致后写的数据显示在前面2)jsp 页面结束时会自动调用 response.getWriter() 将数据刷新所以在jsp中不要调用 getOutputStream()当然也不方便做文件下载结论:在jsp中用out输出数据3. pageContext对象主要功能,用于获得其他8大隐式对象这样做的意义:需要移除jsp中的java代码,就需要将java代码写到一个java类的成员方法中,然后想办法在jsp页面中调用该方法,以达到代码复用的目的由于在jsp中的java代码难免会访问8个隐式对象,因为这些对象都是和web开发相关的对象要移除这部分java代码就需要将8个对象传递给java类的方法,为了方便,我们通常的做法是只传递一个pageContext对象过去,这样在方法中就可以通过该对象很轻松地获得其他8个对象了pageContext 也是一个域对象,但只是在当前jsp页面有效重点:1) 默写9个对象, (具体描述9个对象怎么用)2) 理解pageContext对象的意义 (获得其他8个对象)pageContext 有个特殊的方法 findAttribute()四、 web开发中的四个域(重点)范围由小到大: page(jsp有效) request(一次请求) session(一次会话) application(当前web应用)page : PageContext对象request : request对象session : session对象application : ServletContext对象1. 这4个对象的生命周期?生命周期就是指对象的创建到销毁的期间page: jsp 页面被执行,生命周期开始,jsp 页面执行完毕,生命周期结束request : 用户发送一个请求,开始,服务器返回响应,请求结束,生命周期结束session : 用户打开浏览器访问,(getSession方法被调用)创建session(开始),session超时或被声明失效,该对象生命周期结束application: web应用加载的时候创建(开始), web应用被移除或服务器关闭,对象销毁(结束)2. 四个域的作用范围什么是域?为什么把这4个对象叫做域对象呢?域:即范围的意思web中的域对象,可以存储对象,在作用范围内都可以取到内部是Map集合的实现 Map<String, Object>class PageContext {private Map map = new HashMap();private HttpSession session;……}page: 只在当前jsp页面有效request: 只在当前请求有效,每次请求分别对应不同的request域对象// session: 默认情况下,同一个浏览器来访问有效(发送同一个sessionid) session :只在一次会话中有效,会话结束就无法取到数据了 (特殊情况,发送Cookie) application :在一个web应用中有效 (只要服务器不关,web应用不移除就可以取数据)四个域对象的范围由小到大排列依次为: page request session application3. 哪种情况下用哪种域对象。
1.JSP原理
一、什么是JSP?JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
二、JSP原理2.1、Web服务器是如何调用并执行一个jsp页面的?浏览器向服务器发请求,不管访问的是什么资源,其实都是在访问Servlet,所以当访问一个jsp页面时,其实也是在访问一个Servlet,服务器在执行jsp的时候,首先把jsp翻译成一个Servlet,所以我们访问jsp时,其实不是在访问jsp,而是在访问jsp翻译过后的那个Servlet,例如下面的代码:index.jsp1<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%> 2 <%3String path = request.getContextPath();4String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";5 %>67<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">8<html>9<head>10<base href="<%=basePath%>">1112<title>First Jsp</title>1314</head>1516<body>17 <%18 out.print("Hello Jsp");19 %>20</body>21</html>当我们通过浏览器访问index.jsp时,服务器首先将index.jsp翻译成一个index_jsp.class,在Tomcat服务器的work\Catalina\localhost\项目名\org\apache\jsp目录下可以看到index_jsp.class的源代码文件index_jsp.javaindex_jsp这个类是继承 org.apache.jasper.runtime.HttpJspBase这个类的,HttpJspBase类是继承HttpServlet的,所以HttpJspBase类是一个Servlet,而index_jsp 又是继承HttpJspBase类的,所以index_jsp类也是一个Servlet,所以当浏览器访问服务器上的index.jsp页面时,其实就是在访问index_jsp这个Servlet,index_jsp这个Servlet 使用_jspService这个方法处理请求。
JSP的介绍
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术有点类似ASP技术,它是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
一.JSP简介JSP技术使用java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。
网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。
JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。
插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP与javaServiet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。
目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
javaserviet是JSP的技术基础,而且大型的Web 应用程序的开发需要Java Servlet和JSP配合才能完成。
JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言JSP可用一种简单易懂的等式表示为:HTML+Java+JSP标记=JSP。
第1章JSP简介
Y Y
JSP Servlet加 载 ?
生 成 jsp的 Servlet
N 加 载 Servlet
编 译 Servlet
生成响应
发送请求
图 1-3 JSP与 Servlet关 系 示 意 图
1.3 配置JSP运行环境
1.3.1 安装J2SDK 1.3.2 安装Tomcat 1.3.3 JSP页面测试
JSP运行原理图
w eb 服 务 器
JSP 页 面 1
浏
2
览
器
产 生 Serv e lt 源 代 码
4
3
经 编 译 的 Serv e lt
图 1-2 . JSP 主 要 执 行 过 程
1.2.3 JSP与Servlet关系
JSP的实现是基于Servlet的,JSP页面在运行之 前要被解释成Java Servlet
1.4 设置Web服务目录
根目录: E:\Tomcat5.5\webapps\Root webapps下的任何一个子目录都可以作为一个
Web服务目录 修改Tomcat服务器安装目录下conf目录中的
server.xml文件来设置新的Web服务目录。
1.4 设置Web服务目录
1.5 本章小结
第1章JSP简介
JSP特点(续)
2. 搭配可重复使用的组件。JSP技术可依赖于 重复使用跨平台的组件(如:JavaBean或 Enterprise JavaBean组件)来执行更复杂的 运算、数据处理。开发人员能够共享开发完 成的组件,或者能够加强这些组件的功能, 让更多用户或是客户团体使用。
JSP特点(续)
1.2 JSP执行原理
1.2.1 第一个JSP页面 1.2.2 JSP运行原理 1.2.3 JSP与Servlet的关系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP起源、JSP的运行原理、JSP的执行过程
一、JSP起源
在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产
生和改变。如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其
中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码
将非常臃肿,编写和维护都将非常困难。对大量静态内容的美工设计和相关
HTML语句的编写,并不是程序员所要做的工作,程序员对此也不一定在行。网
页美工设计和制作人员不懂Java编程,更是无法来完成这样的工作。
为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server
Pages)技术作为解决方案。JSP是简化Servlet编写的一种技术,它将Java代码
和HTML语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用
Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编
写。
建立对JSP的直观认识
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全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种
用于开发动态web资源的技术。
JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,
html只能为用户提供静态内容,而Jsp技术允许在页面中嵌套java代码,为用户
提供动态数据。
Jsp快速入门:在jsp页面中输出当前时间。
不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技
术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控
制器组件来使用,而把JSP技术作为数据显示模板来使用。
其原因为,程序的数据通常要美化后再输出:
让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。
让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可
读性差,难以维护。因此最好的办法就是根据这两门技术的特点,让它们各自负
责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数
据的显示jsp来做。
二、JSP的运行原理
WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把
该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是一个Servlet程序,
它负责解释和执行JSP页面。
每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接
着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器
(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP
页面翻译成的Servlet程序。
Tomcat 5.x把为JSP页面创建的Servlet源文件和class类文件放置在
“
将JSP页面翻译成的Servlet的包名为org.apache.jsp.
JSP规范也没有明确要求JSP中的脚本程序代码必须采用Java语言,JSP中的
脚本程序代码可以采用Java语言之外的其他脚本语言来编写,但是,JSP页面最
终必须转换成Java Servlet程序。
可以在WEB应用程序正式发布之前,将其中的所有JSP页面预先编译成Servlet
程序。
分析JSP所生成的Servlet代码
JSP页面翻译成的Servlet继承了org.apache.jasper.runtime.HttpJspBase类,
HttpJspBase类是HttpServlet的一个子类,因此JSP页面翻译成的Servlet是
HttpServlet的一个孙子类。HttpJspBase类实现了javax.servlet.jsp.HttpJspPage接
口中的部分方法,因此,HttpJspBase类是抽象的。
SUN公司为JSP的WEB容器开发商和JSP页面开发人员提供了一套专门应用于
开发JSP程序的Java类,这套Java类被称为JSP API。HttpJspPage接口和JspPage
接口属于JSP API,在HttpJspPage接口中只定义了一个_jspService方法,但它继
承了JspPage接口,JspPage接口中定义了两个方法:jspInit()和jspDestroy()。
HttpJspBase的init方法调用了jspInit和_jspInit方法,destroy方法内部调用了
jspDestroy和_jspDestroy方法,service方法内部调用了_jspService方法。在
HttpJspBase中实现的init、service和destroy方法都被声明成了final类型。
JSP页面中的位于<% %>外面的每行和紧临<%%>两边的每段文本被转换成以
这些文本作为参数的一条条out.write语句,JSP脚本片断(位于<%%>内的一段
java代码)中的java代码被原封不动地搬移进了_jspService方法中的相应位置处,
JSP表达式(位于<%=和%>之中的内容)则是被转换成以其中的变量或表达式
作为参数的out.print语句。
三、JSP的执行过程
JSP的执行过程主要可以分为以下几点:
1)客户端发出请求。
2)Web容器将JSP转译成Servlet源代码。
3)Web容器将产生的源代码进行编译。
4)Web容器加载编译后的代码并执行。
5)把执行结果响应至客户端。
过程介绍
客户端发出请求,请求为JSP,web容器就会找出相应的servlet进行处理
将servlet转成字节码文件
将字节码文件加载到web容器里
这时会在web容器里建立实例
进行初始化
通过service接受请求
然后web容器会自动产生两个对象servlet和service最后进行销毁