服务器渲染技术-JSP个人理解

JSP个人浅谈

技术的现状和诞生起源

  • 当前使用情况
    JSP早已不是主流,但各公司的有部分项目还在使用并维护,对于非前后端分离的项目来说,相比较而言framemarker和thymeleaf使用较多,其中thymeleaf的语法与JSP很相似,掌握JSP的基本使用也可以很快上手thymeleaf。
  • 服务器模板引擎的优点
    对于非前后端分离项目,使用JSP开发更加快捷,项目搭建快,而thymeleaf是被springboot是完全支持的。
  • 为什么需要JSP
1. servlet 做界面非常不方便;
2. html页面无法通过原生的servlet获取动态的数据
  • 引出 JSP 技术,JSP 公式
 JSP=html+java 片段+标签+javascript+css

JSP基本介绍

  1. JSP 全称是 Java Server Pages,Java 的服务器页面;
  2. JSP 这门技术的最大的特点在于,写 JSP 就像在写 HTML。
    ● 相比 html 而言,html 只能为用户提供静态数据,而 JSP 技术允许在页面中嵌套 java 代码,
    为用户提供动态数据
    ● 相比 Servlet 而言,Servlet 很难对数据进行排版,而 jsp 除了可以用 java 代码产 生动态
    数据的同时,也很容易对数据进行排版。
  3. jsp 技术基于 Servlet, 你可以理解成 JSP 就是对 Servlet 的包装。
  4. 会使用 JSP 的程序员, 再使用 thymeleaf 是非常容易的事情, 几乎是无缝接轨.

JSP快速入门

首先要引入jasper.jar,注意jsp文件与html文件不同,是不能直接用浏览器打开的,需要用到tomcat
<%@ page import="com.alibaba.druid.support.json.JSONUtils" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2024/6/7 0007
  Time: 9:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
	<title>Title</title>
</head>
<body>
	<%
		String str = "Hello World!";
		System.out.println(str);
	%>
</body>
</html>

JSP 运行原理

  1. 第 1 次访问 jsp 页面的时候。Tomcat 服务器会把 jsp 页面解析成为一个 java 源文件。
    并 且 对 它 进 行 编 译 成 为 .class 字 节 码 程 序 。 看 下 test.jsp 对 应 的 test.java 和
    test.class 文件
    在这里插入图片描述
    test.java源码在这里插入图片描述

page 指令(常用的)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
  1. language 表示 jsp 翻译后是什么语言文件, 只支持 java
  2. contentType 表示 jsp 返回的数据类型,对应源码中 response.setContentType()参数值
  3. pageEncoding 属性 表示当前 jsp 页面文件本身的字符集
  4. import 属性 跟 java 源代码中一样。用于导包,导类

JSP 三种常用脚本

  1. 声明脚本基本语法
  • 声明脚本的格式是: <%! 声明 java 代码 %>
  • 作用:定义 jsp 的需要属性、方法、静态代码块和内部类等
  • 应用实例
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
	<title>jsp 声明脚本应用实例</title>
</head>
<body>
<%!
	//声明属性
	private Integer id;
	private String name = "Leon";
	private String job;
	private static String company;
	private Double sal;

	//静态代码块
	static {
		company = "字节跳动";
	}

	//声明方法
	public String getName() {
		return name;
	}

%>
</body>
</html>
  1. 表达式脚本基本语法
  • 表达式脚本的格式是:<%=表达式%>
  • 表达式脚本的作用是:在 jsp 页面上输出数据
  • 表达式脚本中的表达式不能以分号结束。
<%=request.getContextPath()%> 
  1. 代码脚本基本语法
  • 代码脚本的语法是:<% java 代码%>
  • 代码脚本的作用是:可以在 jsp 页面中,编写我们需要的功能(使用 java )
  • 可以由多个代码脚本块组合完成一个完整的 java 语句。
  • 代码脚本还可以和表达式脚本一起组合使用,在 jsp 页面上输出数据
<%
	List<Integer> list = new ArrayList<>();
	list.add(1);
	list.add(2);
	list.add(3);
	list.add(4);
	list.add(5);
	list.add(6);
%>

JSP注释

JSP注释和java的注释一样,idea快捷键ctrl+/

JSP内置对象

  • 基本介绍
  1. JSP 内置对象(已经创建好的对象, 直接使用 inbuild),是指 Tomcat 在翻译 jsp 页面成为
    Servlet 后,内部提供的九大对象,叫内置对象
  2. 内置对象,可以直接使用,不需要手动定义
  • JSP 九大内置对象
  1. out 向客户端输出数据,out.println(“”);
  2. request 客户端的 http 请求
  3. response 响应对象
  4. session 会话对象
  5. application 对应 ServletContext
  6. pageContext jsp 页面的上下文,是一个域对象,可以 setAttribue(),作用范围只是本页面
  7. exception 异常对象 , getMessage()
  8. page 代表 jsp 这个实例本身
  9. config 对应 ServletConfig

JSP 域对象

  • JSP 四大域对象介绍[作用:存取数据]
  1. pageContext (域对象,存放的数据只能在当前页面使用)
    在这里插入图片描述
    2.request (域对象,存放的数据在一次 request 请求有效)
    在这里插入图片描述
  2. session(域对象,存放的数据在一次会话有效)

在这里插入图片描述
3. application(域对象,存放的数据在整个 web 应用运行期间有效, 范围更大)
在这里插入图片描述

  • JSP 四大域对象注意事项和细节
  1. 域对象是可以像 Map 一样存取数据的对象。四个域对象功能一样。不同的是它们对数
    据的存储范围
  2. 从存储范围(作用域范围看) pageContext < request < session < application

JSP 请求转发标签

<jsp:forward page="/bb.jsp"></jsp:forward>

延伸1——EL表达式

  • EL 表达式介绍
  1. EL 表达式全称:Expression Language,是表达式语言
  2. EL 表达式主要是代替 jsp 页面的表达式脚本<%=request.getAttribute(“xx”)%>
  3. EL 表达式输出数据的时,比 jsp 的表达式脚本简洁
  4. EL 表达式基本语法: ${key1},就是一个语法糖
  • EL 表达式快速入门
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
	<title>Title</title>
</head>
<body>
	/* jsp表达式:*/ <%=request.setAttribute("test", "1")%>
	/* el表达式:*/${test}
</body>
</html>
  1. EL 表达式在输出 null 时,输出的是 “”
  2. jsp 表达式脚本输出 null 的时,输出的是 “null” 字符串
  • EL 常用输出形式
  1. EL 表达式常用输出 Bean 的普通属性、 数组属性、List 集合属性和 map 集合属性
  2. EL 表达式实例
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2024/6/7 0007
  Time: 10:46
  To change this template use File | Settings | File Templates.
--%>
<%@ page isELIgnored="false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
	<title>Title</title>
</head>
<body>
<%
	Map<Integer, String> weekMap = new HashMap<>();
	weekMap.put(1, "Monday");
	weekMap.put(2, "Tuesday");
	weekMap.put(3, "Wednesday");
	weekMap.put(4, "Thursday");
	weekMap.put(5, "Friday");
	weekMap.put(6, "Saturday");
	weekMap.put(7, "Sunday");

	List<String> list = new ArrayList<>();
	list.add("a");
	list.add("b");
	list.add("c");
	list.add("d");
	String s = weekMap.get(1);
%>
<%=request.setAttribute("weekMap",weekMap)%>
<%=request.setAttribute("list",list)%>
<%--EL表达式--%>
${weekMap.get(1)}
${list[0]}
</body>
</html>

  • EL 的 11 个隐含对象
  1. EL 的 11 个隐含对象,可以直接使用
    在这里插入图片描述
  2. EL 获取四个特定域中的属性
  • EL 四个特定域变量
    在这里插入图片描述

延伸2——JSTL标签库

JSTL 标签库介绍

  1. JSTL 标签库 是指 JSP Standard Tag Library JSP 标准标签库
  2. EL 表达式是为了替换 jsp 中的表达式脚本,JSTL 是为了替换代码脚本。这样 jsp 页面
    变得更佳简洁
  3. JSTL 由五个标签库组成

在这里插入图片描述
4. 使用 JSTL,需要导入相关的 jar 包
在这里插入图片描述
5. JSTL的几个标签

  • <c:set />
    在这里插入图片描述
  • <c:if />
    在这里插入图片描述
  • <c:choose> <c:when> <c:otherwise> 多路判断。跟 switch … case … default 非常接近
  • <c:forEach /> 用来遍历输出

总结

当然以上技术的使用都在逐渐减少,目前公司都在使用前后端分离springboot+vue/react,技术不分先后,存在即合理,没落和被取代是每个技术的必然结果,学习、理解并总结才能让我们对新的技术有更好的认识。

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值