JSP、EL表达式、JSTL

JSP概念

JSP:Java Server Page-----java服务器页面,运行在服务器端的页面,由Web容器解析成静态的HTML发送给浏览器,再由浏览器解析。我们在浏览器上看到的HTML页面,其实是JSP在服务器上运行的结果。

JSP相对HTML、Servlet的优点

技术 特点
HTML 优:用于网页显示,方便编写JavaScript代码和CSS样式
缺:不能编写动态内容
Servlet 缺:写的是Java代码,不方便编写JavaScript和CSS样式。
优:能编写动态的内容,访问数据库
JSP JSP=HTML+Servlet,继承了2种技术的优点。既可以编写动态的内容,又方便页面的美化。

JSP与Servlet的关系

JSP就是一个Servlet
JSP由服务器翻译成Servlet,然后编译成class文件。
用户第一次访问这个JSP的时候,生成Servlet,只会生成1次。

JSP的三种注释

JSP中的三种注释 说明
HTML <!-- 注释 --> 只能注释静态内容
Java 三种注释都可以
//单行
/* 多行 /
/
* 文档注释 */
只用于Java代码的注释
JSP <%-- 注释 --%>
  1. HTML的注释:在网页的源代码可见
  2. Java注释:在翻译以后的Servlet中可见
  3. JSP注释:在网页和Servlet中都不可见

JSP的3种脚本元素

组成部分 功能 语法
JSP代码片段 编写一般的Java代码 <% %>
JSP脚本表达式 输出变量或表达式的值 <%= %>
JSP声明 声明全局变量或方法 <%! %>

JSP的内置作用域对象

pageContext、request、session、application、

EL表达式的作用

  1. 输出作用域中的值
  2. 用于各种运算符计算

EL表达式与EL表达式的区别

EL:Expression Language 表达式语言

区别 JSP表达式 EL表达式
语法 <%= 脚本变量%> ${作用域中键}
输出哪里的值 输出Java脚本变量的值 作用域中值,前提是作用域中要先放入键和值

与页面域有关的方法及写法

void setAttribute(String key,Object value)				//向页面域中添加键和值
Object setAttribute(String key)							//向页面域中取出指定的值
void removeAttribute(String key);						// 删除所有域中同名的值
void removeAttribute(String key,int scope);				// 删除指定域的值
Object findAttribute(String key);						//从小到大的范围去查找作用域同名的值,找到就不找了,找不到则返回null

EL的写法:

作用域 EL的写法
页面域 ${pageScope.键}
请求域 ${requestScope.键}
会话域 ${sessionScope.键}
上下文域 ${applicationScope.键}
自动查找 ${键}

与页面域有关的方法之案例:

<body>
<%
    // 向四个作用域中添加键值对
    pageContext.setAttribute("name","页面域");
    request.setAttribute("name","请求域");
    session.setAttribute("name","会话域");
    application.setAttribute("name","上下文域");
%>
得到页面域的值:<%=pageContext.getAttribute("name")%><br/>
得到请求域的值:<%=request.getAttribute("name")%><br/>
得到会话域的值:<%=session.getAttribute("name")%><br/>
得到上下文域的值:<%=application.getAttribute("name")%><br/>

<%
    //pageContext.removeAttribute("name");// 删除所有域中同名的值
    pageContext.removeAttribute("name",PageContext.PAGE_SCOPE);// 删除指定域的值
%>
<h2>删除后</h2>
得到页面域的值:<%=pageContext.getAttribute("name")%><br/>
得到请求域的值:<%=request.getAttribute("name")%><br/>
得到会话域的值:<%=session.getAttribute("name")%><br/>
得到上下文域的值:<%=application.getAttribute("name")%><br/>

从小到大的范围去查找作用域同名的值,找到就不找了:<%=pageContext.findAttribute("name")%><br/>


<h2>使用el表达式取出作用域的值</h2>
页面域:${pageScope.name}<br/>
请求域:${requestScope.name}<br/>
会话域:${sessionScope.name}<br/>
上下文域:${applicationScope.name}<br/>
自动查找:${name}<br/>
</body>

结果:
在这里插入图片描述

使用EL中从域中取出不同数据类型的写法

数据类型 写法
JavaBean中属性 ${对象.属性}
List ${list[索引]}
数组 ${数组[索引]}
Map集合 ${map.键} 或 ${map[“键”]}

EL运算符

算术运算符:+、-、*、/、%
比较运算符:==、!=、<、>、<=、>=
逻辑运算符:&&、||、!
三元运算符:${条件表达式?真值:假值}

以上皆与java一样;

判空运算符:

语法:${empty 键}
1. 判断键是否为NULL,如果为空则返回true
2. 如果键是一个空字符串,也返回true
3. 如果键是一个集合,集合中没有元素,返回true

JSTL概念

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库。我们可以在JSP页面上编写各种标签来完成一些复杂的功能,它出现的目的是为了减少JSP页面上的Java代码量让JSP页面更好维护。它的底层本质上运行的还是Java代码

JSTL定制标签库

  1. core:核心标签库,用于页面上代码的流程控制。如:if, for
  2. format:国际化和格式化的标签,可以对日期和货币等数字进行格式化。也可以对同一个页面进行国际化的操作。
  3. xml:在JSP上直接解析XML文件
  4. sql:在JSP上直接访问数据库,不符合三层架构。表示层->业务层->数据访问层
  5. function: 在JSP中使用各种函数,字符串函数

使用核心标签

taglib指令:用来在JSP页面上使用标签库

  1. 核心标签库:core,作用:用于代码的流程控制
  2. 使用标签的语法: <c:标签名>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL prefix前缀 URI 标识 作用
核心标签库 c 这个标签唯一标识,固定写法 用于页面上代码的流程控制

JSTL的标签:if标签

jsp的if标签没有else

<c:if test="${param.age >=18 }">
    你已经成年,可以访问本网站<br/>
    <a href="https://blog.csdn.net/RookiexiaoMu_a">点开有惊喜</a>
</c:if>

JSTL的标签:choose标签

在这里插入图片描述

<form action="demo08.jsp" method="get">
    请输入分数:
    <input type="text" name="score" value="${param.score}">
    <input type="submit" value="评级">
</form>
<c:choose>
    <%--test是一个判断条件,使用EL--%>
    <c:when test="${param.score >=80 && param.score<=100}">
        优秀
    </c:when>
    <c:when test="${param.score >=60 && param.score<80}">
        及格
    </c:when>
    <c:when test="${param.score >=0 && param.score<60}">
        不及格
    </c:when>
    <c:otherwise>
        <script>
            alert("分数有误");
        </script>
    </c:otherwise>
</c:choose>
</body>

JSTL的标签:forEach标签

因为EL没有遍历的功能,使用forEach标签对作用域中集合或数组进行遍历的操作
在这里插入图片描述
varStatus属性:varStatus属性是一个对象,它也有属性:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/RookiexiaoMu_a/article/details/89388562
今日推荐