概念:

1 .  JSP 标签 是用来替换java代码的技术,容器遇到标签后会将其转换成java代码,jsp标签类似于开始标记、属性、结束标记、标签体。

  1. EL表达式是一套简单的运算规则,用于给jsp标签的属性赋值,也可以脱离jsp标签直接使用。
  1. EL表示用法

1)访问bean属性

第一种方式:

语法              ${user.username}

执行过程:     从某些指定范围内查找绑定名为"user"的对象,如果找到了,则调用“getUsername”方法然后输出。

第二种方式:

语法              ${user['username']}

说明:            有两种特殊用法,允许[]里面出现绑定名,允许里面出现从0开始的下标,如访问某个元素。

2)做一些运算(算术、关系运算、逻辑运算)

注:运算结果可以给jsp标签的属性赋值,也可以直接输出。

eg:

C2.jsp

<%@ page contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import="bean.*" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>

<head>

<title>Insert title here</title>

</head>

<body style="font-size:30px;">

    <%

        User user = new User();

        user.setUname("张飞");

        user.setGender("x");

        user.setAge(22);

        request.setAttribute("user", user);

    %>

    性别:

    <c:choose>

        <c:when test="${user.gender == 'm'}">男</c:when>

        <c:when test="${user.gender == 'f'}">女</c:when>

        <c:otherwise>保密</c:otherwise>

    </c:choose>   

    年龄:

    <c:choose>

        <c:when test="${user.age < 18 }">未成年</c:when>

        <c:when test="${user.age > 65 }">老年</c:when>

        <c:otherwise>成年</c:otherwise>

    </c:choose> 

</body>

</html>
package bean;

public class User {

    private String uname;

    private String gender;

    private int age;

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public String getUname() {

        return uname;

    }

    public void setUname(String uname) {

        this.uname = uname;

    }

    public String getGender() {

        return gender;

    }

    public void setGender(String gender) {

        this.gender = gender;

    }   

}
package web;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import bean.User;

public class ListUserServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void service(

            HttpServletRequest request,

            HttpServletResponse response)

                    throws ServletException,

                    IOException {

        List<User> users = new ArrayList<User>();

        for(int i = 0; i < 8; i ++){

            User user = new User();

            user.setUname("用户" + i);

            user.setGender("m");

            user.setAge(22 + i);

            users.add(user);

        }   

        request.setAttribute("users", users);

        request.getRequestDispatcher("c3.jsp").forward(request, response);

    }

}
package web;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import bean.User;

public class ListUserServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void service(

            HttpServletRequest request,

            HttpServletResponse response)

                    throws ServletException,

                    IOException {

        List<User> users = new ArrayList<User>();

        for(int i = 0; i < 8; i ++){

            User user = new User();

            user.setUname("用户" + i);

            user.setGender("m");

            user.setAge(22 + i);

            users.add(user);

        }   

        request.setAttribute("users", users);

        request.getRequestDispatcher("c3.jsp").forward(request, response);

    }

}
</body>
</html>  
  1. jstl标签: jsp标签的一种。

使用:

Step1:导入jstl.jar

Step2:  用taglib指令导入要使用的jsp标签

<% taglib uri="jsp标签的命名空间"  prefix="指定命名空间的别名,前缀"%>

核心标签:

if标签:类似于java中if语句

<c: if  test="">

标签体

</c:if>

当test属性为true,执行标签体内容,test属性也可以用el表达式赋值。

choose标签:类似于java中switch…case语句

<c:choose>     
               <c:when
test="">
              </c:when>
              ...
              <c:otherwise>
             
</c:otherwise>
             </c:choose>

forEach标签

<c:forEach items="要遍历的集合或者数组,可用el表达式赋值" var="绑订名" varStatus="绑订名">
          </c:forEach>

注:
           绑订范围固定是pageContext。该标签每次从集合或者数组中
    取一个元素,然后绑订到pageContext上。

注:
           绑订值是一个对象,由该标签创建。该对象提供了几个方法,
    用于获得当前遍历的状态:
           getCount(): 获得当前是第几次迭代(从1开始)。
           getIndex():  获得当前正在被迭代的元素的下标(从0开始)。

C3.jsp

<%@ page contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"

prefix="c" %>

<html>

<head>

<title>Insert title here</title>

<style type="text/css">

    .row1{

        background-color:#fff8dc;

    }

    .row2{

        background-color:#f0f0f0;

    }  

</style>

</head>

<body style="font-size:30px;">

    <table border="1" width="60%"

    cellpadding="0" cellspacing="0">

        <tr>

            <td>序号</td>

            <td>下标</td>

            <td>用户名</td>

            <td>性别</td>

            <td>年龄</td>

        </tr>

        <c:forEach items="${users}" var="u"

        varStatus="s">

            <tr class="row${s.index % 2 + 1}">

                <td>${s.count}</td>

                <td>${s.index}</td>

                <td>${u.uname}</td>

                <td>${u.gender}</td>

                <td>${u.age}</td>

            </tr>

        </c:forEach>

    </table>  

</body>

</html>

jsp标签如何执行?

容器依据标签的命名空间找到对应的描述文件(.tld文件),
接下来,依据标签名找到对应的标签类,然后将该标签类实例化
并调用相应的方法。(从描述文件到标签名,再到标签类,并将其实例化,并调用对应方法        也应该使用反射实现的)

EL和jstl(概念和使用方法)的更多相关文章

  1. 浅谈EL与JSTL

    讲道理,自己在博大精深的Java世界里还只是一个很小很小的菜鸟.处于成长与学习之中,但学习一个漫长的过程.尤其对于那些知识点我觉得总结是尤为重要的.反正在我看来这段时间里虽然过了很多知识但却是一脸懵逼 ...

  2. JavaWeb部分视频\2-12JSP,EL和JSTL

    JavaWeb知识结构图 第3节 EL介绍和运算符 && 第4节 EL获取域中存储的数据 ## EL表达式 1. 概念:Expression Language 表达式语言 2. 作用: ...

  3. java学习之EL和JSTL

    0x00前言 EL和JSTL都是JSP的内容的拓展,都是开发的一些东西,稍微学习记录一下,避免以后忘记 0x01EL 0x1基本用法 概念:Expression language 表达式语言 作用:替 ...

  4. jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门

    一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...

  5. EL表达式 JSTL中的常用EL函数 动态数据的国际化

    ELppt: EL 全名为Expression Language.EL主要作用: 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.( ...

  6. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门

    2 JSP内置标签(美化+业务逻辑)   1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容   2)JSP内 ...

  7. 第75节:Java的中的JSP,EL和JSTL

    第75节:Java中的JSP,EL和JSTL 哭吧看不完的!!! Cookie和`Session 请求转发和重定向的区别: 地址不一样 请求次数也不一样 数据无法传递 4.跳转范围有限制 效率 请求转 ...

  8. JSP、EL、JSTL

    JSP(Java Server Pages) 什么是JSP Java Server Pages(Java服务器端的页面) 使用JSP:SP = HTML + Java代码 + JSP自身的东西.执行J ...

  9. Unit05: WEB项目的开发模式 、转发 和 Unit09: EL、JSTL

    Unit05: WEB项目的开发模式 .转发   和  Unit09: EL.JSTL dao package dao; import java.io.Serializable; import jav ...

随机推荐

  1. MySQL深入理解

    [存储引擎] InnoDB表引擎 默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀. 数据存储在共享表空间,可以通过配置分开. 对主键查询的性能高于其他类型的存储引擎. 内部做了很多优化,从磁盘读 ...

  2. Java创建文件夹

    import java.io.File; public class Mkdirs { public static void main(String[] args) { /** *创建文件夹,如果路径不 ...

  3. 【Java】-NO.16.EBook.4.Java.1.006-【疯狂Java讲义第3版 李刚】- 垃圾回收

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.006-[疯狂Java讲义第3版 李刚]- 垃圾回收 Style:EBook Series:Java ...

  4. Notes for Neural Network Methods for Natural Language Processing

    什么是深度学习?   一种机器学习算法,based on [多层][非线性变换]的[神经网络]结构 优点:可以使用 低维 稠密 连续 的向量表示不同粒度的语言单元, 还可以使用循环.卷积.递归等神经网 ...

  5. Kotlin Linux下的环境搭建

    Kotlin是JVM世界里的未来主宰,不管你信不信,我反正相信了! 好吧,如果你不糊涂,就跟着我一起学学吧,哈哈 一下载https://github.com/JetBrains/kotlin/rele ...

  6. cocos2dx C++为Sprite添加触摸事件监听器

    1.首先头文件定义事件处理的函数原型 private: bool onTouchBegan(Touch* tTouch,Event* eEvent);//手指按下事件 void onTouchMove ...

  7. 219. 存在重复元素 II

    给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示例 1: 输入: nums = ...

  8. ssh简单入门级案例教程

    准备工作:struts2.3.34+spring4.2.2+hibernate3.3.2 导入需要的开发包: struts开发包---注意:javassist-3.18.1-GA.jar包与hiber ...

  9. linux中安装oracle数据库

    1. 执行 ./runInstaller 提示 /tmp 的空间过小执行 mount -o remount,size=1G,noatime /tmp重新设置 /tmp 的大小 2. 安装完成数据库之后 ...

  10. python多线程,多进程编程。

    进程,是目前计算机中为应用程序分配资源的最小单位: 线程,是目前计算机中运行应用程序的最小单位: 在实际系统中,其实进程都是被分为线程来实现的,所以参与时间片轮转的是线程: 但是管理应用程序的资源的单 ...