1 JSP
1.1 什么是 JSP
JSP:Java Server Pages,Java 服务端页面
JSP 是一种动态的网页技术,其中既可以定义 HTML、CSS、JS 等静态内容,还可以定义 Java 代码的动态内容
JSP = HTML + Java,用于简化开发的
JSP 本质上就是一个 Servlet
JSP 在被访问的时候,又 JSP 容器(Tomcat)将其转换为 Java 文件(Servlet,.java 文件),再由 JSP 容器将其编译(.class 文件),最终对外提供服务的其实就是这个字节码文件。
JSP 已经逐渐退出历史舞台,取而代之的是 Html+AJAX,或者 Vue
1.1.1 JSP 的发展历程
1.2 JSP 的快速入门
1.2.1 引入依赖
还是要使用 provided,和 Servlet 一样
<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency>
复制代码
1.2.2 创建 jsp 文件
放在 Webapp 下
1.2.3 编写 JSP 代码
效果是 java 控制台输出 你好啊,页面上展示 好什么好都穷的快要饭了
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title></head><body> <% System.out.println("你好啊!"); %> <h1> 好什么好,都快穷的要饭了 </h1></body></html>
复制代码
1.3 JSP 脚本(很少用)
1.3.1 JSP 脚本的作用
在 Jsp 页面定义 Java 代码,其实 JSP 本身就是一个 Servlet,其中的 HTML 代码都是通过 write 展示出来的
1.3.2 JSP 脚本的分类
因为写起来太麻烦了,就不写了
1.3.3 JSP 脚本的截断
写一段代码就明白了,作用就是在一些 java 代码中嵌入 html 代码,其实和原理就是通过 write 把 html 代码渲染到页面上。
<% for(int i=0;i<brands.size();i++) { Brand brand = brands.get(i); //截断%> //在这里写html代码 <tr> <td><%=brand.getId()%></td> <td><%=brand.getBrandName()%></td> </tr><% }%>
复制代码
1.4 JSP 的缺点
基于上,所以 JSP 已经逐渐退出历史舞台,只有部分老公司还在用。
2 EL 和 JSTL
2.1 EL
2.1.1 什么是 EL
2.1.2 Java Web 四大域对象
page : 当前页有效
request:当前请求有效
session:当前会话有效
application:当前应用有效
el 表达式获取数据,会依次用这四个域中寻找,直到找到为止,找到之后就不再寻找了,常用的是 request 和 session。
2.2 JSTL
2.2.1 什么是 JSTL
JSP 标准标签库(JSP Standarded Tag Library),使用标签取代 JSP 页面上的代码。
2.2.2 JSTL 的常用标签
https://www.runoob.com/jsp/jsp-jstl.html
2.2.3 JSTL 的使用
2.2.3.1 引入 JSTL 的依赖 JSTL 和 Standard
<dependcies> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!--standard--> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> </dependencies>
复制代码
2.2.3.2 在 jsp 中引入 jstl 标签库
即在第二行加入改代码,其中 prefix 代表前缀,一般为 c
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
复制代码
2.2.3.3 例子
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head> <title>Title</title></head><body> <%--if的使用--%> <c:if test="${brands == 1}"> 启动 </c:if> <c:if test="${brands != 1}"> 禁止 </c:if> <%--forEach的使用:和for一样--%> <c:forEach items="brands" var="brand"> <tr> <%--此处的id和brandName 应该指的是get方法 后缀 会把id 变成 Id然后加上 get去找到这个方法 也就是其实是调用的get方法,这也符合封装的特性 --%> <td>${brand.id}</td> <td>${brand.brandName}</td> </tr> </c:forEach> <%--forEach的第二种方式--%> <%-- 类似于 for(int i=1;i<5;i++) {
} begin:开始 end:结束 step:步长 --%> <c:forEach begin="1" end="5" step="1" var="i"> <a>${i}</a> </c:forEach></body></html>
复制代码
评论