动态网站开发06:JSP技术

动态网站开发讲课笔记06:JSP技术
一、前言
二、JSP概述
(一)什么是JSP
1、JSP的概念
2、JSP的特征
(1)跨平台
(2)业务代码相分离
(3)组件重用
(4)预编译
(二) JSP运行原理
1、JSP的工作模式
2、JSP的运行原理图
3、JSP的运行过程
(1)执行步骤
(2)运行过程总结
二、JSP基础语法
(一)JSP页面的基本构成
1、JSP模版元素
2、JSP表达式
3、JSP脚本片断
4、JSP声明
5、JSP注释
三、JSP指令
(一)page指令
1、基本概念
2、语法格式
3、常用属性
(二)include指令
1、基本概念
2、语法格式
3、常见问题
一、前言
1.了解JSP的概念和特点
2.熟悉JSP的运行原理
3.掌握JSP的基本语法
4.熟悉JSP指令的使用
5.掌握JSP动作元素的使用
6.掌握JSP隐式对象的使用

二、JSP概述
(一)什么是JSP
1、JSP的概念
JSP全名是Java Server Pages,即Java服务器页面。它是Servlet更高级别的扩展。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。最终,JSP文件会通过Web服务器的Web容器编译成一个Servlet,用来处理各种请求。
2、JSP的特征
(1)跨平台
由于JSP是基于Java语言的,使用JSP开发的Web应用是跨平台的,可以应用于不同的系统中,如Windows、Linux等。当从一个平台移植到另一个平台时,JSP和JavaBean的代码并不需要重新编译,这是因为Java的字节码是与平台无关的,这也符合了Java语言“一次编译,到处运行”的特点。
(2)业务代码相分离
在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的开发分离开。开发人员使用HTML设计界面,使用JSP标签和脚本动态生成页面上的内容。在服务器端,JSP容器负责解析JSP标签和脚本程序,生成所请求的内容,并将执行结果以HTML页面的形式返回给浏览器。
(3)组件重用
JSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean封装业务处理代码或者作为一个数据存储模型,在JSP页面中,甚至在整个项目中,都可以重复使用这个JavaBean,同时,JavaBean也可以应用到其他Java应用程序中。
(4)预编译
预编译就是在用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时,会直接执行编译好的代码。这样不仅节约了服务器的CPU资源,还大大提升了客户端的访问速度。
(二) JSP运行原理
1、JSP的工作模式
JSP的工作模式是请求/响应模式,客户端首先发出HTTP请求,JSP程序收到请求后进行处理并返回处理结果。一个JSP文件第一次被请求时,JSP容器把该JSP文件转换成为一个Servlet,而这个容器本身也是一个Servlet。
2、JSP的运行原理图
如果是第一次访问JSP文件,被服务器翻译成一个对应的Java文件(Sevlet),然后,再被编译成.class文件并加载到内存中。如果是第二次访问JSP,那就可以直接调用内存中的JSP实例,所以之后访问JSP速度会比之前快一些。

3、JSP的运行过程
(1)执行步骤
第1步、客户端发出请求,请求访问JSP文件。
第2步、JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果发现JSP文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。
第3步、如果转换成功,则JSP容器将生成的Java源文件编译成相应的字节码文件*.class。该class文件就是一个Servlet,Servlet容器会像处理其他Servlet一样来处理它。
第4步、由Servlet容器加载转换后的Servlet类(.class文件)创建一个该Servlet(JSP页面的转换结果)的实例,并执行Servlet的jspInit()方法完成初始化。jspInit()方法在Servlet的整个生命周期中只会执行一次。
第5步、JSP容器执行jspService()方法处理客户端的请求。对于每一个请求,JSP容器都会创建一个新的线程来处理它。如果多个客户端同时请求该JSP文件,则JSP容器会创建多个线程,使得每一个客户端请求都对应一个线程。JSP运行过程中采用的这种多线程的执行方式可以极大地降低对系统资源的消耗,提高系统的并发量并缩短响应时间。需要注意的是,由于第 4 步生成的Servlet实例是常驻内存的,所以响应速度非常快。
第6步、如果JSP文件被修改了,则服务器将根据新的设置决定是否对该文件进行重新编译。如果需要重新编译,则使用重新编译后的结果取代内存中常驻的Servlet实例,并继续上述处理过程。
第7步、虽然JSP效率很高,但在第一次调用的时候往往由于需要转换和编译,会产生一些轻微的延迟。此外,由于系统资源不足等原因,JSP容器可能会以某种不确定的方式将Servlet实例从内存中移除,发生这种情况时,JSP容器首先会调用jspDestroy()方法,然后Servlet实例会被加入“垃圾收集”处理。
第8步、当请求处理完成后,响应对象由JSP容器接收,并将HTML格式的响应信息发送回客户端。
(2)运行过程总结
了解了JSP的运行原理后,完全可以利用其中的一些步骤来做一些工作,例如,可以在jspInit()中进行一些初始化工作(建立数据库的连接、建立网络连接、从配置文件中获取一些参数等),可以在jspDestroy()中释放相应的资源等。

二、JSP基础语法
(一)JSP页面的基本构成
1、JSP模版元素

  • JSP页面中的HTML内容称之为JSP模版元素。
      - JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。

<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>

2、JSP表达式
JSP脚本表达式(expression)用于将程序数据输出到客户端

语法:<%= 变量或表达式 %>

举例:输出当前系统时间: <%= new java.util.Date() %>

JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(…) 将数据输给客户端。

JSP脚本表达式中的变量或表达式后面不能有分号(;)。

3、JSP脚本片断
JSP脚本片断用于在JSP页面中编写多行Java代码。语法:
    <%
    多行java代码
    %>
在<% %>中可以定义变量、编写语句,不能定义方法。
注意事项:

JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。
在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
4、JSP声明
JSP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面。语法:
<%!
    java代码
    %>
1
2
3
所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。
  多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
  JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。

5、JSP注释
在JSP中,注释有两大类:显式注释和隐式注释
这三种注释的区别:

<%
//JAVA中的单行注释

/*
    JAVA中的多行注释
*/

%>

<%–JSP自己的注释–%>
1
2
3
4
5
6
7
8
9
10
11
三、JSP指令
JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。
(一)page指令
1、基本概念
在JSP页面中,经常需要对页面的某些特性进行描述,例如,页面的编码方式,JSP页面采用的语言等,这些特性的描述可以通过page指令实现。

2、语法格式
<%@ page 属性名1 = “属性值1” 属性名2 = “属性值2” …%>
1
page用于声明指令名称,属性用来指定JSP页面的某些特性。page指令还提供了一系列与JSP页面相关的属性。
3、常用属性
属性名称 取值范围 描述
language java 指定JSP页面所用的脚本语言,默认为Java
import 任何包名、类名 指定在JSP页面翻译成的Servlet源文件中导入的包或类。import是唯一可以声明多次的page指令属性。一个import属性可以引用多个类,中间用英文逗号隔开
session true、false 指定该JSP内是否内置Session对象,如果为true,则说明内置Session对象,可以直接使用,否则没有内置Session对象。默认情况下,session属性的值为true。需要注意的是,JSP 容器自动导入以下4个包:java.lang.、javax.servlet.、javax.servlet.jsp.、javax.servlet.http.
isErrorPage true、false 指定该页面是否为错误处理页面,如果为true,则该JSP内置有一个Exception对象的exception,可直接使用。默认情况下,isErrorPage的值为false
errorPage 某个JSP页面的相对路径 指定一个错误页面,如果该JSP程序抛出一个未捕捉的异常,则转到errorPage指定的页面。errorPage指定页面的isErrorPage属性为true,且内置的exception对象为未捕捉的异常
contentType 有效的文档类型 指定当前JSP页面的MIME类型和字符编码,例如:HTML格式为text/html、纯文本格式为text/plain、JPG图像为image/jpeg、GIF图像为image/gif、Word文档为application/msword
pageEnCoding 当前页面 指定页面编码格式
(二)include指令
1、基本概念
在实际开发时,有时需要在JSP页面中包含另一个JSP页面,这时,可以通过include指令实现。
2、语法格式
<%@ include file=“被包含的文件地址” %>
1
include指令只有一个file属性,用于指定要包含文件的路径。需要注意的是,插入文件的路径一般不以“/”开头,而是使用相对路径。
3、常见问题
(1)被引入的文件必须遵循JSP语法,其中的内容可以包含静态HTML、JSP脚本元素和JSP指令等普通JSP页面所具有的一切内容。
(2)除了指令元素之外,被引入的文件中的其他元素都被转换成相应的Java源代码,然后插入进当前JSP页面所翻译成的Servlet源文件中,插入位置与include指令在当前JSP页面中的位置保持一致。
(3)file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前Web应用程序的根目录(注意不是站点根目录);否则,表示相对于当前文件。需要注意的是,这里的file属性指定的相对路径是相对于文件(file),而不是相对于页面(page)。
(4)在应用include指令进行文件包含时,为了使整个页面的层次结构不发生冲突,建议在被包含页面中将·,等标签删除,因为在包含页面的文件中已经指定了这些标签。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值