0
点赞
收藏
分享

微信扫一扫

JSP、EL表达式、JSTL标签


目录

一、JSP

1、指令

2、注释

3、内置对象

二、EL表达式

1、概念和作用

2、语法

3、忽略EL表达式

4、EL 表达式的使用

三、JSTL 标签

1、if 标签

2、choose 标签

3、 foreach 标签

一、JSP

1、指令

【1】作用

  • 用于配置JSP页面,导入资源文件

【2】格式

  • <%@  指令名称  属性名1=属性值1  属性名2=属性值2  .....  %>

【3】分类


  • page:配置JSP页面的

  • contenType:等同于response.setContentType()

  • 设置响应体的mime类型以及字符集
  • 设置当前JSP页面的编码(高级IDE,如果是低级编译器,需要设置 pageEncoding 属性来设置字符集)

  • import:导包
  • errorPage:当前页面发生异常后,会自动跳转到指定的错误提示页面
  • isErrorPage:标识当前页面是否为错误页面

  • true:是,可以使用内置对象 exception
  • false:否,默认值,不可以使用内置对象 exception


  • include:页面包含的,导入页面资源文件
  • <%@include  file="top.jsp"%>
  • taglib:导入资源
  • <%@  taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>

2、注释


  • <!--  -->:只能注释HTML代码片段
  • <%--  --%>:可以注释所有代码片段

3、内置对象

在JSP页面中不需要创建,可以直接使用的对象称为内置对象,一共有 9 个内置对象

变量名

真实类型

作用

pageContext

PageContext

当前页面共享数据,可以获取其他 8 个对象

request

HttpServletRequest

一次请求访问的多个资源(转发)

session

HttpSession

一次会话的多个请求

application

ServletContext

所有用户间数据共享

response

HttpServletResponse

响应对象

page

Object

当前页面(Servlet)对象

out

JspWrite

输出对象,输出数据到页面上

config

ServletConfig

Servlet的配置对象

exception

Throwable

异常对象

二、EL表达式

1、概念和作用

  • Expression Language(表达式语言),主要用来替换和简化JSP页面中的java代码

2、语法

  • ${表达式}

3、忽略EL表达式


  • 设置JSP中page指令:isElignored="true"  忽略JSP中所有的 EL 表达式
  • \${表达式}:忽略当前的EL表达式

4、EL 表达式的使用

【1】运算符


  • 算数运算符:+    -    *    /(div)    %(mod)
  • 比较运算符:>    <   >=    <=    ==    !=
  • 逻辑运算符:&&(and)    ||(or)    !(not)
  • 空运算符:empty  

  • ${empty str}:用于判断字符串,集合数组对象是否为null或者长度是否为 0
  • ${not empty str}:表示判断字符串、集合、数组对象是否不为null并且长度大于 0


【2】获取值

  • EL 表达式只能从域对象中获取值

  • 格式:${域名称.键名}  ==>  从指定的域中获取指定的键值



  • 域对应的域名称

    pageContextpageScope

    requestrequestScope

    sessionsessionScope

    applicationapplicationScope

  • ${键名}:表示依次从最小的域中查找是否有该键对应的值

获取对象:${域名称.键名.属性名}

本质上是调用Javabean中的getter方法


获取 List 集合:${域名称.键名[索引]}
获取 Map 集合

  • ${域名称.键名.key名称}
  • ${域名称.键名["key名称"]}


【3】隐式对想

EL 表达式中有 11 个隐式对象,这里主要说 pageContext 隐式对象,pageContext 隐式对象主要功能有:


  • 获取 JSP 其他八个内置对象
  • 动态获取虚拟目录:

<%@ page import="Test.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
${3 > 4}
\${3 > 4}
<hr>
<h3>算数运算符</h3>
${3 + 4}<br>
${3 / 4}<br>
${3 % 4}<br>
<h3>比较运算符</h3>
${3 == 4}<br>
<h3>逻辑运算符</h3>
${3 > 4 && 3 < 4}
${3 > 4 and 3 < 4}
<hr>

<h3>在域中获取值</h3>
<%
//在request域中存储值
request.setAttribute("name","oneStar");
//在session域中存储值
session.setAttribute("age","18");
%>
${requestScope.name}
${sessionScope.age}
${name}

<h3>获取对象值</h3>
<%
User user = new User();
user.setName("oneStar");
user.setAge(18);
user.setBirthday(new Date());
request.setAttribute("u",user);
%>
${requestScope.u.name}<br>
${requestScope.u.age}<br>
${requestScope.u.birthday}<br>

<h3>获取List集合</h3>
<%
List list = new ArrayList();
list.add("oneStar");
list.add("twoStar");
list.add("threeStar");
request.setAttribute("list",list);
%>
${requestScope.list}<br>
${requestScope.list[2]}<<br>

<H3>获取map集合</H3>
<%
Map map = new HashMap<>();
map.put("name","oneStar");
map.put("age","18");
request.setAttribute("map",map);
%>
${requestScope.map}<br>
${requestScope.map.name}<br>
${requestScope.map["age"]}<br>

<h3>隐式对象</h3>
${pageContext.request}
<h4>在JSP页面动态获取虚拟目录</h4>
${pageContext.request.contextPath}
</body>
</html>

三、JSTL 标签

JSTL 标签(JavaServer Pages Tag Library),即JSP标准标签库,是由 Apache 组织提供的开源免费的JSP标签,主要是用来简化和替换JSP页面上的Java代码,具体使用步骤如下:


  1. 导入jstl相关jar包
  2. 引入标签库:taglib指令引入:<%@ taglib %>
  3. 使用标签

1、if 标签


  • 属性:test 属性,为必须属性,接受 boolean 表达式
  • 一般情况下,test属性值会结合 EL 表达式一起使用
  • if 标签没有else情况,如果想要else效果,可以定义多个 if 标签

2、choose 标签

choose 标签就相当于switch 语句,switch 需要配合 case、default 来使用,而choose则需要配合when、otherwise 来使用


  • 使用choose标签声明:相当于 switch 声明
  • 使用 when 标签做判断:相当于 case
  • 使用 otherwise 标签做其他情况的声明:相当于default

3、 foreach 标签

【1】完成重复操作

属性


  • begin:开始值
  • end:结束值
  • var:临时变量
  • step:步长
  • varStatus:循环状态对象

  • index:容器中元素的索引,从 0 开始
  • count:循环次数,从 1 开始


【2】遍历容器

属性


  • items:容器对象
  • var:容器中元素的临时变量
  • varStatus:循环状态对象

  • index:容器中元素的索引,从 0 开始、
  • count:循环次数,从 1 开始


<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>OneStar</title>
</head>
<body>
<h3>if标签</h3>
<%
List list = new ArrayList();
list.add("oneStar");
list.add("twoStar");
request.setAttribute("list",list);
%>
<c:if test="${not empty list}">
集合非空
</c:if>
<c:if test="${3 % 2 != 0}">
是奇数
</c:if>
<hr>

<h3>choose标签</h3>
<%
request.setAttribute("number","12");
%>
<c:choose>
<c:when test="${number == 1}">星期一</c:when>
<c:when test="${number == 2}">星期二</c:when>
<c:when test="${number == 3}">星期三</c:when>
<c:when test="${number == 4}">星期四</c:when>
<c:when test="${number == 5}">星期五</c:when>
<c:when test="${number == 6}">星期六</c:when>
<c:when test="${number == 7}">星期日</c:when>
<c:otherwise>不正确字符!!!</c:otherwise>
</c:choose>

<h3>foreach标签</h3>
<c:forEach begin="0" end="10" var="i" step="1">
${i}
</c:forEach><br>
<%
List lists = new ArrayList();
lists.add("oneStar");
lists.add("twoStar");
request.setAttribute("lists",lists);
%>
<c:forEach items="${lists}" var="list" varStatus="s">
${s.index} ${s.count} ${list}<br>
</c:forEach>
</body>
</html>



举报

相关推荐

0 条评论