Java EE学习之(三)JSP概述

JSP概述

JSP(Java Server Page)和Servlet是Java EE 规范的两个基本成员,他们是Java Web 开发的重点知识,也是Java EE的基础。JSP和Servlet本质是一样的,因此JSP最终必须编译成Servlet才能运行,或者说JSP只是生产Servlet的“草稿”文件。JSP比较简单,它的特点是在HTML页面中其嵌入Java代码,或者使用各种JSP标签,包括使用用户自定义标签,从而可以动态的提供页面内容。从目前的使用来看JSP被当做一种表现层技术来使用。随着Java EE技术的发展,又出现了FreeMarker、Velocity、Tapestry等表现层技术,虽然这些技术本可以取代JSP技术,但实际上JSP依然是应用最广泛的表现层技术。

JSP基本原理

JSP的本质是Servlet,当用户向指定的Servlet发送请求时,Servlet利用输出流动态的生成HTML页面,包括每一个静态的HTML标签和JSP标签中需要出现的内容。由于在Servlet中包含大量的HTML标签、大量的静态文本及格式等,导致Servlet的开发效率极为低下,所有的表现逻辑,包括布局,色彩及图像等都必须耦合在Java代码中,让人不胜其烦。

JSP的出现弥补了Servlet的这部分的不足,JSP通过在标准的HTML页面嵌入Java代码,其静态部分无需Java程序控制,只需要从数据库读取或需要动态生成的内容才使用Java脚本控制。

因此JSP也就被划分为两部分

  • 静态部分:标准的HTML标签。静态的页面内容,这些内容与静态的HTML相同。
  • 动态部分:受Java程序控制的内容,这些内容由Java程序来动态生成。

从表面上看,JSP已经不是Java类了,似乎已经脱离了Java面向对象的基本特征了,但是JSP的本质是Servlet,而Servlet又是一种特殊的Java类,每个JSP界面就是一个Servlet实例-----JSP页面由Servlet容器(Tomcat)编译成Servlet,Servlet再负责响应用户请求。例如一个test.jsp的文件经过Tomcat生成会在work路径下找到对应的test_jsp.java和 test_jsp.class两个文件。

这里需要知道一点Servlet容器的主要任务是管理Servlet的生命周期的,Web服务器用来管理和部署Web应用,一个典型的产品就是Tomcat,Tomcat是Web服务器不假,但同时也是Servlet容器。

test.java文件中包含三个方法:

  • init():初始化JSP/Servlet的方法。
  • destroy():销毁JSP/Servlet之前的方法。
  • service():对用户请求生成响应的方法。

通过上面我们可以知道每个JSP文件必须通过Servlet容器(Tomcat)生成对应的Servlet才能执行,每个JSP的第一个访问者速度很慢的原因是需要等待JSP编译成Servlet。

JSP注释

JSP注释只有一种,HTML注释也只有一种但是对比而言JSP注释不会在最终生成的HTML文件的源码中显示。

JSP注释格式:<%--JSP注释的内容--%>

HTML注释格式:<!—HTML注释的内容-->

JSP声明

JSP声明用于声明变量和方法。在JSP声明中声明方法看起来很特别,似乎不需要定义类就可以直接定义方法,方法似乎可以脱离类独立存在。实际上,JSP声明会转换成对应的Servlet的成员变量和成员方法,因此JSP依然符合Java语法。

JSP声明的语法格式:<%!声明部分%>

输出JSP表达式

JSP提供了一种输出表达式值的简单方法,输出表达式值的语法格式如下:

<%=表达式%>

例如<%=”hello!”%>也可为<%out.println(“hello!”)%>后者为JSP脚本。

JSP脚本

个人觉得JSP脚本和输出JSP表达式使用的频率要比JSP声明高的多,JSP脚本里可以包含任何可执行的Java代码。通常所有的可执行性Java代码都可以通过Jsp脚本嵌入HTML页面。值得注意的是在JSP脚本中声明的变量在Servlet中是局部变量,但是不能使用private、public等访问控制符来修饰,更不可以使用static修饰!

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值