【JavaWeb】JSP学习笔记
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脚本的分类
因为写起来太麻烦了,就不写了
样式 | 作用 |
---|---|
<% 代码 %> | 定义的java代码,在service方法中,service方法中可以定义什么,该脚本就可定义什么。 |
<%! 代码 %> | 定义的java代码,在jsp转换后的java类的成员位置。 |
<%=代码 %> | 定义的java代码,会输出到页面上,输出语句中可以定义什么,该脚本就可定义什么。 |
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
-
El:Expression Language,表达式语言,用于简化JSP页面内的Java代码。
-
主要功能:获取数据
-
语法:${expression} : 获取域中存储的key为expression的数据
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>
- 点赞
- 收藏
- 关注作者
评论(0)