jsp
注意:
1、JSP脚本片段中只能出现java代码,不能出现HTML元素。在 访问JSP时,JSP引擎翻译JSP页面中的脚本片段。
2、JSP脚本片段中的java代码必须严格遵守java的规则
3、一个JSP页面是可以有多个脚本片段
4、多个脚本片段中的代码可以相互访问
<%--jsp表达式--%></p>
<pre><code>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page errorpage="error.jsp" contenttype="text/html;charset=UTF-8" language="java" %>
<%@include file="hello.jsp" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- jsp的指令标识 <%@ 指令名 属性1="值1" 属性2="值2" .....%>
page指令:定义整个JSP页面的相关属性
include指令:引入其他的JSP页面。先把两个页面结合,在去编译成servlet。
taglib指令:引入页面上需要用到的标签库
--%>
<% list arraylist(); int i="10" 0; %>
<h1>JSP02 Page!!!</h1>
</%></%--></body>
</html>
</%@include></%@></%@></%@>
<%--
JSP的指令标识</p>
<pre><code>page指令:定义整个JSP页面的相关属性
include指令:引入其他的JSP页面。先把两个页面结合,在去编译成servlet。
taglib指令:引入页面上需要用到的标签库
</code></pre>
<pre><code>
<%–
JSP标签
1、内置标签
(1)jsp:include:引入指定的页面
(2)jsp:forward:转发页面
(3)jsp:param:传参数
2、JSTL标签,需要导入JSTL标签库
3、自定义标签
–%>
JSP作用域
四大作用域:
1、当前页(pageContext):一个属性只能在一个页面中获取。
2、一次请求(request):一个页面中设置的属性,范围是一次请求。
3、一次会话(session):一个会话中的属性,只要页面不关闭,都能获取到
4、整个web应用(application):在这个服务器上,当前项目下的任何一个位置都能获取。
<%
pageContext.setAttribute("pageContext","pageContext");
request.setAttribute("request","request");
session.setAttribute("session","session");
application.setAttribute("application","application");
%></p>
<p>pageContext:
request:
session:
application:</p>
<pre><code>
### 面试题:
#### 1.JSP和servlet的区别?
1、JSP本质上就是一个servlet
2、JSP更侧重于视图展示,servlet更侧重于逻辑处理
3、先有的servlet,后有的JSP
#### 2.jsp:include标签和include指令的区别?
include标签:先把要引入的页面编译,再合并
include指令:先把要引入的页面合并,再编译
#### 3.JSP的四大作用域
JSP的九大内置对象。内置:不需要创建,直接就能用。
1、request 请求
2、response 响应
3、session* 会话
4、out 输出
5、page 当前JSP页面对象
6、application 应用
7、exception* 异常,只能在指定了isErrorPage="true"
8、pageContext 当前页,作用域
9、config 配置
## EL表达式
EL表达式的内置作用域对象
pageContext
requestScope
sessionScope
applicationScope
</code></pre>
<p><%@ page contenttype="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html></p>
<p><head>
<title>Title</title>
</head></p>
<body>
<%-- 向指定的作用域中设置值 --%>
<c:set scope="session" var="name" value="zhangsan"></c:set>
<c:set scope="session" var="age" value="20"></c:set>
${sessionScope.name}
<hr>
<c:if test="${sessionScope.age >= 18}">可以观看!</c:if>
<c:if test="${sessionScope.age < 18}">禁止观看!</c:if>
<hr>
<c:choose>
<c:when test="${sessionScope.age eq 18}">
你已经年满18岁,可以签署劳动合同了!
</c:when>
<c:when test="${sessionScope.age lt 18}">
你好没有满18岁!
</c:when>
<c:otherwise>
你已经是大人了!!!
</c:otherwise>
</c:choose>
<hr>
<c:foreach begin="1" end="10" step="2" var="i" varstatus="stat">
${i} ----- ${stat.first}
</c:foreach>
<!--%----></body>
<p></html></p>
<!--%@-->
<p>
四、EL表达式的运算
语法:${运算表达式},EL表达式支持以下运算符:
1. 关系运算
2. 逻辑运算
3. 算数运算
4. empty运算
empty运算可以判断一个数据是否为空,若为空,输出true,不为空,输出false
以下几种情况为空(在原本的key之前加empty关键字):
(1)值为null、空串
(2)值为Object类型的数组且长度为0 (注:其他类型的长度为0的数组值为非空)
(3)List、Map集合元素个数为0
5. 三元运算
表达式 1?表达式 2:表达式 3
表达式1为真返回表达式2的值,表达式1为假返回表达式3的值
6. “.”点运算和”[ ]”中括号运算
点运算可以输出某个对象的某个属性的值(getXxx或isXxx方法返回的值)
中括号运算可以输出有序集合中某个元素的值
注:中括号运算可以输出Map集合中key里含有特殊字符的key的值
代码演示:在web目录下创建Test.jsp
EL表达式的11个隐含对象
EL表达式中的11个隐含对象是EL表达式自己定义的,可以直接使用
(1) pageScope、requestScope、sessionScope、applicationScope对象的使用
代码演示:在web目录下创建Test.jsp
EL表达式的缺陷:1、只能读,不能写 2、不支持流程控制语句
Original: https://www.cnblogs.com/ychptz/p/16647634.html
Author: 阿萨德菩提子
Title: 2022-8-31 jsp el表达式
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609106/
转载文章受原作者版权保护。转载请注明原作者出处!