本文已参与「新人创作礼」活动,一起开启掘金创作之路。
🌴 2022.4.14 早十
前言
🎬本文章是 【JAVA WEB开发技术】 专栏的文章,主要是上课的随堂笔记与练习
🔗JAVA WEB开发技术专栏 传送门
💻提示:目录顺序以当堂内容(教材)为准,所以并非“1、2、3”
📽本节主要内容:简单了解什么是JSP?构成中的指令标签有什么作用?
5.1 JSP概述
🚀 5.1.1 什么是JSP
JSP(Java Server Pages)是由Sun公司倡导、许多公司参与而建立的动态网页技术标准。它在HTML代码中嵌入Java代码片段(Scriptlet)和JSP标签,构成了JSP网页。在接收到用户请求时,服务器会处理Java代码片段,然后生成处理结果的HTML页面返回给客户端,客户端的浏览器将呈现最终页面效果
🚀 5.1.2 如何学好JSP
- 了解Web设计流程与工作原理
- 了解MVC设计模式
- 多实践,多思考,多请教
- 努力自己解决问题
- 多查阅资料
- 多阅读代码
- 熟练掌握HTML、CSS、JavaScript
- 掌握主流的框架
- 掌握数据库技术
🚀 5.1.3 JSP技术特征
- 跨平台
- 业务代码分离
- 组件重用
- 继承Java Servlet功能
- 预编译
5.2 开发第一个JSP程序
🚀 5.2.1 编写JSP程序
File-New-Dynamic Web Project(动态项目),命名项目名称,创建好如图
新建JSP:右击目录webapp-New-JSP File
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 自动刷新并指向新页面 -->
<meta http-equiv="Refresh" content="3;URL=time.jsp">
<title>index</title>
</head>
<body>
<center>
<h2>页面加载中...</h2>
</center>
</body>
</html>
time.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>time</title>
</head>
<body>
这是第一个JSP程序<br>
现在时间是:<%=new Date().toLocaleString() %>
</body>
</html>
🚀 5.2.2 运行JSP程序
在Servers中添加服务器(服务器是我提前配好的tomcat,servers里是空的话,参考前期准备中2、3点,下载并配置)
启动服务器方法一:
右击Tomcat-Start-在浏览器输入localhost:8080/工程名字
启动服务器方法二:
右击单个jsp文件--Run on Server-localhost-Tomcat-Finish
5.3 了解JSP的基本构成
🚀 JSP指令
用来设置与整个JSP页面相关的属性(后面具体举例)
<%@ page ... %>:对当前页面的说明<%@ include ... %>:引入外部文件<%@ taglib ... %>:引入标签库
🚀 HTML标记
页面显示的网页元素
🚀 注释
- JSP注释(
<%-- 注释 --%>)- HTML注释(
<!-- 注释 -->)
🚀 嵌入Java代码
可以包含任意量的Java语句、变量、方法或表达式
格式:
<% 代码片段 %>,<%=表达式%>
🚀 JSP行为
使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等
格式:
<jsp:action_name attribute="value" />常用的JSP行为:
jsp:includejsp:forwardjsp:useBean
🚀 JSP隐含对象
JSP支持九个自动定义的变量,称隐含对象
| 对象 | 描述 |
|---|---|
| request | HttpServletRequest类的实例 |
| response | HttpServletResponse类的实例 |
| out | PrintWriter类的实例,用于把结果输出至网页上 |
| session | HttpSession类的实例 |
| application | ServletContext类的实例,与应用上下文有关 |
| config | ServletConfig类的实例 |
| pageContext | PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问 |
| page | 类似于Java类中的this关键字 |
| Exception | Exception类的对象,代表发生错误的JSP页面中对应的异常对象 |
5.4 指令标签
指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言
语法格式:
<%@ directive attribute="value" %>
5.4.1 page指令
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令
语法格式:
<%@ page attribute="value" %>黑体是常用的三个,在我们新建jsp文件默认就有
| 属性 | 描述 |
|---|---|
| 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 | 确定脚本元素能否被使用 |
5.4.2 include指令
通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就类似于该JSP文件的一部分,会被同时编译执行
语法格式如下:
<%@ include file="文件相对 url 地址" %>
time.jsp
<%@page import="java.util.Date"%>
<%=new Date().toLocaleString() %>
include.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>time</title>
</head>
<body>
<%@ include file="time.jsp" %>
</body>
</html>
include指令相当于是把另一个文件的内容插入到当前位置
5.4.3 taglib指令
JSP允许用户自定义标签,一个自定义标签库就是自定义标签的集合。Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。好处是能使代码重复使用,一次完成只要引用直接完成功能
语法格式:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
- prefix属性:指定标签库的前缀
- uri属性:确定标签库的位置
学习创建taglib标签_jiudihanbing的博客-CSDN博客
<%@ page language="java" import="java.util.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<@% taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>taglib示例</title>
</head>
<body>
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}" />
<p>
</c:forEach>
</body>
</html>