整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JSP运行原理及运行过程

SP的工作模式是请求/响应模式,客户端首先发出HTTP请求,JSP程序收到请求后将进行处理并返回处理结果。在一个JSP文件第一次被请求的时候,JSP引擎(容器)把该JSP文件转换成一个Servlet,而这个引擎本身也是一个Servlet。JSP的运行原理如图11-4所示。

图11-4 JSP的运行原理

  JSP的运行过程具体如下。

  (1)客户端发出请求,请求访问JSP文件。

  (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果发现JSP文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。

  (3)如果转换成功,则JSP容器会将生成的Java源文件编译成相应的字节码文件*.class。该class文件就是一个Servlet,Servlet容器会像处理其他Servlet一样处理它。

  (4)由Servlet容器加载转换后的Servlet类(class文件)创建一个该Servlet(JSP页面的转换结果)的实例,并执行Servlet的jspInit()方法。jsInit()方法在Servlet的整个生命周期中只会执行一次。

  (5)执行jspService()方法处理客户端的请求。对于每一个请求,JSP容器都会创建一个新的线程处理它。如果多个客户端同时请求该JSP文件,则JSP容器会创建多个线程,使每一个客户端请求都对应一个线程。

  (6)如果JSP文件被修改了,则服务器将根据设置决定是否对该文件重新进行编译,如果需要重新编译,则使用重新编译后的结果取代内存中的Servlet,并继续上述处理过程。需要注意的是,虽然JSP效率很高,但在第一次调用时往往由于需要转换和编译,所以会产生一些轻微的延迟。

  (7)如果系统出现资源不足等问题,JSP容器可能会以某种不确定的方式将Servlet从内存中移除,发生这种情况的时候,首先会调用jspDestroy()方法,然后Servlet实例会被作为“垃圾”进行处理。

  (8)当请求处理完成后,响应对象由JSP容器接收,并将HTML格式的响应信息发送回客户端。

SP:Java Server Pages。JSP是一种网页的编码格式,不同于HTML的是JSP中是由 HTML中的标签指令 和 Java逻辑代码 拼凑而成, 其中的Java代码类似于JavaScript中的逻辑代码, 但相对比来说JSP中的Java代码更方便阅读和书写.

一:JSP的运行原理

当JSP页面被运行时,WEB容器会把请求交给JSP引擎处理,会将JSP翻译成一个_jspServlet,然后按照Servlet的调用方式来进行调用,

浏览器向服务器发请求,不管访问的是什么资源,其实都是在访问Servlet,所以当访问一个jsp页面时,其实也是在访问一个Servlet,服务器在执行jsp的时候,首先把jsp翻译成一个Servlet,所以我们访问jsp时,其实不是在访问jsp,而是在访问jsp翻译过后的那个Servlet,

二:Tomcat

Tomcat在Web中的作用:

Tomcat是Web中的容器,

当客户在Web服务器中输入请求的时候, 如果请求的动态页面, 那么Web服务器会创建一个Servlet来处理, Servlet就是Java代码, 只是在服务器端的Java代码, Servlet通过配置文件来拦截客户所发出的请求, 并进行相应的处理, 最后反馈到客户端.

在这一系列的请求中,Web服务器是如何创建出Servlet来对请求进行处理? 而Tomcat的作用就是帮助Web服务器来创建Servlet的

Tomcat是应用(java)服务器,它只是一个Servlet容器,是Apache的扩展,处理动态页面的部分

Tomcat各个文件夹的含义

  • bin:二进制执行文件。里面最常用的文件是startup.bat
  • conf:配置目录。里面最核心的文件是server.xml。可以在里面改端口号等。默认端口号是8080,也就是说,此端口号不能被其他应用程序占用。
  • lib:库文件。tomcat运行时需要的jar包所在的目录
  • logs:日志
  • temp:临时产生的文件,即缓存
  • webapps:web的应用程序。web应用放置到此目录下浏览器可以直接访问
  • work:编译以后的class文件。

当我们通过浏览器访问index.jsp时,服务器首先将index.jsp翻译成一个index_jsp.class,在Tomcat服务的work\Catalina\localhost\项目名\org\apache\jsp 目录下可以看到index_jsp.class的源代码文件index_jsp.java

index_jsp这个类是继承 org.apache.jasper.runtime.HttpJspBase这个类的,通过查看Tomcat服务器的源代码,可以知道在apache-tomcat-6.0.20-src\java\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中的HTML代码和Java代码如何发送到客户端

1:jsp中的代码是由 Java代码 和 HTML 代码组成的 但是两种不同的代码是如何实现他们的作用的?

在客户端发出请求时(请求的是动态代码) 但是客户端却只能看到HTML代码, Java代码是客户端看不到的

原因是: 请求的JSP页面中,所有的代码是通过了Web服务器(在Tomcat下)编译后的Servlet代码, 在jsp中编写的java代码和html代码都会被翻译到_jspService方法中去,在jsp中编写的java代码会原封不动地翻译成java代码,如<%out.print("HelloJsp");%>直接翻译成out.print("Hello Jsp");,而HTML代码则会翻译成使用out.write("<html标签>\r\n");的形式输出到浏览器。在jsp页面中编写的html排版标签都是以out.write("<html标签>\r\n");的形式输出到浏览器,浏览器拿到html代码后才能够解析执行html代码。

当执行_jspService方法处理请求时,就会执行在jsp编写的java代码了,所以Jsp页面中的java代码服务器是通过调用_jspService方法处理请求时执行的。(_jspService中的Java代码是实现动态页面的逻辑基础)

yEclipse官方最新版免费下载|Myeclipse汉化下载.MyEclipse-功能最全面的Java IDE. - MyEclipse官方中文网

如果您有HTML或JSP文件要编辑,这里将介绍如何编辑。查找以下信息:

  • 编辑源代码
  • 大纲和属性视图
  • 参数页面

该功能在MyEclipse中是可用的。

一、HTML / JSP编辑器

要编辑HTML或JSP文件,请执行以下操作当中的一个:

  • 双击HTML或JSP文件。
  • 右键单击HTML或JSP文件,并选择Open。

HTML编辑器有以下模式:

  • 源模式 — 源模式是HTML和JSP代码的源代码编辑器,它包括智能内容辅助、行编号、彩色语法高亮显示、格式操作、实时验证、在输入时标记有问题的源代码以及代码格式化。
  • 设计模式 — 设计模式具有双面板视图,顶部面板为设计模式,底部面板为源模式。设计模式为所见即所得的可视化编辑模式,设计画布允许选择、复制、剪切、粘贴和使用拖放重新定位Web UI控件。此模式包括一个设计调色板,其中包含可以添加到设计画布的UI Web控件。
  • 预览模式 — 预览模式允许用户快速查看页面在浏览器中的外观,预览模式从设计模式加载当前源代码,即使编辑器内容尚未保存。HTML源代码以预览模式呈现,并且“扎根”于资源所在的位置。如果HTML文档中的图像相对于HTML页面的当前位置,则图像将在预览中正确呈现。

打开文件时,默认模式是Design(设计),通过单击编辑器底部的适当选项卡来更改模式。

本文概述了使用源代码编辑器编辑HTML时最重要的概念和特性。

二、编辑源代码

用户可以从源代码模式或设计模式访问源代码,设计模式具有双面板视图,设计模式位于顶部面板,源模式位于底部面板。

直接编辑源代码时,可以使用以下功能:

  • 语法、颜色和高亮
  • 智能代码完成和内容辅助
  • HTML验证
  • 源格式和清理
  • HTML模板
  • HTML片段

2.1 智能代码完成和内容辅助

在整个源代码中,编辑器提供特定于内容的代码帮助。

Tag names(标记名称):Code assist根据当前上下文提供可用HTML标记的列表。

Tag attributes(标记属性):代码辅助提供了特定于正在编辑的标记属性列表。

Attribute values(属性值):在适当的时候,代码帮助会为您提供一个已知可能值的列表。

2.2 HTML验证

有两种类型的HTML验证:“输入时”和“资源更改”。

“输入时”:当对HTML文档进行更改时,编辑器总是检查HTML语法的有效性,就像Java编辑器一样。

注意:这种类型的验证错误和警告不会出现在Problems视图中。

资源更改:当资源被修改(保存、移动、复制或导入)时,资源构建器将对资源执行HTML验证。

注意:您可以通过从菜单中选择Window>Preferences,展开MyEclipse并选择Validation来设置验证参数。

2.3 源格式化和清理

要快速格式化源代码,请右键单击编辑器,并选择Source>Format。格式化器不会在内部修改HTML标记元素,它只调整HTML元素的缩进和间距。

使用Cleanup Document选项进行高级格式化和样式调整,允许您更改标记名称和属性的大小写,还有其他选项可以插入所需的标记和属性。要使用此选项,请在编辑器中右键单击并选择Source>Cleanup Document,选择Format source复选框,来将Format Document操作作为文档清理的一部分。