JSP 初识
下面是学习视频↓
真的不想写jsp 啊 真的服了,都2023年了 还有人在写jsp吗
大概内容就这些 。
JSP 是Java Server Page SUN 公司提供的动态网页编程技术,是Java Web服务端的动态资源。而HTML是静态页面,不能动态响应。
其实JSP 就是一个Servlet 当我们第一次访问JSP 的时候,Jsp 引擎都会把Jsp翻译成一个Servlet。
scriptlet
<% %> java脚本段 定义局部变量 编写语句
<%! %> 声明可以定义全局 成员变量 方法类
<%= %>:表达式,数据一个变量或具体内容
指令标签
使用包含操作,可以将一些重复的代码包含进来继续就用,从正常的页面组成来看,有时候分为几个分区,有些分区是不需要改变的,改变的就是其中一个具体内容区域。现在有两种方法可以实现上述功能。
静态包含 动态包含
<%@ include file = "要包含的文件路径" %> <!-- 相对路径 -->
解耦 我们将某些页面给抽离出来,到时候组合就行了 实际上静态包含,是将几个jsp 合并成一个。所以说变量不能重复。
动态包含 在代码的编译阶段,包含和被包含是两个部分,只有在运行的时候才会动态的包含进来
<jsp:include page = ?></jsp:include>
可以有重名变量
jsp 的四大域对象
四个属性范围
page request sessopn application
page 只要跳转 数据就没了
request 服务端跳转还是有效的 客户端跳转就无效
session 无论是客户端还是服务端跳转都有效 在一个浏览器里面就行
application 服务器没关就行
设置变量
请求转发
// 将数据列表存储在request对象中
request.setAttribute("list", list);
// 转发到jsp页面
request.getRequestDispatcher("jobGrade.jsp").forward(request, response);
EL 表达式
EL 表达式 是为了让JSP 写起来更加简单啊 比如说 ${} 就是他的格式
一般是操作域对象的数据,而不是局部对象 域对象就是前面说的四个,pageContext request session application 范围从小到大
当你需要指定某个范围的时候 可以这样写 pageScope requestScope sessionScope applicationScope 。下面举个例子。
<%
pageContext.setAttribute("uname,"missay"); //page 设置
request.setAttribute("uname,"missay");
session.setAttribute("uname,"missay");
application.setAttribute("uname,"missay");
% >
然后 我们可以 通过${uname} 来获取
默认获取顺序是从小到大范围来取的
el表达式获取对象值为空,默认是空字符串
empty 和 el 运算
empty 是判断所取的元素是否为空
el 是等值运算,判断是否相等
JSTL
是jsp的标准标签库,是一个定制类标签库的集合,用于解决一些常见的问题,迭代数据,条件测试啥的。
核心标签库:
http://java.sun.com/jsp/jstl/core
包含了Wen应用的常见工作:比如说循环 表达式赋值,基本输入输出
格式化标签库:
http://java.sun.com/jsp/jstl/fmt
用来格式化显示数据的工作:不同区域的日期格式化
如果要使用JSTL类库,必须以下格式调用taglib
<%taglib url="对应调用的库" "prefix=""%>
比如说
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
如果你是用maven 记得导入依赖, 否则自己去下载对应的jar包放在lib库下面这里就不多说了。
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <!-- 或者使用适合你的版本 --> </dependency>
JSTL if 标签
语法格式
<c:if test="<条件表达式>" var<自定义变量>" scope="<string>">
</c:if>
if标签
test | 条件 | 是 |
var | 用于存储条件结果的变量 | 否 |
scope | var属性的作用域 | 否 |
。这个c 就是 你自己设置的prefix
choose when otherwise
choose when 有点类似那个Switch 标签
<%
request.setAttribute("score",80)
%>
<c:choose>
<c:when test = "${score < 60}" >
<P> 你知道我要说什么
</c:when>
...
<c:when test ="${score = 100}">
<h1> 无敌了</h1>
</c:when>
// 此外 other 类似 那种 default 当没有匹配的时候 就会选择
按照c语言 标准 default 一般放在最后 这里的otherwise 也是如此 choose 标签可以没有otherwise标签 但是一定要有一个when 标签
foreach标签
用来迭代数据的 渲染表格啥的
<c :forEach begin ="" end = "" step="" var="">
</c:forEach>
//begin end step 都可以没有啊
//就相当于 for (auto word : words) c++ 的语法
foreach 还有一个varStatus 属性
下面有几个 属性 index count first last
分别表示 index : 当前这次迭代从0开始的索引 就是 当前到哪个索引了
count 就是 计数, 表示记到第几个数了
first 就是 表示是否是第一次
last 表示 是否是最后一次
大致先写这么多