前言
JSP已经逐渐退出历史舞台,HTML+AJAX已经替代了
一、JSP是什么?
概念:Java Server Page,Java服务端页面
一种动态的网页技术,既可以定义HTML,JS,CSS等静态内容,还可以定义java代码的动态内容
JSP=HTML+Java
如下所示
二、JSP快速入门
(一)导入jsp坐标
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
(二)创建JSP项目
<%--
Created by IntelliJ IDEA.
User: 99730
Date: 2023/7/14
Time: 9:55
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>
<h1>JSP,Hello World</h1>
<%
System.out.println("hello jsp");
%>
</body>
</html>
三、JSP原理
JSP本质就是一个Servlet,tomcat会把.jsp转化为.java文件,再编译为.class字节码文件
就是相当于用response输出将html文件写出,本质还是Servlet
四、JSP脚本
(一)概念
用于JSP页面内定义java代码
(二)JSP脚本分类
1.<%....%>
内容会直接放到_jspService() 方法之中
2.<%=...%>
内容会放到out.print()中,作为out.print()的参数(会直接打印到页面上,不是控制台上了)
3.<%!...%>
内容会直放到_jspService() 方法之外,被类直接包含(就是成员位置,成员方法或成员变量)
注:导包
<%@ page import="java.util.List" %>
五、JSP的缺点
1.书写麻烦
2.阅读麻烦
3.复杂度高:运行依赖各种环境,jre,jsp容器,javaEE..
4.占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件内存
5.调试困难。出错后,需要找到自动生成的.java文件调试
6.不利于团队协作,前端人员不会java,后端人员不精通HTML
出现替代品:HTML+AJAX
出现HTML+AJAX之前,让Servlet与JSP结合
Servlet:逻辑处理,封装数据
JSP:获取数据,遍历展现数据
六、EL表达式
1.概念
Expression Language表达式语言,用于简化JSP内的java代码
2.主要功能
获取数据
3.语法
${expression}:获取域中存储的key为expression的数据
比如现在servlet内转发,“brand”为key,brands为转发的内容。
前端写这个表达式,获取数据
要在jsp主页面加上,表示不忽视EL表达式
<%@ page isELIgnored="false" %>
4.javaweb中四大域对象
page:当前页面有效
request:当前请求有效
session:当前会话有效
application:当前应用有效
el表达式会依次从这四个域中寻找,直到找到为止
七、JSTL
(一)概念
JSP标准标签库(Jsp Standarded Tag Library),使用标签取代JSP页面的java代码
(二)快速入门
1.导入坐标
<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>
tomcat9以上版坐标导入
<dependency> <groupId>org.glassfish.web</groupId> <artifactId>jakarta.servlet.jsp.jstl</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-spec</artifactId> <version>1.2.5</version> </dependency>
2.在JSP页面上引入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.使用
if
<c:if test="${statue==1}"> 启用 </c:if>
判断test,里面的语句
foreach
item:被遍历的容器
var:遍历产生的临时变量
可选属性:varStatus="status"
status.index:代表从0开始的序号
status.count: 代表从1开始的序号
可选属性2:
begin:开始数字
end:结束数字
step:步长
八、MVC模式和三层架构
(一)MVC模式
MVC是一种分成开发的模式:
M:Model,业务模型,处理业务
V:View,视图,界面展示
C:Controller,控制器,处理请求,调用模型和视图
MVC好处
职责单一,互补影响
有利于分工协作
有利于组件的重用
(二)三层架构
数据访问层:对数据库的CRUD基本操作
业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂啊的业务逻辑功能
表现层:接受请求,封装数据,调用业务逻辑层,响应数据