EL表达式、jsp标签、JSTL标签

EL表达式

el表达式(Expression Language) 是为了使JSP写起来更加简单。

语法

在JSP中访问模型对象是通过EL表达式的语法来表达。所有EL表达式的格式都是以“${ }”表示。例如,${ userinfo}代表获取变量userinfo的值。当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。也可以用范围作为前缀表示属于哪个范围的变量,例如:${ pageScope. userinfo}表示访问page范围中的userinfo变量。

变量

EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。

因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。

假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传。

用途
  • 获取数据

  • 执行运算

  • 获取web开发的常用对象

需要导入的包

<dependency>
  <groupId>javax.servlet.jsp.jstlgroupId>
  <artifactId>jstlartifactId>
  <version>1.2version>
dependency>
<dependency>
  <groupId>taglibsgroupId>
  <artifactId>standardartifactId>
  <version>1.1.2version>
dependency>
示例
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%--内置对象--%>
<%
    pageContext.setAttribute("name1","Hayden1");        //保存的数据只在一个页面中有效
    request.setAttribute("name2","Hayden2");            //保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","Hayden3");            //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4","Hayden4");        //保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>
<%
    /*通过pageContent取出我们保存的值*/
    String name1 = (String) pageContext.findAttribute("name1");
    String name2 = (String) pageContext.findAttribute("name2");
    String name3 = (String) pageContext.findAttribute("name3");
    String name4 = (String) pageContext.findAttribute("name4");
    String name5 = (String) pageContext.findAttribute("name5");     //本不存在
%>
<%--使用EL表达式输出 ${}--%>

${name1}

${name2}

${name3}

${name4}

${name5}

<%--不显示出来--%>

<%=name5%>

<%--显示null--%>

jsp标签

需要导入的依赖包

<dependency>
  <groupId>javax.servlet.jspgroupId>
  <artifactId>jsp-apiartifactId>
  <version>2.2.1-b03version>
dependency>
示例

这里实现的是一个页面转发数据到另一个页面中,并在另一个页面进行数据的获取。


<%--带参数转发到某个页面--%>

    
    
    


name: <%=request.getParameter("name")%>
age: <%=request.getParameter("age")%>
sex: <%=request.getParameter("sex")%>

值得注意的是,jsp标签内不可以写注释,否则编译通过,运行时会报错。

JSTL标签

JSTL标签的使用是为了弥补HTML标签的不足,它自定义许多标签可供使用,标签的功能和Java代码相同。

类别
  • 核心标签(最常用)

  • 格式化标签

  • SQL 标签

  • XML 标签

  • JSTL 函数

需要导入的依赖包

<dependency>
  <groupId>javax.servlet.jsp.jstlgroupId>
  <artifactId>jstlartifactId>
  <version>1.2version>
dependency>
<dependency>
  <groupId>javax.servlet.jsp.jstlgroupId>
  <artifactId>jstl-apiartifactId>
  <version>1.2version>
dependency>
<dependency>
  <groupId>org.glassfish.webgroupId>
  <artifactId>jstl-implartifactId>
  <version>1.2version>
dependency>
<dependency>
  <groupId>taglibsgroupId>
  <artifactId>standardartifactId>
  <version>1.1.2version>
dependency>
使用步骤
  • 引入对于的taglib

  • 使用其中的方法

  • 在Tomcat/lib路径下也要有相关的依赖包,否则500错误

EL表达式、jsp标签、JSTL标签_第1张图片

头文件支持

核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
示例1(coreif)

在页面中提交一个表单到自身页面,再判断输入的情况:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    Title


if测试


if test="${param.age=='16'}" var="isAdmin"> if>
示例2(corewhen)

jstl标签的when方法相当于Java中的if-else if结构:




    
        你的成绩是优秀!
    
    
        你的成绩是良好!
    
    
        你的成绩是一般!
    
    
        你的成绩是合格!
    
    
        你的成绩是不合格!
    

示例3(coreforeach)

jstl中的foreach方法相当于Java中的for循环结构:


<%
    ArrayList people = new ArrayList<>();
    people.add(0,"oneone");
    people.add(1,"twotwo");
    people.add(2,"threethree");
    people.add(3,"fourfour");
    request.setAttribute("list",people);
%>
<%--
    var:每次要遍历出来的变量
    items:要遍历的对象
    begin:开始的下标
    end:结束的下标
    step:步长
--%>

    
    

你可能感兴趣的:(EL表达式、jsp标签、JSTL标签)