文章目录
-
- 🌍一. JSP
-
- ❄️1.JSP介绍
- ❄️2.JSP 运行原理
- ❄️3.page 指令(常用的)
- ❄️ 4.JSP 三种常用脚本
-
- 1.声明脚本
- 2.表达式脚本
- 3.代码脚本
- ❄️5.JSP 内置对象
- ❄️6.JSP 域对象
- 🌍二. EL
-
- ❄️1.EL 表达式介绍
- ❄️2.EL 运算操作
- ❄️3.EL 的 11 个隐含对象
- 🌍三. JSTL
-
- ❄️1.JSTL 标签库介绍
- ❄️2. core 核心库
🙋♂️ 作者:@whisperrr.🙋♂️ 👀 专栏:JavaWeb👀 💥 标题:【JavaWeb10】服务器渲染技术 — JSP💥 ❣️ 寄语:比较是偷走幸福的小偷❣️
🌍一. JSP
❄️1.JSP介绍
1.为什么需要 JSP
程序员在开发过程中,发现 servlet 做界面非常不方便
引出 JSP 技术,JSP 公式 jsp=html+java 片段+标签+javascript+css
2.JSP 全称是 Java Server Pages,Java 的服务器页面 3.JSP 这门技术的最大的特点在于,写 JSP 就像在写 HTML
● 相比 html 而言,html 只能为用户提供静态数据,而 JSP 技术允许在页面中嵌套 java 代码,为用户提供动态数据 ● 相比 Servlet 而言,Servlet 很难对数据进行排版,而 jsp 除了可以用 java 代码产 生动态数据的同时,也很容易对数据进行排版。
4.jsp 技术基于 Servlet, 你可以理解成 JSP 就是对 Servlet 的包装. 5.会使用 JSP 的程序员, 再使用 thymeleaf 是非常容易的事情, 几乎是无缝接轨. 6.创建 hspedu_jsp WEB 项目,并引入 jar 7. jsp 页面不能像 HTML 页面, 直接用浏览器运行。只能通过浏览器访问 Tomcat 来访问jsp 页面
❄️2.JSP 运行原理
1.jsp 页面本质是一个 Servlet 程序, 其性能是和 java 关联的, 只是长得丑. 2. 第 1 次访问 jsp 页面的时候。Tomcat 服务器会把 jsp 页面解析成为一个 java 源文件。并 且 对 它 进 行 编 译 成 为 .class 字 节 码 程 序 。 分析下 cal_jsp.java 的源码,可以看出本质就是 Servlet, 要看到源码和分析类图,需要加入 jasper.jar 这个包[在 tomcat/lib 下拷贝]
❄️3.page 指令(常用的)
❄️ 4.JSP 三种常用脚本
1.声明脚本
1.声明脚本的格式是: <%! 声明 java 代码 %>
作用:定义 jsp 的需要属性、方法、静态代码块和内部类等
2.代码演示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp 声明脚本应用实例</title>
</head>
<body>
<h1>jsp 声明脚本应用实例</h1>
<%!
//声明属性 -> 这个属性就是该 jsp 文件生成的 servlet statement_jsp 类的
private Integer id;
private String name = "老韩同学";
private String job;
private static String company;
private Double sal;
//静态代码块
static {
company = "字节跳动";
}
//声明方法
public String getName() {
return name;
}
%>
<hr/>
</body>
</html>
2.表达式脚本
1.表达式脚本基本语法
2.代码演示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp 表达式脚本</title>
</head>
<body>
<h1>jsp 表达式脚本应用实例</h1>
<%!
String name = "字节跳动";
%>
<hr/>
<h1>个人信息</h1>
用户名= <%=name%><br/>
工作是: <%="java 工程师"%><br/>
得到参数= <%=request.getParameter("sex")%>//null
</body>
</html>
3.代码脚本
❄️5.JSP 内置对象
● 基本介绍 [讲解] 1、JSP 内置对象(已经创建好的对象, 直接使用 inbuild),是指 Tomcat 在翻译 jsp 页面成为Servlet 后,内部提供的九大对象,叫内置对象 2、内置对象,可以直接使用,不需要手动定义
● JSP 九大内置对象
● 对照 Servlet 来理解就比较轻松了. (学技术的思路: 只要去学某个类,建议熟练该类的继承关系)
一张图, 展示了 JSP 的父类 HttpJspBase 继承关系, 说明 JSP 内置对象的来源是 Servlet 和HttpJspPage
❄️6.JSP 域对象
JSP 四大域对象介绍[作用:存取数据] 1.pageContext (域对象,存放的数据只能在当前页面使用),【示意图】学习技术小技巧:/自己尝试去根据理解画出示意图 2. request (域对象,存放的数据在一次 request 请求有效), 【示意图】
3. session(域对象,存放的数据在一次会话有效), 【示意图】
4. application(域对象,存放的数据在整个 web 应用运行期间有效, 范围更大), 【示意图】
JSP 请求转发标签
<jsp:forward page="/bb.jsp"></jsp:forwar
🌍二. EL
❄️1.EL 表达式介绍
EL 表达式全称:Expression Language,是表达式语言
EL 表达式主要是代替 jsp 页面的表达式脚本<%=request.getAttribute("xx")%>
EL 表达式输出数据的时,比 jsp 的表达式脚本简洁
EL 表达式基本语法: ${key1}, 你可以理解就是一个语法糖
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>el 表达式快速入门</title>
</head>
<body>
<% request.setAttribute("key", "key 值"); %>
jsp 表 达 式 脚 本 : <%=request.getAttribute("key") == null ? "" :
request.getAttribute("key")%><br/>
EL 表达式:${key}
</body>
</html>
❄️2.EL 运算操作



EL 的 empty 运算
empty 运算可以判断一个数据是否为空,如果为空,返回 true,否则返回 false 以下几种情况为空
● 值为 null ● 值为空串的时 ● 值是 Object 类型数组,长度为零 ● list 集合,元素个数为零 ● map 集合,元素个数为零
❄️3.EL 的 11 个隐含对象
EL 四个特定域变量
pageContext 对象介绍 协议: ${ pageContext.request.scheme } 服务器 ip:${ pageContext.request.serverName } 服务器端口:${ pageContext.request.serverPort } 工程路径:${ pageContext.request.contextPath } 请求方法:${ pageContext.request.method } 客户端 ip 地址:${ pageContext.request.remoteHost } 会话 id :${ pageContext.session.id }
🌍三. JSTL
❄️1.JSTL 标签库介绍


代码演示
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
韩顺平 Java 工程师
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSTL 快速入门</title>
</head>
<body>
<h1>JSTL 快速入门</h1>
<c:if test="${ 10 > 2 }">
<h1>10 > 2 为真</h1>
</c:if>
</body>
</html>
● taglib 引入标签,要放在行首 ● 导入 jstl jar 包后,要重新发布 web 工程,否则不识别 jstl
❄️2. core 核心库
1.<c:set />
<c:set /> set 标签可以往域中保存数据
2.<c:if />
<c:if test=“${ 10 > 2 }”>hello</c:if>
3.<c:choose> <c:when> <c:otherwise>标签
多路判断。跟 switch … case … default 非常接近
4.<c:forEach />标签
items 表示遍历的集合 var 表示遍历到的数据 begin 表示遍历的开始索引值 ,从 0 开始计算 end 表示结束的索引值 step 属性表示遍历的步长值 varStatus 属性表示当前遍历到的数据的状态,可以得到 step,begin,end 等属性值
评论前必须登录!
注册