原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm

Web服务器需要一个JSP引擎,即一个处理JSP页面的容器。JSP容器负责截取JSP页面的请求。本教程使用了内置JSP容器的Apache来支持JSP页面的开发。

JSP容器与Web服务器配合工作以提供运行时环境和JSP需要的其他服务。它知道如何理解作为JSP一部分的特殊元素。

下图显示了JSP容器和JSP文件在Web应用程序中的位置。

Web服务器如何使用JSP创建Web页面

以下步骤说明Web服务器如何使用JSP创建Web页面 -

  • 与正常页面一样,浏览器向Web服务器发送HTTP请求

  • Web服务器识别HTTP请求是针对JSP页面,并将其转发给JSP引擎。这可以通过使用以.jsp而不是.html结尾的URL或JSP页面完成。

  • JSP引擎从磁盘加载JSP页面并将其转换为servlet(.java)。此转换非常简单,所有HTML文本都转换为println()语句,所有JSP元素转换为Java代码。这些代码实现了页面的相应动态行为。【注释】直接看转换的源代码就清楚了

  • JSP引擎将servlet编译成可执行类(.class),并将原始请求转发到servlet引擎

  • servlet引擎(Web服务器的一部分)加载Servlet类并执行它。在执行期间,servlet生成HTML格式的输出。HTTP响应中的servlet引擎将输出传递给Web服务器。

  • Web服务器将含有静态HTML的HTTP响应转发到浏览器。

  • 最后,Web浏览器处理HTTP响应中动态生成的HTML页面,就像处理一个静态页面一样。

所有上述步骤可以在下图中看到 -

通常,JSP引擎将检查JSP文件的对应的servlet是否已存在,以及.jsp文件的修改日期是否比对应的.java更早。如果.jsp早于其生成的.java,则JSP容器假定.jsp没有更改,并且生成的.java仍然与.jsp的内容匹配。这使得创建Web页面的过程相对其他脚本语言(如PHP)更加高效。【注释】友情链接

所以,在某种程度上,JSP页面实际上只是另一种编写servlet的方法除了翻译阶段,JSP页面的处理方式与普通的servlet完全相同

JSP笔记04——架构(转)的更多相关文章

  1. Kubernetes 笔记 04 架构是个好东西

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  2. Redis:学习笔记-04

    Redis:学习笔记-04 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 10. Redis主从复制 1 ...

  3. JS自学笔记04

    JS自学笔记04 arguments[索引] 实参的值 1.对象 1)创建对象 ①调用系统的构造函数创建对象 var obj=new Object(); //添加属性.对象.名字=值; obj.nam ...

  4. JAVA自学笔记04

    JAVA自学笔记04 1.switch语句 1)格式:switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; - default: 语句体n+ ...

  5. 机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes)

    机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes) 关键字:朴素贝叶斯.python.源码解析作者:米仓山下时间:2018-10-2 ...

  6. CS229 笔记04

    CS229 笔记04 Logistic Regression Newton's Method 根据之前的讨论,在Logistic Regression中的一些符号有: \[ \begin{eqnarr ...

  7. SaToken学习笔记-04

    SaToken学习笔记-04 如果有问题,请点击:传送门 角色认证 在sa-token中,角色和权限可以独立验证 // 当前账号是否含有指定角色标识, 返回true或false StpUtil.has ...

  8. Java:并发笔记-04

    Java:并发笔记-04 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 本章内容-3 线程状态转换 活跃性 Lock 3.10 重新理解线程状态转换 假设有线 ...

  9. Servlet&JSP复习笔记 04

    1.状态管理 因为HTTP协议是无状态协议,但很多时候需要将客户端和服务端的多次请求当做一个来对待.将多次交互中设计的数据进行保存. 状态:数据 管理:对数据的维护 2.Cookie 客户端向服务器发 ...

随机推荐

  1. 使用Squid搭建HTTPS代理服务器

    由于经常去的一些国外网站如Google.Blogspot.Wordpress被"出现了技术问题",访问不了,于是我在自己的DigitalOcean云主机上搭建了一个 Squid代理 ...

  2. CentOS7安装mysql提示“No package mysql-server available

    在CentOS7上安装mysql时,出现了以下的提示: 原因是: CentOS7带有MariaDB而不是MySQL,MariaDB和MySQL一样也是开元的数据库,您可以使用yum -y instal ...

  3. Spring MVC生成XML

    以下示例演示如何使用Spring Web MVC框架生成XML.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一个名 ...

  4. src.rpm包安装方法

    有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译.这类软件包有多种安装方法,以redhat为例说明如下: 注意: 如果没有rpmbuild可以从系统安装光 ...

  5. Android-ViewPagerIndicator框架使用——TitlePageIndicator

    前言:TitlePageIndicator这个就是效果比较好. 一:定义布局文件simple_titles: <LinearLayout xmlns:android="http://s ...

  6. javascript拼接html代码

    转自开源中国社区:http://www.oschina.net/code/snippet_94055_21640经常做jsp开发的朋友可能遇到一个情况,显示列表数据不是table,而是div或者其他很 ...

  7. 创建新的C++工程来调用Caffe对图片进行识别

    前段时间一直在跑Caffe训练数据.之前用训练好的caffemodel对图片进行分类都是用的命令行指令,于是就想着自己新建一个工程来调用caffe,结合classification的代码来对图片进行分 ...

  8. cocos2d-x设计模式发掘之一:单例模式

       作者: firedragonpzy  原地址:http://www.firedragonpzy.com.cn/index.php/archives/1781 本系列文章我将和大家一起来发掘coc ...

  9. 《从零开始学Swift》学习笔记(Day 16)——字典集合

    原创文章,欢迎转载.转载请注明:关东升的博客        Swift字典表示一种非常复杂的集合,允许按照某个键来访问元素.字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合 ...

  10. iOS CGAffineTransform你了解多少?

    CGAffineTransform介绍 概述 CGAffineTransform是一个用于处理形变的类,其可以改变控件的平移.缩放.旋转等,其坐标系统采用的是二维坐标系,即向右为x轴正方向,向下为y轴 ...