• JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
  • 它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
  • JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
  • Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

JSP优势

  • 与ASP相比:JSP有两大优势。首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。第二点就是JSP易于移植到非MS平台上。
  • 与纯 Servlets相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
  • 与SSI相比:SSI无法使用表单数据、无法进行数据库链接。
  • 与JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。
  • 与静态HTML相比:静态HTML不包含动态信息。

JSP处理过程

就像其他普通的网页一样,您的浏览器发送一个HTTP请求给服务器。

Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。

JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。

JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。

Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。

Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。

Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。

JSP页面只有在首次访问的时候需要编译生成Servlet字节码,所以首次加载的速度会稍慢(可以忽略)

JSP运行环境

由于JSP根本上是一个简化的Servlet设计,所以JSP的运行环境与Servlet相同,可以通过《Servlet开发环境搭建》查看如何配置开发环境。建议开始JSP之前先学习Servlet知识。

JSP示例

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
</head>
<body>
Hello JSP!
</body>
</html>
<html>
<head>
<title>第一个 JSP 程序</title>
</head>
<body>
<%
out.println("Hello World!");
%>
</body>
</html>

最新文章

  1. Unity 序列化 总结
  2. javascript中escape()、unescape()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()比较
  3. Android IOS WebRTC 音视频开发总结(六八)-- Google: What&#39;s next for WebRTC
  4. FusionCharts ajax 调用方式
  5. Leveldb Advanced
  6. All About JAVA Maven的安装
  7. Lazarus中TreeView导出XML以及XML导入TreeView
  8. openjpa框架入门_Demo概览(一)
  9. hdu 5584 gcd/lcm/数学公式
  10. JavaScript:window.onload问题
  11. Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
  12. 笔记:Hibernate 查询缓存
  13. [LeetCode] Top K Frequent Words 前K个高频词
  14. Quartz任务调度
  15. ANDROID说说对MENU的理解
  16. 【LeetCode】正则表达式匹配(动态规划)
  17. kernel(一)编译体验
  18. mongodb group操作 以及管道 aggregate 分组排序分页
  19. python中的文件操作
  20. DOS批处理高级教程

热门文章

  1. 以太坊代币,USDT归集流程图
  2. spring07
  3. matplotlib 显示最后n条数据(可用于实时更新)
  4. matplotlib中的基本概念
  5. for循环in遍历
  6. AJ学IOS(23)UI之控制器管理
  7. Linux环境下django初入
  8. iNeuOS工业互联平台,部署在智能硬件网关,实现了从边缘端到云端的一体化部署
  9. Daily Scrum 12/23/2015
  10. lua 逻辑运算 and, or, not