JSP知识

1. 什么是JSP

JSP 全名为 Java Server Pages ,中⽂名叫 java 服务器⻚⾯,其根本是⼀个简化的 Servlet 设计,它 是由
Sun Microsystems 公司倡导、许多公司参与⼀起建⽴的⼀种动态⽹⻚技术标准。 JSP 技术有点类似 ASP
术,它是在传统的⽹⻚ HTML ⽂件 (*.htm,*.html) 中插⼊ Java 程序段 (Scriptlet) JSP 标记 (tag) ,从⽽形成
JSP ⽂件,后缀名为 (*.jsp) 。 ⽤ JSP 开发的 Web 应⽤是跨平台的,既能在 Linux 下运⾏,也能在其他操作系
统上运⾏。
JSP 将⽹⻚逻辑与⽹⻚设计的显示分离,⽀持可重⽤的基于组件的设计,使基于 Web 的应⽤程序的开
发变得迅速和容易。
*.html 静态⻚⾯ ( 包含固定的⻚⾯内容 )
*.jsp 动态⻚⾯ ( ⻚⾯数据可以动态更新 , ⽀持嵌套 java 代码和 html 代码 )
 

2. JSP为什么会出现

1.servlet 展示信息的不⽅便,引⼊了 JSP
2.JSP 本质上也是⼀个 servlet
3.JSP 就是在 HTML ⻚⾯中嵌⼊了 java 代码。
 

3.JSP中如何嵌套java代码

声明标签 <%! 变量或者⽅法声明 %>
表达式标签 <%= 表达式 %> 在⻚⾯上显示的效果
程序代码标签 <%java 代码 %> ⻚⾯上动态展示内容
 

4. JSP的原理

当浏览器访问 http://localhost:8080/index.jsp 服务器发现后缀为 .jsp ,它会根据路径找到
index.jsp ⽂件,会将 index.jsp 翻译成 index_jsp.java ⽂件,对这个 java ⽂件进⾏编译,产⽣⼀个
index_jsp.class ⽂件,将 class ⽂件加载运⾏。将 JSP 翻译成 java ⽂件,它是将 JSP 中的所有的 HTML 代码通
过流进⾏输出,也就是说最终翻译成 class ,被虚拟机加载,它本质是 servlet ,它就会往回响应,响应回
去就是把 JSP 中的 HTML 代码以流的⽅式写回浏览器。所以在 JSP 中展示出了 HTML 代码
 

5. JSP的内置对象

JSP 中⼀共预先定义了 9 个这样的对象,分别为: request response session application out
pagecontext config page exception
1 request 对象
<!-- html 注释内容 , 查看源码时能看到 -->
<%-- jsp 注释 , 查看⻚⾯源码时看不到 --%>   request 对象是 javax.servlet.httpServletRequest 类型的对象。 该对象代表了客户端的请求信
息,主要⽤于接受通过 HTTP 协议传送到服务器的数据。(包括头信息、系统信息、请求⽅式以及请求参
数等)。 request 对象的作⽤域为⼀次请求。
2 response 对象
   response 代表的是对客户端的响应,主要是将 JSP 容器处理过的对象传回到客户端。 response
对象也具有作⽤域,它只在 JSP ⻚⾯内有效。所属类型 :HttpServletResponse
3 session 对象
   session 对象是由服务器⾃动创建的与⽤户请求相关的对象。服务器为每个⽤户都⽣成⼀个
session 对象,⽤于保存该⽤户的信息,跟踪⽤户的操作状态。 session 对象内部使⽤ Map 类来保存数
据,因此保存数据的格式为 “Key/value” session 对象的 value 可以使复杂的对象类型,⽽不仅仅局限
于字符串类型。 HttpSession
4 application 对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则 application 对象中保存的信息
会在整个应⽤中都有效。与 session 对象相⽐, application 对象⽣命周期更⻓,类似于系统的 全局变量
ServletContext
区别:
request: 单次请求
session: 浏览器访问期间 ( 会话期间 )
application: 服务器启动期间 , 所存的数据可以跨浏览器
5 out 对象
   out 对象⽤于在 Web 浏览器内输出信息,并且管理应⽤服务器上的输出缓冲区。在使⽤ out
象输出数据时,可以对数据缓冲区进⾏操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空
间。待数据输出完毕后,要及时关闭输出流。
示例 :
out.print("<script type='text/javascript'>alert(' ⽤户名不存
');location.href='index.jsp'</script>");
6 pageContext 对象
pageContext 对象的作⽤是取得任何范围的参数,通过它可以获取 JSP ⻚⾯的 out
request reponse session application 等对象。 pageContext 对象的创建和初始化都是由容器来完
成的,在 JSP ⻚⾯中可以直接使⽤ pageContext 对象。
7 config 对象
   config 对象的主要作⽤是取得服务器的配置信息。通过 pageConext 对象的 getServletConfig() ⽅法
可以获取⼀个 config 对象。当⼀个 Servlet 初始化时,容器把某些信息通过 config 对象传递给这个
Servlet 。 开发者可以在 web.xml ⽂件中为应⽤程序环境中的 Servlet 程序和 JSP ⻚⾯提供初始化参数。
8 page 对象
   page 对象代表 JSP 本身,只有在 JSP ⻚⾯内才是合法的。 page 隐含对象本质上包含当前 Servlet
接⼝引⽤的变量,类似于 Java 编程中的 this 指针。
9 exception 对象
   exception 对象的作⽤是显示异常信息,只有在包含 isErrorPage="true" 的⻚⾯中才可以被使⽤,
在⼀般的 JSP ⻚⾯中使⽤该对象将⽆法编译 JSP ⽂件。 excepation 对象和 Java 的所有对象⼀样,都具有系
统提供的继承结构。 exception 对象⼏乎定义了所有异常情况。在 Java 程序中,可以使⽤ try/catch 关键
字来处理异常情况; 如果在 JSP ⻚⾯中出现没有捕获到的异常,就会⽣成 exception 对象,并把
exception 对象传送到在 page 指令中设定的错误⻚⾯中,然后在错误⻚⾯中处理相应的 exception
象。
(1) 先在可能发⽣错误的⻚⾯中添加 errorPage 属性 :
(2) error.jsp ⻚⾯中设置 isErrorPage="true" 的属性
( 使⽤ exception 对象之前,需要先将当前⻚⾯设置成错误⻚⾯)
jsp 的作⽤域 :
pageContext -> request -> session -> application
当前⻚⾯ 单次请求有效 当前会话期间 服务器运⾏期间有效
 

EL表达式

1 )什么 Expression Language 表达式语⾔
最初定义于 JSTL1.0 部分
JSP2.0 中, EL JSTL 中剥离出来,放置在 JSP 规范中,称为 JSP2.0 规范的⼀部分
JSP 中使⽤ EL 表达式,可以简化对象和变量的访问是 EL 表达式
 
2 EL 表达式语法
语法格式: ${ 需要展示信息的名字 }
注意:
当表达式没有指定变量或者对象的范围时,
那么容器会依次从 pageContext—>request—>session—>application 中查找该变量或对象 , 我们可以
通过隐含对象获得指定作⽤域的值 :
pageScope 对象,⽤于获取当前⻚⾯的属性值
requestScope 对象,⽤于获取请求范围的属性值
sessionScope 对象,⽤于获取会话范围的属性值
applicationScope 对象,⽤于获取程序范围的属性值
语法 :
${requestScope.key}

 

JSTL

(1) 什么是 JSTL
JSP 标准标签库( JSTL )是⼀个 JSP 标签集合,它封装了 JSP 应⽤的通⽤核⼼功能。
JSTL ⽀持通⽤的、结构化的任务,⽐如 迭代,条件判断, XML ⽂档操作,国际化标签, SQL 标签。 除了
这些,它还提供了⼀个框架来使⽤集成 JSTL 的⾃定义标签。
根据 JSTL 标签所提供的功能,可以将其分为 5 个类别。 核⼼标签 格式化标签 sql 标签 xml 标签 jstl 函数
(后⾯详细解释)
(2) JSTL 的作⽤和语法格式
作⽤:简化 jsp ⻚⾯编写代码
语法格式:
1. 下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两
jar ⽂件: standard.jar jstl.jar ⽂件拷⻉到 /WEB-INF/lib/ 下。
2. JSP ⻚⾯中引⼊ <%@ taglib prefix=” ⻚⾯使⽤的名称 ” uri=” 功能范围的路径 ”%>
功能范围URL前缀
core
http://java.sun.com/jsp/jstl/core
c
i18n
http://java.sun.com/jsp/jstl/fmt
fmt
sql
http://java.sun.com/jsp/jstl/sql
sql
xml
http://java.sun.com/jsp/jstl/xml
x
functions
http://java.sun.com/jsp/jstl/function
fn

 

 

 

(3) 核⼼标签
 
①核⼼标签是最常⽤的 JSTL 标签。引⽤核⼼标签库的语法如下:
 
<% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
 
 
② 核⼼标签的分类
表达式操作 out set remove catch
流程控制 if choose when otherwise
迭代操作 forEach forTokens
URL 操作 import param url redirect
Set 标签
c:set> 主要⽤来将变量存储⾄ JSP 范围中 或是 JavaBean 的属性或 Map 对象中
 
c:out> 主要⽤来显示数据的内容
 
c:remove> 主要负责移除变量
 
 
 
c:if> 主要⽤于进⾏ if 判断 , 如果为 true, 则输出标签体中的内容
 
c:choose>, c:when>, c:otherwise> 作⽤相当于 if-else
 
c:forEach> 循环控制,它可以将数组 , 集合 (Collection) 中的成员循序浏览⼀遍。
 
(4) 格式化标签
1 fmt:formatDate 作⽤:将⽇期类型格式化为指定模式的字符串
属性
value: 将要被格式化的数据
pattern :格式化的模式,与 SimpleDateFormat 的参数设置⼀样
var: 格式化后的字符串所要存放的变量,若不指定 var ,则会将格式化的结果直接显示在⻚⾯
scope :变量存放的域属性空间,默认 page
type :其取值为 date time both ,表示给出的 value 是⽇期、时间、还是两者都包含,默认是 date
2 fmt:parseDate 作⽤:⽤于将指定字符串转化为⽇期类型
<fmt:parseDate value="${now }" pattern="yyyy-MM-dd" var="today"/>
Value 服务器获取的时间
Pattern: 转换的格式
Var: ⻚⾯显示的变量
3 fmt:formatNumber 按照指定格式对数字进⾏格式化
属性
maxIntegerDigits :整数部分最多的位数
minIntegerDigits :整数部分最少的位数
maxFrctionDigits :⼩数部分最多的位数
minFrctionDigits :⼩数部分最少的位数
var :存储格式化结果的变量
scope var 属性的作⽤域
integerOnly :是否只解析整型数 true 或者浮点数 false
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值