JSP引擎的工作原理
JSP运行环境:
执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat。把这些支持JSP的web服务器配置好后。就可以再客户端通过浏览器来访问JSP页面了。默认端口一般是7001.
JSP生命周期:
JSP处理请求的方法就是把这些请求都统一看做Servlet。由于这个原因,JSP的很多功能和生命周期,都由Java Servlet技术标准定义的。这种限制,在动态内容方面更加明显。所以学习JSP的时候,需要温习Servlet的内容和标准。
JSP网络应用服务器框架:
在符合J2EE规范的服务器构建起来之后,就可以编写JSP页面了,在HTML页面中嵌入JSP脚本,该页面就成为JSP页面了。JSP脚本用特定的标记括起来,如<%...%>,或者<JSP>…</JSP>。JSP的工作流程如下:当其读到HTML的代码的时候,就直接输出到客户端,而如果读到嵌入JSP脚本的时候,就需要对这些脚本进行另外的翻译和处理,得到输出之后再输出到客户端。
下面通过一个简单页面编写来了解JSP网络应用的框架:
1.JSP客户端交互
JSP的大部分工作就是与客户端进行交互。客户端一般指的是浏览器,它们与置于服务器端得JSP页面进行交互。JSP脚本中所有的Java语句都是在服务器执行,服务器接受客户端提交的请求,通过一定的处理之后,将结果返回给客户端,客户端得到的仅仅是HTML代码。下面是一个JSP的HelloWorld程序代码:
- <html>
- <head>
- <title>HelloWorld for JSP</title>
- </head>
- <body>
- <h1>HelloWord for JSP</h1>
- <%out.println("<h3>Hello World!</h3>");%>
- </body>
- </html>
2.交互过程的流程
在一般的客户端和服务器端的交互中,是用HTTP协议,客户端通过下面4个步骤也服务器段进行交互:
(1)客户端和服务器端建立连接
(2)发送客户端请求
(3)服务器返回应答给客户
(4)客户端关闭连接
所有的请求都是由客户端主动发出的,而服务器一直出于被动的监听状态。用户在浏览器键入要访问的地址,按回车键确认后,浏览器开始与服务器建立连接,从这时开始,就开始了一次交互过程。浏览器通过一段时间的等待后,从服务器得到响应,并且把相应的信息以HTML方式呈现给用户。用户在浏览网站的过程中,实际上包含了很多这样的交互应答过程。在客户端与JSP页面的交互过程中,只有服务器接收请求和返回应答的动作可能不一样,其他与上面过程基本一致。基本情况如下:
(1)服务器在收到一个请求后首先要分析这个请求,如果请求的页面只是一般的HTML页面,服务器就直接读出HTML页面并返回给客户端
(2)如果客户端请求的是JSP页面,服务器调用JSP引擎翻译处理所请求的JSP页面,并将翻译和处理之后的HTML返回给客户端
(3)如果遇到JavaBeans组件,JSP引擎将调用相应的JavaBeans组件,得到JavaBeans的返回值,最后返回给JSP页面
3.JSP引擎的工作原理
当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤:
(1)将JSP页面翻译成一个Servlet,这个Servlet是一个java文件,同时也是一个完整的java程序
(2)JSP引擎调用java编译器对这个Servlet进行编译,得到可执行文件class
(3)JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端
以上三个步骤仅仅在JSP页面第一次被访问时才会执行,以后的访问速度会因为class文件已经生成而大大提高。当JSP引擎街道一个客户端的访问请求时,首先判断请求的JSP页面是否比对应的Servlet新,如果新,对应的JSP需要重新编译。
4.对请求信息的处理
在大部分的交互过程中,一个JSP页面首先对用户提出的请求进行分析,然后从请求中得到有用的数据,比如接收用户提交的数据或者请求的方法,然后进行相应的处理。而这就需要了解得到传入参数的方法和得到用户其他信息的方法。
(1)得到传入参数的方法
在交互过程中,服务器必须从客户端得到一些数据,来帮助处理过程的进行。这些数据包括用户身份验证数据(如用户名、密码等)以及其他中要信息。而这些数据的载体,就是用户提交的请求。请求的组成主要有两部分,一是头信息。头信息包含了以下信息:请求的方法(GET和POST)、请求的URL和浏览器信息。其他信息包含了一些数据信息。
首先要了解的是GET方法发送请求时,这种方法是客户端用来向服务器段请求信息的,所以在请求中不包含信息体。用户只能把请求的内容作为参数附加在URL后面进行发送,参数之间用“&”符号隔开,如代码:一个典型的GET请求的表单get.html
- <html>
- <head>
- <title>Get</title>
- </head>
- <body>
- <h1>Get Method</h1>
- <form action = "submit.jsp" method = "GET">
- username<input name = "uername" value = "aaa"><br>
- password<inpput type = password name = "password" value = "111111"><br>
- <input type = submit value = "submit">
- </form>
- </body>
- </html>
(代码中有一个表单,表单在定义的时候,定义了属性method=“GET”,这表明表单提交的方法是GET。这个表单向服务器提交两个参数,其中一个是username,缺省值为aaa,另外一个是password,其缺省值是111111。)
这个页面只是得到了输入数据,只有submit.JSP才能实现提交这个页面的数据。这就是需要用到JSP了,代码如下:submit.JSP
- <html>
- <head>
- <title>submit</title>
- </head>
- <body>
- <h1>submit</h1>
- request method:<%=request.getMethod() %><br>
- user name:<%=request.getParameter("user") %><br>
- password:<%=request.getParameter("password") %><br>
- </body>
- </html>
在这个JSP页面中是用了JSP的内置对象request的两个方法,一个是getMethod,用来获取当前请求的类型,另一个是getParameter,用来获取指定参数的值。在get.html中单击submit按钮,就可以显示表单请求方法,用户名以及密码等信息。
(2)得到其他信息的方法
得到非用户输入的其他参数信息,就需要用到其他的方法。如下所示是一个得到客户端信息的简单程序。根据这个程序我们可以初步了解如何得到客户端信息的大致思路。代码如下:
- <html>
- <head>
- <title>得到消息</title>
- </head>
- <body>
- <h1>请求中所包含的URL</h1><br>
- <%=request.getQueryString()%><br>
- </body>
- </html>
JSP引擎的工作原理的更多相关文章
- JSP+JavaBean+Servlet工作原理实例…
JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...
- Optaplanner规划引擎的工作原理及简单示例(2)
开篇 在前面一篇关于规划引擎Optapalnner的文章里(Optaplanner规划引擎的工作原理及简单示例(1)),老农介绍了应用Optaplanner过程中需要掌握的一些基本概念,这些概念有且于 ...
- 1.JSP 简介及工作原理
1.JSP 简介 JSP(Java Server Pages)是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的网页H ...
- 我们应该如何去了解JavaScript引擎的工作原理
“读了你的几篇关于JS(变量对象.作用域.上下文.执行代码)的文章,我个人觉得有点抽象,难以深刻理解.我想请教下通过什么途径能够深入点的了解javascript解析引擎在执行代码前后是怎么工作的,ec ...
- 【转】我们应该如何去了解JavaScript引擎的工作原理
原文地址:http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件 ...
- 复杂事件处理引擎—Esper工作原理
前面对Esper进行了概述,包括事件类型.事件流.事件窗口以及EPL相关内容.当然,上面的知识,对于简单的Esper开发,应该已经足够,能够根据自己业务需求,做出一个满足需要的Esper应用.但是,真 ...
- JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...
- JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...
- js:我们应该如何去了解JavaScript引擎的工作原理(转)
http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件内容,不过 ...
随机推荐
- 原生JS的DOM节点操作
DOM(Document Object Model/文档对象模型)是针对HTML和XML文档的一个API.DOM节点树:在文档中出现的空格.回车.标签.注释.文本.doctype.标签等都属于DOM节 ...
- Asterisk 未来之路3.0_0003
原文:Asterisk 未来之路3.0_0003 Asterisk: The Hacker's PBX 如果电信公司忽视了asterisk,那么正在处于危险中.asterisk 良好的扩展性,能够创建 ...
- sql 事务日志传输
原文:sql 事务日志传输 概述 可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库).不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使 ...
- 【转】浏览器DNS 预取读技术的危害
今天中午在http://news.ycombinator.com/news看到一篇文章标题: Saved 10 billion DNS queries per month by disabling D ...
- 数据类型和typeof操作符
虽然学习js有一段时间了,但是对js的基础语法却是有些生疏.最近在看jquery源码,决定随带总结一些基础的语法知识.今天总结一下数据类型和typeof,这在写js的时候,是不得不知道的知识. 数据类 ...
- extjs 时间可选择时分
new Ext.form.DateTimeField({ id: 'SdDateField', width: 130, format: 'Y-m-d H:i', editable: false, va ...
- HBase MVCC 代码阅读(一)
MultiVersionConcurrencyControl.java,版本 0.94.1 MultiVersionConsistencyControl 管理 memstore 中的读写一致性.该类实 ...
- 利用redis的订阅和发布来实现实时监控的一个DEMO(Python版本)
redis的list类型有个很好的特性,就是每次添加元素后会返回当前list的长度,利用这个特点,我们可以监控它的长度,比如我们的key是用户注册的IP地址,list中存放的是已经在此IP地址上注册的 ...
- Asp.net MVC集成Google Calendar API(附Demo源码)
Asp.net MVC集成Google Calendar API(附Demo源码) Google Calendar是非常方便的日程管理应用,很多人都非常熟悉.Google的应用在国内不稳定,但是在国外 ...
- JavaScript插件——标签页
JavaScript插件——标签页 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.html ...