JSP 基础
JSP
- JSP: Java Server Pages, Java 服务端页面
- 一种动态的网页技术,其中既可以定义 HTML , JS, CSS 等静态内容,还可以定义 Java 代码等动态内容
- JSP = HTML + Java
- 简化开发,避免在 Servlet 中直接输出 HTML 标签
快速入门
导入 JSP 坐标
1
2
3
4
5
6<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>创建 JSP 文件
编写 HTML 标签和 Java 代码
1
2
3
4
5
6
7
8
9
10
11
12<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>Hello JSP!</h1>
<%
System.out.println("Hello JSP");
%>
</body>
</html>
JSP 原理
JSP 本质上是一个 Servlet
JSP 在被访问时,由 JSP 容器(Tomcat)将其转换为 Java 文件(Servlet) ,再由 JSP 容器(Tomcat) 将其编译,最终对外提供服务的是字节码文件
JSP 脚本
JSP 脚本用于在 JSP 页面内定义 Java 代码
脚本分类
<%...%>
: 内容会直接放到_jspService()
方法中<%=...>
: 内容会放到out.print()
中,作为out.print()
的参数<%!...%>
: 内容会放到_jspService()
方法之外,被类直接包含
JSP 缺点
由于 JSP 页面内既可以定义 HTML 标签,又可以定义 Java 代码,造成了许多问题
- 书写麻烦:特别是复杂的页面
- 可读性不高
- 复杂度高:运行需要依赖各种环境, JRE,JSP 容器, JavaEE…
- 占内存和磁盘: JSP 会自动生成 .java 和 .class 文件占磁盘,运行的 .class 文件占内存
- 调试困难: 出错后,需要找到自动生成的 .java 文件进行调试
- 不利于团队协作,前端人员不会 java, 后端人员 不精 HTML
JSP 已经逐渐退出历史舞台…
Servlet -> JSP -> Servlet + JSP -> Servlet + HTML + ajax
EL 表达式
Expression Language 表达式语言,用于简化 JSP 页面内的 Java 代码
主要功能: 获取数据
语法:
${expression}
1
${brands}//获取域中存储的 key 为 brands 的数据
使用:在 Servlet 中将数据添加到 request 域中并转发给 .jsp 文件,即可在文件中使用数据
1
2request.setAttribute("status",1);
request.getRequestDispatcher("/jstl.jsp").forward(request,response);1
${status}
若 JSP 不识别 EL 表达式,需在 JSP 文件开头加上
isELIgnored="false"
1
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
若在 EL 表达式中使用类的成员,则自动调用对应的 get() 方法
域对象
- page: 当前页面有效
- request: 当前请求有效
- session: 当前会话有效
- application: 当前应用有效
EL 表达式获取数据,会依次从这4个域中寻找,直到找到为止
JSTL 标签
- JSP 标准标签库( Jsp Standarded Tag Library), 使用标签取代 JSP 页面上的 Java 代码
快速入门
导入坐标
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
1
2
3
4
5
* 在 JSP 页面引入 JSTL 标签库
```jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>使用 JSTL 标签
<c:if test=""> HTML </c:if>
对 test 的内容进行 if 判断,为 true 则执行中间的 HTML 语句1
2
3<c:if test="${status == 1}">
<h1>启用</h1>
</c:if><c:forEach items = "brands" var ="brand">HTML</c:forEach>
遍历 items 数组,对每个成员执行 HTML 语句
MVC 模式和三层架构
MVC
MVC 是一种分层开发模式
- M:Model ,业务模型,处理业务,JavaBean
- V:View ,视图,界面展示,JSP
- C:Controller ,控制器,处理请求,调用模型和视图,Servlet
MVC 优点:
- 职责单一,互不影响
- 有利于分工协作
- 有利于组件重用
三层架构
- 表现层:接收请求,封装数据,调用业务逻辑层,响应数据
- 业务逻辑层:对业务逻辑进行封装,组合数据访问层层中的基本功能,形成复杂的业务逻辑功能
- 数据访问层(持久层):对数据库进行 CRUD 基本操作
JSP 基础
http://mrzzzz1.github.io/2023/03/18/Jsp基础/