JavaWeb总结(十一)
JSP简介
虽然Servlet解决了传统CGI编程的缺陷,但是它并不一定是最高效率的方案
- Servlet的编码、部署和调试任务繁琐
- 生成动态网页繁琐,不利于项目分工
为了弥补Servlet这些缺陷,SUN公司又在Servlet基础上推出了JSP(Java Server Page)技术作为解决方案
作为JSP技术编写的动态页面称为JSP页面,它是由HTML语句和嵌套在其中的Java代码组成一个普通文本文件。为了区分与静态页面的不同,JSP的后缀名必须为.jsp
JSP2.0规范定义的功能可以分为以下几种:JSP(规范了语法和语义)、JavaBean、定制标记、JSP EL等
JSP运行机制与生命周期
第一阶段——JSP页面翻译
与Servlet的部署相比,JSP的部署更为简单,Web容器第一次接收到对某个JSP页面的请求后,首先自动将该JSP页面翻译为Servlet代码。 所有JSP页面本质上就是Serlvet程序 。Tomcat将翻译后的代码放在Tomcat安装目录的/work子目录下。

JSP页面翻译阶段
第二阶段——JSP页面编译
Web容器负责将Servlet代码编译为字节码。与源文件放在同一个目录下
(在JSP生命周期中,整个翻译和编译步骤只发生一次,因此,除第一次编译所消耗的额外时间开销外,JSP和Servlet的执行速度相同)

JSP页面编译阶段
第三阶段——JSP页面类装载
Web容器装载新生成的servlet类

JSP页面类装载阶段
第四阶段——JSP页面类实例化
Web容器创建servlet实例

JSP页面类实例化阶段
第五阶段——JSP页面初始化
Web容器调用Servlet示例的jspInit()方法,JSP页面装载资源

JSP页面初始化阶段
第六阶段——JSP页面服务
容器创建一个新线程来处理这个客户的请求,servlet对象的_jspService()方法运行

JSP页面服务阶段
第七阶段——JSP页面销毁
容器调用生成的servlet对象的jspDestroy()方法,销毁装载的资源

JSP页面销毁阶段
生命周期
由JSP引擎将JSP页面翻译成JAVA代码
将JAVA代码编译成class字节码文件
加载到容器
由容器实例化成对象
初始化阶段相关的方法是jspInit()
请求到达,调用服务阶段相关的方法是_jspService()
销毁阶段相关的方法是jspDestroy()
|
提示:JSP通常用于简化创建产生文本的Servlet,而Servlet更适合于发送原生字节到客户端或需要用Java源代码完全控制源代码的场合。二者可以很好的分开。 |
JSP语法和语义
JSP网页主要由元素(Element)和模板数据(Template Data)两个部分组成
模板数据是JSP的静态部分
WEB容器不处理
元素则是必须经由WEB容器解释
元素都是以XML做为语法基础,并且大小写要一致
WEB容器支持两种不同格式的JSP语法
普通格式和XML兼容格式
普通JSP语法是设计给开发者用的
XML兼容JSP语法是设计用来容易被开发工具使用的
JSP脚本元素
|
脚本元素 |
脚本语法 |
|
声明 |
<%! 声明 %> |
|
Scriplet |
<% 代码 %> |
|
脚本表达式 |
<%= 脚本表达式 %> |
Scriptlet
Scriptlet直接插入Java代码片断到模板数据中
一个Scriptlet只能是Java程序
必须符合Java的规范
以“<%”开始,以“%>”结束来包含程序代码段
编译后的代码会出现在_jspService()方法中
声明的变量是一个局部变量
在JSP文件中大量写入Scriptlet会使得JSP难以维护和文档化
<% java程序代码 %>
<!--对应的XML语法格式为:-->
<jsp:scriptlet></jsp:scriptlet>
脚本表达式
脚本表达式将动态页面生成的结果显示出来
不能使用分号来作为脚本表达式的结束符
脚本表达式可以是常量,也可以是一个动态计算出来的结果值,甚至还可以把脚本表达式作为其它JSP元素的属性值
<%= 脚本表达式 %>
<!--对应XML的语法是:-->
<jsp:expression>脚本表达式</jsp:expression>
JSP声明
可以在JSP程序中声明一个或多个变量。但是每一个声明语句都必须以分号结束
<%! 声明 %>
<!--XML语法为:-->
<jsp:declaration>声明</declaration>
Scriptlet和JSP声明的用法很类似,那么那么的区别是什么呢?
JSP声明方法声明的变量和方法为静态以及实例化变量和方法。即当多个用户同时在访问一个JSP时,每个用户线程将共用全局的变量和方法。
Scriptlet方法声明的变量和方法将是_jspService()方法中的局部变量和方法。
如果不是特别需要,不要将变量和方法声明设为全局(推荐<% %>方法)
JSP注释
SP页面中可以插入三种不同类型的注释
JSP注释,其语法结构为: <%--注释内容--%> (在审查元素中不可见)
HTML注释 :<!--注释内容-->(在审查元素中可见)
Java代码注释
JavaWeb总结(十一)的更多相关文章
- JavaWeb学习 (十一)————Session
一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...
- javaweb(三十一)——国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
- javaweb(二十一)——JavaWeb的两种开发模式
一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示
- JavaWeb 后端 <十一> 之 DBUtils 框架 (基本使用 结果集 事务处理 对表读取)
一.数据库操作框架 1.ORM:Object Relation Mapping Hibernate:非常流行 JPA:Java Persistent API.ORM标准 MyBatis:2010年开始 ...
- 巩固javaweb第十一天
巩固内容: HTML <script> 元素 <script>标签用于加载脚本文件,如: JavaScript. <script> 元素在以后的章节中会详细描述. ...
- 学习JAVAWEB第十一天
今天以及明天做登录案例,复习所学知识.
- javaweb学习总结(二十一)——JavaWeb的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- javaweb学习总结(三十一)——国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
- Javaweb学习笔记——(二十一)——————过滤器
过滤器 过滤器概述 1.什么是过滤器: 过滤器javaweb三大组件之一,它与Serlvet很相似,不过它过滤器是用来拦截请求的,而不是处理 ...
- Javaweb学习笔记——(十一)——————JSP、会话跟踪、Cookie、HttpSession
JSP1.什么是JSP jsp即java server pages,它是Javaweb的动态资源. jsp = html + java脚本 + jsp动态标签(包含EL表达式)2.JSP中java脚本 ...
随机推荐
- oracle使用索引和不使用索引性能分析
首先准备一张百万条数据的表,这样分析数据差距更形象! 下面用分页表数据对表进行分析,根据EMP_ID 字段排序,使用索引和不使用索引性能差距! sql查询语法准备,具体业务根据具体表书写sql语法: ...
- SqlServer查询存储过程中包含指定的内容
存储过程太多,有时只记得存储过程里面的某一点类容,想要找到对应的存储过程: SELECT obj.Name 存储过程名, sc.TEXT 存储过程内容 FROM syscomments sc INNE ...
- Linux ss命令详解
ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息 ...
- 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d的扩展(三)
题外话: 最近在忙公司的云项目空闲时间不是很多,所以很久没来更新,今天补上一篇! 回顾: 前几篇介绍了一下设计器的界面和Draw2d基础知识,这篇讲解一下本设计器如何扩展Draw2d. 进入主题: 先 ...
- Sublime Text 3中文乱码
Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文的话,就会乱码,如下所示: ...
- Apache服务器下使用 ab 命令进行压力测试
ab是Apache超文本传输协议(HTTP)的性能测试工具. 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求. #ab -v可以看出其基本信息 ...
- SAP NetWeaver BPM
什么是BPM? BPM是Business Process Management的缩写,翻译过来是业务流程管理.BPM本身并没有明确的定义,它更多的是一种概念,这个概念本身的产生来源于企业对众多业务系统 ...
- 1854. [SCOI2010]游戏【二分图】
Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...
- 【CF809E】Surprise me!
题目 这是一道神仙题 看到这样一个鬼畜的柿子 \[\sum_{i=1}^n\sum_{j=1}^n\varphi(a_i\times a_j)\times dis(i,j)\] 又是树上距离又是\(\ ...
- 1925: [Sdoi2010]地精部落
1925: [Sdoi2010]地精部落 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1929 Solved: 1227 [Submit][Statu ...