Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JSP引擎的工作原理

JSP引擎的工作原理

作者头像
大道七哥
发布于 2019-09-10 12:53:13
发布于 2019-09-10 12:53:13
1.1K2
举报
文章被收录于专栏:大道七哥大道七哥

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程序代码:

  1. <html>
  2. <head>
  3. <title>HelloWorld for JSP</title>
  4. </head>
  5. <body>
  6. <h1>HelloWord for JSP</h1>
  7. <%out.println("<h3>Hello World!</h3>");%>
  8. </body>
  9. </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

  1. <html>
  2. <head>
  3. <title>Get</title>
  4. </head>
  5. <body>
  6. <h1>Get Method</h1>
  7. <form action = "submit.jsp" method = "GET">
  8. username<input name = "uername" value = "aaa"><br>
  9. password<inpput type = password name = "password" value = "111111"><br>
  10. <input type = submit value = "submit">
  11. </form>
  12. </body>
  13. </html>

(代码中有一个表单,表单在定义的时候,定义了属性method=“GET”,这表明表单提交的方法是GET。这个表单向服务器提交两个参数,其中一个是username,缺省值为aaa,另外一个是password,其缺省值是111111。)

这个页面只是得到了输入数据,只有submit.JSP才能实现提交这个页面的数据。这就是需要用到JSP了,代码如下:submit.JSP

  1. <html>
  2. <head>
  3. <title>submit</title>
  4. </head>
  5. <body>
  6. <h1>submit</h1>
  7. request method:<%=request.getMethod() %><br>
  8. user name:<%=request.getParameter("user") %><br>
  9. password:<%=request.getParameter("password") %><br>
  10. </body>
  11. </html>

在这个JSP页面中是用了JSP的内置对象request的两个方法,一个是getMethod,用来获取当前请求的类型,另一个是getParameter,用来获取指定参数的值。在get.html中单击submit按钮,就可以显示表单请求方法,用户名以及密码等信息。

(2)得到其他信息的方法

得到非用户输入的其他参数信息,就需要用到其他的方法。如下所示是一个得到客户端信息的简单程序。根据这个程序我们可以初步了解如何得到客户端信息的大致思路。代码如下:

  1. <html>
  2. <head>
  3. <title>得到消息</title>
  4. </head>
  5. <body>
  6. <h1>请求中所包含的URL</h1><br>
  7. <%=request.getQueryString()%><br>
  8. </body>
  9. </html>

-END-

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-12-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
文章写得很好很详细,点个赞
文章写得很好很详细,点个赞
回复回复点赞举报
很不错的加速算法,还免费,大赞谷歌
很不错的加速算法,还免费,大赞谷歌
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
JSP 一讲
教 学 活 动 首 页 基    本    内    容 第 7 章 Java Servlet 教学目的与要求:通过本章的学习让学生了解如何用 servlet 读写文件,用 servlet 访问数据库;理解servlet 工作原理,servlet共享变量的使用;掌握编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,掌握会话管理。 教学内容: 7.1 servlet 工作原理 7.2 编译和安装 servlet 7.3 通过 JSP 页面调用 servlet 7
Hongten
2018/09/18
8570
JSP知识点总结
一、jsp静态包含和动态包含的区别   在学习request对象的时候,我们曾经使用过request.getRequestDispatcher(String url).include(request,response)来对页头和页尾面进行包含。inclue指令也是做这样的事情,一起来试验一下吧。 这是页头 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head>
Kevin_Zhang
2018/07/04
1.2K0
JavaWeb(一)JSP原理,组成
JSP(Java sever pages):一种用于开发动态web页面(资源)的技术。 jsp页面是在服务器上运行的一个页面,一个jsp页面就是一个类。写jsp就像在写html,jsp允许在页面中编写
二十三年蝉
2018/02/28
1.6K0
JavaWeb(一)JSP原理,组成
JSP基本语法
  记录一下自己复习到的知识点,以后看起来也方便。   指令   JSP中三个指令,page,include,taglib page 用于定义页面相关的信息,比如下面的代码: <%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%>   language定义了页面的使用语言;   import引用页面中使用的工具类;   contentType定义页面的编码格式;   p
用户1154259
2018/01/17
1.1K0
JSP基本语法
JSP 二讲
教 学 活 动 首 页 基    本    内    容 第 2 章 JSP 语法 教学目的与要求:通过本章的学习让学生了解SP 中的注释的使用方法;理JSP页面的基本结构;掌握变量和方法的声明方法,Java 程序片的使用,Java 表达式的使用,JSP指令标签和JSP动作标签的使用。 教学内容: 2.1 JSP 页面的基本结构 2.2 变量和方法的声明 2.3 Java 程序片 2.4 Java 表达式 2.5 JSP 中的注释 2.6 JSP 指令标签 2.7 JSP 动作标签 教学基本要求: 了解:
Hongten
2018/09/18
1.1K0
JavaWeb(二)jsp运行原理,九大内置对象
JSP运行原理: 每个JSP页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的 调用方式进行调用。 由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。 JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发
二十三年蝉
2018/02/28
1.3K0
JavaWeb(二)jsp运行原理,九大内置对象
JSP基础入门
JSP(Java Server Pages)是JavaWeb服务器端的动态资源。它与html页面的作用是相同的,显示数据和获取数据。
星哥玩云
2022/09/14
3980
JSP基础入门
当Java遇见了Html--Jsp详解篇
一、什么是Jsp jsp是一种基于文本的程序,全名java server page,其特点是html和java程序共存。执行时jsp会被运行容器编译,编译后的jsp跟servlet一样,因此jsp是另
方志朋
2017/12/29
1.4K0
当Java遇见了Html--Jsp详解篇
JSP面试题都在这里
下面是我整理下来的JSP知识点: 图上的知识点都可以在我其他的文章内找到相应内容。 JSP常见面试题 jsp静态包含和动态包含的区别 jsp静态包含和动态包含的区别 在讲解request对象的时候,我
Java3y
2018/03/15
1.4K0
JSP面试题都在这里
JSP九大内置对象
虽然现在基本上使用SpringMVC+AJAX进行开发了Java Web了,但是还是很有必要了解一下JSP的九大内置对象的。像request、response、session这些对象,即便使用其他框架也是会经常用到的。因此十分有了解的必要。
全栈程序员站长
2021/04/07
1.3K0
Response重定向---javaweb
重定向 一个web 资源收到客户端请求后,他会通知客户端去访问另外一个web资源 这个过程就叫做重定向。
宁在春
2022/10/31
1740
Response重定向---javaweb
Jsp之四 servlet请求响应
读取请求(表单)的参数时,只需调用HttpServletRequest的getParameter方法,提供大小写敏感的参数名作为方法的参数。只要提供的参数名与html源代码中出现的参数名完全相同,就可以得到与终端用户的输入完全一致的结果。getParameter(String paraName)方法中如果参数存在但没有相应的值(如用户并没有填写相应的文本字段),则此方法返回一个“”的String;如果没有这样的参数存在,则返回null。注意:参数名的大小写是敏感的。如果同一参数名在表单数据中多次出现,则应该调用getParameterValues。如果参数只有单一的值,则返回只有一个元素的数组。实际上我们在设计html表单时,最好保证,每个文本字段,复选框以及其他用户界面有一个唯一的名称,但是多选列表框中每个选定的元素,重复使用了参数名,所以多个值的情况不是总可以避免的。下面看一个例子,清单【4-1】为html代码,【4-2】为Servlet代码
张哥编程
2024/12/17
1480
Jsp之四 servlet请求响应
当Java遇见了Html--Jsp九大内置对象篇
本文讲述了Java的九大内置对象,包括out、request、response、session、application、pageContext、config、exception以及page。这些对象在Java Web开发中经常用于处理用户请求、响应结果、保存数据、跳转页面等操作。
方志朋
2017/12/29
7040
Java匹马行天下之JavaWeb核心技术——JSP(续一)
我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理。浏览器中使用 GET 和 POST 方法向服务器提交数据。
泰斗贤若如
2019/06/19
1.1K0
Java匹马行天下之JavaWeb核心技术——JSP(续一)
Web阶段:第十二章:JSP动态页面
作者:java_wxid **1.什么是Jsp?** jsp是java server page,java的服务器页面。 2.为什么要学习jsp技术 因为jsp技术可以很好的解决在Servlet程序中回
Java廖志伟
2022/09/28
8000
Web阶段:第十二章:JSP动态页面
JavaWeb(七)Cookie,EL表达式,标准标签库
Cookie Cookie概述 Cookie译为小型文本文件或小甜饼,Web应用程序利用Cookie在客户端缓存服务器端文件。Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件。 Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源。客户端再次访问服务器端时,存储的Cookie会保存在请求协议中,服务器端可以获取上次存储的缓存文件内容。 Coo
二十三年蝉
2018/02/28
1.1K0
JavaWeb(七)Cookie,EL表达式,标准标签库
JSP与JavaBeans
  JavaBeans简介   JavaBeans是一种符合一定标准的普通java类,需要满足下面几点:   1 类是public   2 属性私有   3 空的public构造方法   4 通过getter setter操作属性   JSP有很多的标签,比较常用的就是与javaBean相关的标签:   <jsp:useBean>设置javaBean   <jsp:setProperty> 设置javabean中属性值   <jsp:getProperty> 获取javaBean属性值 设置javaBea
用户1154259
2018/01/17
1.1K0
JSP与JavaBeans
Servlet和JSP学习指导与实践(三):JSP助阵
  JSP(Java Server Page)虽然作为一门服务端的语言,但它并没有创新新的语言标准。有些人一接触jsp之后发现易学易懂。实际上,jsp的内部原理仍然是基于Servlet,它是Servlet的补充,而并不是要取代Servlet。本文对JSP的一些概念及基础内容进行了不详尽的总结,希望感兴趣的博友凑合着看~
云海谷天
2022/08/09
5170
Servlet和JSP学习指导与实践(三):JSP助阵
JSP笔记
jsp的全称是 java server pages。Java的服务器页面。 jsp的主要作用是代替 Servlet 程序回传 html 页面的数据。 因为 Servlet 程序回传 html 页面数据是一件非常繁琐的事情、开发成本和维护成本都极高。
技术交流
2022/11/18
1.7K0
JSP笔记
JSP基础--会话跟踪技术、cookie、session
我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了。从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中。
eadela
2019/09/29
1K0
JSP基础--会话跟踪技术、cookie、session
相关推荐
JSP 一讲
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档