JavaWeb《JSP程序设计与案例实战》读书笔记总结
⽬录
⼀、JSP 概述
JSP 概念
JSP 是⼀种动态页⾯技术,主要⽬的是将表⽰逻辑从 Servlet 中分离出来。
JSP 组成
⼀个 JSP 页⾯由两部分组成:静态部分(如HTML、CSS等)和动态部分(如 JSP 指令、JSP 脚本元素和变量等)。
JSP 执⾏过程
客户端发出 request 请求
JSP Container 将 JSP 转译成 Servlet 的源代码
将产⽣的 Servlet 源代码经过编译后,加载到内存执⾏
把结果 Response (响应)⾄客户端
在执⾏ JSP ⽹页时,通常分为两个时期:转译时期 和 请求时期。
转译时期:JSP ⽹页转译成 Servlet 类
请求时期:Servlet 类执⾏后,响应结果⾄客户端
其中,系统在转译期间做了两件事情:将 JSP ⽹页转译为 Servlet 源代码 *.java(转译);将 Servlet 源代码 *.java 编译成字节码⽂件*.class(编译)。
⼆、JSP 脚本元素、指令
JSP 脚本元素
JSP 脚本元素就是嵌⼊在 JSP 页⾯中的 Java 程序,这些 Java 程序将出现在由当前 JSP 页⾯⽣成的 Servlet 中。按照不同的嵌⼊⽅式和不同的作⽤,脚本元素可分为 3 种:表达式、Scriptlet、声明。
表达式:计算 Java 表达式的值,格式为**<%= Java 表达式 %>**
Scriptlet:在 JSP 页⾯中嵌⼊⼀段有效的 Java 程序段,可以是变量的声明、⽅法的调⽤,格式为**<
% Java 代码 %>**
声明:在 JSP 页⾯中声明 Java ⽅法或变量等,⽤于定义 JSP 代表的 Servlet 类的成员变量和⽅法,格式为**<%! Java 代码 %>** JSP 指令
JSP 指令相当于在编译期间的命令,⽤来设置整个 JSP 页⾯相关的属性。在 JSP 页⾯转 Servlet 类过程中起作⽤,影响由 JSP 页⾯⽣成的 Servlet 类的整体结构。主要包含三种指令:page指令,include指令,taglib指令。格式为:<%@ 指令名称 属性1=“属性名称” ……%>
page 指令:页⾯指令,对整个页⾯有效与代码本⾝位置⽆关,通常写在最前⾯。该指令⽤来定义整个 JSP 页⾯的⼀些属性和这些属性的值,除了 import 属性外,其他属性只能在指令中出现⼀次。格式为**<%@ page 属性1=“属性1的值” %>**
include 指令:⽤于在 JSP 页⾯中静态的插⼊⼀个⽂件,被插⼊的⽂件可以是 JSP,HTML,⽂本⽂件或者⼀段 Java 代码。使⽤了include 指令的 JSP 页⾯在转换为 Java ⽂件时,将被插⼊的⽂件在当前 JSP 页⾯该指令的位置做⼀个整体的插⼊,合并成⼀个新的JSP 页⾯,然后将这个 JSP 页⾯转译成 Java ⽂件。格式为**<%@ include file=“⽂件名”%>**。善⽤include指令可提⾼代码重⽤性
include 指令称为静态包含(在编译之前做了处理),即先将要包含的⽂件信息嵌⼊相应的 JSP 页⾯,再统⼀转换成⼀个 Servlet 类。
include 指令不能传参数。
include 被包含的页⾯与包含页⾯访问的是同⼀个 request 内嵌对象。
taglib 指令:在 JSP 页⾯中,将标签描述⽂件(tld ⽂件)引⼊该页⾯中,设置前缀,并利⽤标签的前缀去使⽤标签描述符⽂件(tld ⽂件)中的标签。tld ⽂件是⼀个符合规范的 XML ⽂件,它描述⼀个或者更多标签和它们的属性,将这个⽂件放置在 WEB-INF ⽬录中,放置该⽂件的⽬的是指定关于标签处理程序的类名和标签允许的属性,可以提供标签库中类和 JSP 中对标签引⽤的映射关系。格式为**<%@ taglib uri=“标签描述符⽂件” prefix=“前缀名” %>**
三、JSP 隐式对象
JSP 隐式对象就是 JSP 容器提供的不⽤声明就可以在 JSP 页⾯的 Java 程序块和表达式部分直接使⽤的对象,也成为 JSP 内置对象。
JSP 隐式对象是 Web 容器加载的⼀组类的实例,它不想⼀般的 Java 对象那样⽤ ”new“ 来获取实例,⽽是直接在 JSP 页⾯的 Java 程序⽚和表达式部分使⽤。
JSP 可以使⽤ Java 定义的隐式对象来访问⽹页的动态内容。
jsp页面输出的三种方式JSP 隐式对象(九个)
输⼊/输出对象(三个)
request:接收客户端发送来的请求信息,客户端的请求信息被封装在 request 对象中,通过 request 才能了解到客户的需求,然后做出响应。
response:对客户端的请求进⾏回应,将 Web 服务器处理后的结果发回给客户端。
out:输出流,⽤于向客户端输出数据。
作⽤域通信对象(三个)
对象名称作⽤范围周期
session某个⽤户开始于某⽤户访问应⽤程序,终⽌于⽤户关闭浏览器
application整个应⽤程序开始于应⽤程序服务器启动,终⽌于服务器的停⽌
pageContext某个页⾯内开始于页⾯的调⽤,终⽌于页⾯的关闭
request⼀个 request 请求范围开始于⼀个 request 请求,终⽌于请求结束公共⽅法有:setAttribute 与 getAttribute
session:基于会话,不同的⽤户拥有不同的会话。同⼀⽤户共享 session 对象定义的所有属性。通常⽤来保存⽤户的信息,以便于服务器跟踪每个⽤户的操作状态。
application:代表 Web 应⽤本⾝,整个 Web 应⽤共享⼀个 application 对象,主要⽤于在多个 JSP 页⾯或者 Servlet 之间共享变量,负责提供应⽤程序在服务器中运⾏时的⼀些全局信息。
PageContext:JSP 页⾯本⾝的上下⽂,作⽤范围是在同⼀页⾯使⽤它可以访问页⾯作⽤域中定义的所有隐式对象。其⾃⾝也是⼀个域对象,可以⽤来保存数据,并可以通过它操作另外三个域(request、session、servletContext)。
Servlet 对象(两个)
page:页⾯实例的引⽤,可以被看作是整个 JSP 页⾯的代表,this 的同义词,使⽤ page 可以访问 Servlet 类中的所有变量和⽅法。
config:代表了存储在编译 JSP 页⾯的过程中创建的 Servlet 信息,提供了检索 Servlet 初始化参数的⽅法。
错误对象(⼀个)
exception:错误对象,表⽰在执⾏代码过程中引发的异常。
四、JSP 标准动作
JavaBean 组件
JavaBean 概念
JavaBean 是软件项⽬中⼀种可以重复使⽤的组件。JavaBean 基于 Java 语⾔,实际上是⼀种 Java 类,通过封装属性和⽅法成为具有某种功能或者处理某个业务的对象,简称 Bean。通过 JSP 页⾯调⽤ JavaBean,可以将⼤量的 Java 代码从 JSP 页⾯中分离出来,使业务处理和页⾯展⽰得以分离,提⾼页⾯的可维护性。
JavaBean 特点
可以实现代码的重复利⽤
易编写、易维护、易使⽤
可以在任何安装了 Java 运⾏环境的平台上使⽤,⽽不需要重新编译
JavaBean 编写
编写 JavaBean 就是编写⼀个 Java 类,这个类创建的⼀个对象称作 Bean。⼀般遵循⼀下规则:
类中访问属性的⽅法都必须是 public 的,⼀般属性是 private 的
⼀般使⽤ getXxx() 和 setXxx() 来获取与修改属性
boolean 类型的成员变量可以使⽤ “is” 来代替 “get”
必须提供⽆参的构造⽅法
JSP 标准动作
JSP 标准动作⼜称为 JSP 动作元素(Action Elements),是 JSP 的内置标记,由 JSP 容器实现,运⾏时就⾃动具有这些动能。JSP 动作可以直接在 JSP 页⾯使⽤,每个标准动作能实现⼀定的功能。
动作为请求处理阶段提供信息。JSP 动作遵循 XML 元素的语法,有⼀个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签等。
JSP 2.0 定义了 20 个标准的动作元素,暂且学习其中最常⽤的 7 个标准动作。
<jsp:forward page=“转发到的页⾯ url” />
实现页⾯的请求转发:将客户端所发的请求从⼀个 JSP 页⾯转发到另⼀个 JSP 页⾯。转发的过程中,客户端浏览器上显⽰的内容会变,但是请求不变,就是浏览器的URL地址不变。
<jsp:param name=“参数名” value=“参数值” />
⽤于实现参数的传递,该动作以键值对的形式为其他动作提供附加的参数信息。不能单独使⽤,需要作为其他动作(forward、include、plugin)的⼦动作出现。传递的参数会被封装在 request 请求中。
<jsp:include page=“包含⽂件URL地址” flush=“true | false” />
⽤于包含静态和动态的⽂件到当前页⾯中。涉及到动态包含,与 include 指令在处理细节上有很⼤不同。
<jsp:useBean id=“名称” class=“带有包名的类名” scope=“所存储的域范围” />
⽤于在指定的域范围内查指定的 JavaBean 对象,如果到,则直接返回该 JavaBean 对象的引⽤;如果未到,则实例化⼀个新的 JavaBean 对象并将它以指定的名称存储到指定的域范围中。
<jsp:getProperty name=“JavaBean实例对象的名称” property=“JavaBean实例对象的属性名” />
⽤于读取 JavaBean 对象的属性,但是必须要 JavaBean 类中提供公有的 get ⽅法。
<jsp:setProperty name=“” property=“” value=“{string|<%=expression%>}” param=“parameterName” />⽤于设置 JavaBean 对象的属性,但是必须要 JavaBean 类中提供公有的 set ⽅法。
<jsp:plugin type=“bean|applet” code=“classFileName” height=“displayPixels” width=“displayPixels”
jreversion=“JREVersionNumber” > <jsp:fallback> text message for user </jsp:fallback> </jsp:plugin>允许在页⾯中使⽤普通的 HTML 标记 <applet……></applet> 让客户下载运⾏⼀个 Java applet 程序。
五、JSP 表达式语⾔
EL 表达式(Expression Language)
EL 概念
通常⽤来简化数据的访问操作,可⽤来代替传统的基于 “<%= %>” 形式的 Java 表达式等,提供更清晰的视图层实现,使业务逻辑处理层和视图层尽可能的低耦合。
EL 语法
语法结构⾮常简单,${expression},expression 可以包含常量、操作符、变量(对象引⽤)、函数调⽤。
常量说明:Boolean、Integer、Floating Point、String、null
操作符:算术型、逻辑型、关系型、空、条件型
隐式对象:pageContext、pageScope、requestScope、sessionScope、applicationScope、param、paramValues、header、headerValues、cookie、initParam
EL 运算符
提供 “.” 和 “[]” 两种运算符来存取数据,其中动态取值⽤⽅括号,有特殊字符⽤⽅括号。
EL 常见应⽤
获取数据
执⾏运算
获取 Web 开发常⽤对象
调⽤ Java ⽅法,但需要同时满⾜以下两点才能被 EL 调⽤:
只能是 Java 类的静态⽅法
这个 Java 类的静态⽅法需要另外在⾃定义的 TLD ⽂件中描述
六、JSP 中使⽤数据库
JDBC ⽬的
设计出⼀种通⽤的数据库访问接⼝,使 Java 程序员使⽤ JDBC 可以连接任何提供了 JDBC 驱动程序的数据库系统。这样就使程序员⽆需过多的了解特定数据库的特点,⼤⼤简化和加快了开发速度。也就是俗称的 “加⼀层”,这样的⽅式在解决计算机领域的问题中⾮常常见。
JDBC ⽤途
数据库建⽴连接
发送 SQL 语句
处理结果
JDBC 操作步骤
加载数据库驱动
建⽴数据库连接
创建⽤于向数据库发送 SQL 语句的 Statement 对象,并执⾏ SQL 语句
处理查询结果
释放数据库资源
JDBC 事务处理
事务指逻辑上的⼀组操作,组成这组操作的各个单元,或者全部成功,或者全部不成功
Connection.setAutoCommit(false):关闭默认的⾃动提交,相当于启动事务
Connectionmit():提交事务
七、JSTL 概述
JSTL 不建议使⽤,⽬前的开发模式都是前后端分离了,所以这部分就了解了解即可。
JSTL 概念
JSTL 全称为 JavaServer Pages Standard Tag Library,是⼀个实现 Web 应⽤程序中常见的通⽤功能的定制标记库集,这些功能包括迭代,条件判断、数据管理格式化、XML 操作以及数据库访问。这些标记库可以实现⼤量服务端 Java 应⽤程序常⽤的基本功能。
JSTL 作⽤:在应⽤程序服务器之间提供了⼀致的接⼝,最⼤程度提⾼了 Web 应⽤在各应⽤服务器之间的移植。简化了 JSP 和 Web 应⽤程序的开发。
JSTL 标签库的组成
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论