文章目录

  • 一、jsp是什么?
    • 本质是servlet
  • 二、历史发展
    • 1.JSP的诞生
    • 2.JSP的发展

一、jsp是什么?

JSP全名为Java Server Pages,java服务器页面。JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在!JSP是为了简化Servlet的工作出现的替代品,Servlet输出HTMIL非常困难,JSP就是替代Servlet输出HTML的。

本质是servlet

Tomcat访问任何的资源都是在访问Servlet! ,JSP也不例外。JSP本身就是一种Servlet。JSP在第一次被访问的时候会被编译为HttpJspPage类(该类是HttpServlet的一个子类)。
浏览器第一次请求1.jsp时,Tomcat会将1.jsp转化成1_jsp.java这么一个类,并将该文件编译成class文件。编译完毕后再运行class文件来响应浏览器的请求。以后访问1.jsp就不再重新编译jsp文件了,直接调用class文件来响应浏览器。如果Tomcat检测到JSP页面改动了的话,会重新编译的。
既然JSP是一个Servlet,那JSP页面中的HTMIL排版标签原用write()输出。说到底,JSP就是封装了Servlet的java程序。

二、历史发展

1.JSP的诞生

1997 年,Sun 公司推出了 Servlet。
由于当时的 Java Web 层体系结构中只有 Servlet,所以接收用户请求、处理业务逻辑、生成 HTML 代码等都在 Servlet 中完成。Servlet 不能像 PHP、ASP 等语言镶嵌 HTML 代码,因此输出 HTML 比较困难,且部署过程复杂。
为了克服 Servlet 的这些弱点,1999 年初,Sun 公司推出了 JSP。在生成 HTML 代码方面 JSP 比 Servlet 方便许多,而且不需要特殊部署,只需要复制到服务器下面即可运行。简而言之,JSP 就是为了简化 Servlet 工作而出现的替代品。在没有jsp之前,如果需要返回一个页面,程序猿需要一行行print,需要插入变量的地方还需要自己拼凑字符串。而jsp出现后,写一个Jsp就像编写html一样简单,不同的是它可以在html标签‘<%%>’中嵌入java代码!这就允许你在html中使用变量,使用java语言插入动态的内容。而最后通过把jsp编译成servlet,最后jsp就和servlet殊途同归了,但是却给程序员开发提供了极大的便利。

2.JSP的发展

JSP诞生之后,程序员写页面写得爽,所有业务逻辑、页面展示逻辑都往JSP塞,最后JSP扛不住了,程序员也扛不住了:页面非常凌乱,Html标签和java代码随处混合在一起,一个jsp页面非常长,甚至达到上千行代码。
因此自从JSP技术诞生以后,它的发展的总目标就是使JSP代码变得更加简洁和精炼。要通过各种技术手段把JSP文件中的Java程序代码分离出去,最终使得在JSP文件中只有 html标记和 JSP标签。后来人们又充分地利用了servlet和jsp这对兄弟,使用Jsp做页面展示,使用servlet处理后台的业务逻辑,利用起MVC来拆分原本臃肿的JSP。这样处理后,JSP就不处理业务逻辑了,代码量减少了很多。但是还有一些小问题,JSP想要获取servlet的变量,还是需要在’<%%>’这东西中通过java代码去获取。有些比较复杂的展示逻辑如循环for、条件if,还是需要在’<%%>’中编写java代码。我们希望是尽量不要在视图中写java代码。于是有人就封装了一层,出现了EL表达式和JSTL标签库:使用EL表达式取值,使用JSTL来处理页面展示逻辑。
总结下来有如下过程:

  1. 把JSP文件中的java程序代码放到JavaBean中,JSP文件通过专门的标签来访问JavaBean。
  2. 用EL表达式语言来替换<%=%>形式的java表达式。
  3. 在JSP文件中使用自定义标签。
  4. 在JSP文件中使用JSP的标准标签库JSTL。
  5. Web应用采用基于MVC设计模式的框架,使得JSP位于视图层,用于展示数据,不用负责流程控制和业务逻辑。

SUN公司在2004年发布的JSP2.0版是对JSP1.2的升级。JSP2.0的目标是使动态网页的设计、开发和维护更加容易,网页编写者不必懂得Java编程语言,也可以编写JSP网页。
JSP2.0引入的新特性包括:

  1. 引入EL表达式语言
  2. 引入创建自定义标签的新语法,该语法使用.tag和.tagx文件,这类文件可由开发人员或者网页作者编写。

JSP2.1版本:在该版本以前,EL是作为JSTL标签库的一部分存在。 JSP2.1把EL变成了独立于JSTL标签库的表达式语言,是开发人员使用起来更加方便。

浅谈JSP的发展历史相关推荐

  1. 浅谈主流内存发展历史

    浅谈主流内存发展历史 申屠志刚2018329621200 信息学院 计算机科学与技术18(3) 摘 要:计算机必然包含运算器.控制器.存储器和输入输出设备等五个重要部分,其中作为内存储器的内存条在PC ...

  2. 浅谈计算机存储系统发展历史与趋势

    计算机存储系统的核心是存储器,存储器是计算机中必不可少.用来存储程序和数据的记忆设备. 计算机的发展从单片机时代开始,历经客户服务器时代和互联网时代之后,现在正逐步走向网格时代.作为计算机系统中不可缺 ...

  3. 浅谈 Java VM 发展

    浅谈 Java VM 发展 Jim Huang <jimchyun @ ccns.ncku.edu.tw> <jserv @ kaffe.org> 略为整理笔者对 Java V ...

  4. 量子力学在计算机上的应用论文,《浅谈量子力学的发展与利用》-毕业论文.docx...

    课题提纲 1.课题: 浅谈量子力学的发展应用 2.序论: 中心论点:量子力学的发展史和前景 3.正文: 1 : 量子力学简介 2: 量子力学的兴起 3: 量子力学的历史发展 4: 量子力学的研究内容 ...

  5. 浅谈显 ipqq 发展历程

    浅谈显 ipqq 发展历程 [附显 ipqq原理] 声明,本文章未经过疯狂绅士与runjin的同意不得转载. 浅谈IPQQ软件的技术发展轨迹 疯狂绅士.RunJin 摘要:本文先给出了IPQQ的界定, ...

  6. 浅谈“天线和通信历史“

    学个Antenna是以天线仿真和调试为主,理论原理为辅的干货天线技术专栏,包括天线入门知识以及各类天线的原理简介.仿真软件建模.设计.调试过程及思路.如有想看到的内容或技术问题,可以在文尾写下留言. ...

  7. 浅谈计算机网络,浅谈计算机网络的发展

    浅谈计算机网络的发展 摘要:计算机网络一直在不断地更新,也在快速的发展.计算机网络技术的不断提升,也使得其他的各行各业在计算机方面的应用也越来越受到重视,计算机网络的应用也充斥到了日常生活和工作中.除 ...

  8. 浅谈智能问答系统发展及在高校中需求现状

    在科技新时代的发展中,智能信息化一直是研究的热点,家里用的扫地机器人,强劲有效清除尘土:阿里巴巴2017年推出的AI智能产品-天猫精灵,能实现智能家居控制.查天气.语音购物.手机充值.百科查询.音乐播 ...

  9. 计算机对于管理信息系统其实并不重要,浅谈计算机管理信息系统发展方向

    摘要:随着计算机技术的飞速发展,作为一门综合学科,计算机管理信息系统不仅涉及到计算机.系统等技术,更与管理方面的知识有很大的联系.计算机管理信息系统水平的提高不仅优化了人们的生活,更成为教学管理的重要 ...

  10. serverlet 区别_浅谈JSP serverlet的区别与联系

    jsp是html包含java servlet是java包含html jsp请求到tomcat---tomcat封装了jsp到servlet实现. 所以jsp请求时候,会自动创建session 而不用在 ...

最新文章

  1. JQUERY搞的相册导航DEMO教学,总有一款合心意
  2. 有关YARN/MRv2 相关
  3. 绩效管理误区和乱象,你的企业存在吗?
  4. linux下安装nginx,php,mysql
  5. 选择排序-冒泡排序-归并排序-快速排序-插入排序
  6. outlook 未安装信息服务器,Outlook Web Access 未初始化并且在客户端访问服务器上的应用程序日志中记录了事件 ID 64...
  7. 在线建立或重做mysql主从复制架构方法(传统模式和GTID模式)【转】
  8. 用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序
  9. linux 和 、 区别
  10. Tensorflow Python3 做神经网络(视频教程)
  11. Linux中/proc目录下文件详解(一)
  12. linux系统的wps办公软件,Linux学习-7:Linux环境下安装WPS办公软件
  13. Visual Studio 2017 配置AnkhSVN
  14. Rational rose安装步骤
  15. 联想计算机启天m6900价格,联想启天m6900内存及基本【参数介绍】
  16. 创建github或者gitee(国内版github)账户
  17. 【Python】英文字符频率统计
  18. 利用TensorFlow搭建CNN,DNN网络实现图像手写识别,总结。
  19. Linux下的自动化工具xdotool
  20. Python古典密码编程

热门文章

  1. 为黑苹果解锁AirDrop功能和蓝牙以及WI-FI
  2. Android 状态栏关于开发的几件事
  3. CCR, CCD, CDA, EMR, PHR
  4. 路由器连接猫服务器未响应,猫能连上路由器连不上怎么回事【解决方法】
  5. n维向量,n维向量空间,n维向量空间的维数
  6. Java8------Sort()
  7. “统计套利”是怎么玩的?可以稳定获利吗?
  8. DDNS - 动态DNS
  9. 原生js删除节点、替换节点、复制节点
  10. c语言学习格式化输出