JSP学习笔记

JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。

一、JSP概述:

JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

与纯 Servlets相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。

JSP容器与Web服务器协同合作,为JSP的正常运行提供必要的运行环境和其他服务,并且能够正确识别专属于JSP网页的特殊元素

二、JSP处理过程

以下步骤表明了Web服务器是如何使用JSP来创建网页的:
(1)就像其他普通的网页一样,您的浏览器发送一个HTTP请求给服务器。
(2)Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
(3)JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
(4)JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。
(5)Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
(6)Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
(7)最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。

一般情况下,JSP引擎会检查JSP文件对应的servlet是否已经存在,并且检查JSP文件的修改日期是否早于servlet。如果JSP文件的修改日期早于对应的servlet,
那么容器就可以确定JSP文件没有被修改过并且servlet有效

三、JSP的生命周期

JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。

以下是JSP生命周期中所走过的几个阶段:
(1)编译阶段:servlet容器编译servlet源文件,生成servlet类
(2)初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
(3)执行阶段:调用与JSP对应的servlet实例的服务方法
(4)销毁阶段:调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例

1、JSP编译

当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。
编译的过程包括三个步骤:
(1)解析JSP文件。
(2)将JSP文件转为servlet。
(3)编译servlet。

四、JSP语法

1、脚本程序——–> <% %>

脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。
脚本程序的语法格式: <% 代码片段 %>
或者,也可以编写与其等价的XML语句,就像下面这样:

 <jsp:scriptlet>
   代码片段
</jsp:scriptlet>

注意:
(1)中文编码问题(改为UTF-8即可)
如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

(2)JSP页面在WebContent根目录下,访问地址是:localhost:8080/工程名/文件名.jsp

2、JSP声明 ——–>
 <jsp:declaration>
   代码片段
</jsp:declaration> 

程序示例:

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Circle a = new Circle(2.0); %> 
3、JSP表达式——–> <%= %>

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。
由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

JSP表达式的语法格式:<%= 表达式 %>
同样,您也可以编写与之等价的XML语句:

<jsp:expression>
   表达式
</jsp:expression>
4、JSP注释

(1)<%– 注释 –%>
JSP注释,注释内容不会被发送至浏览器甚至不会被编译
(2)
HTML注释,通过浏览器查看网页源代码时可以看见注释内容

5、JSP指令 ——–> <%@ %>

JSP指令用来设置与整个JSP页面相关的属性。
JSP指令语法格式:

<%@ directive attribute="value" %>

三种指令标签:

指令
(1)<%@ page … %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
(2)<%@ include … %> 包含其他文件
(3)<%@ taglib … %> 引入标签库的定义,可以是自定义标签

6、JSP行为

JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等。
行为标签只有一种语法格式,它严格遵守XML标准:

<jsp:action_name attribute="value" />

行为标签基本上是一些预先就定义好的函数,下表罗列出了一些可用的JSP行为标签:

(1)jsp:include 用于在当前页面中包含静态或动态资源
(2)jsp:useBean 寻找和初始化一个JavaBean组件
(3)jsp:setProperty 设置 JavaBean组件的值
(4)jsp:getProperty 将JavaBean组件的值插入到 output中
(5)jsp:forward 从一个JSP文件向另一个文件传递一个包含用户请求的request对象
(6)jsp:plugin 用于在生成的HTML页面中包含Applet和JavaBean对象
(7)jsp:element 动态创建一个XML元素
(8)jsp:attribute 定义动态创建的XML元素的属性
(9)jsp:body 定义动态创建的XML元素的主体
(10)jsp:text 用于封装模板数据

7、JSP九大隐式对象

JSP支持九个自动定义的变量,称为隐含对象。

对象                      描述

(1)request—>HttpServletRequest类的实例
(2)response—>HttpServletResponse类的实例
(3)out —>PrintWriter类的实例,用于把结果输出至网页上
(4)session—>HttpSession类的实例
(5)application—>ServletContext类的实例,与应用上下文有关
(6)config—>ServletConfig类的实例
(7)pageContext —>PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
(8)page—>类似于Java类中的this关键字(当前Servlet对象)
(9)Exception—>Exception类的对象,代表发生错误的JSP页面中对应的异常对象

五、JSP指令:

1、Page指令

(1)Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。
Page指令的语法格式:<%@ page attribute="value" %>
等价的XML格式:<jsp:directive.page attribute="value" />

(2)page相关的属性为:
buffer—->指定out对象使用缓冲区的大小
autoFlush—->控制out对象的 缓存区
contentType—->指定当前JSP页面的MIME类型和字符编码
errorPage—->指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage —->指定当前页面是否可以作为另一个JSP页面的错误处理页面
extends —->指定servlet从哪一个类继承
import—->导入要使用的Java类
info—->定义JSP页面的描述信息
isThreadSafe—->指定对JSP页面的访问是否为线程安全
language—->定义JSP页面所用的脚本语言,默认是Java
session—->指定JSP页面是否使用session
isELIgnored—->指定是否执行EL表达式
isScriptingEnabled—->确定脚本元素能否被使用

2、Include指令(静态包含)

JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
Include指令的语法格式如下:<%@ include file="文件相对 url 地址" %>
include 指令中的文件名实际上是一个相对的 URL 地址。
如果您没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。
等价的XML语法:

<jsp:directive.include file="文件相对 url 地址" />
3、Taglib指令

JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
Taglib指令的语法:

<%@ taglib uri="uri" prefix="prefixOfTag" %> 

uri属性确定标签库的位置,prefix属性指定标签库的前缀。
等价的XML语法:

<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值