栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSP、EL表达式、JSTL标签

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSP、EL表达式、JSTL标签

文章目录
  • JSP
    • 概述
    • JSP脚本分类
    • JSP代码示例
  • EL 表达式
    • 概述
    • 域对象
  • JSTL标签
    • 概述
    • 使用流程
    • if 标签
    • forEach 标签

JSP

JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术,其中既可以定义 HTML、JS、CSS等静态内容,还可以定义 Java代码的动态内容,也就是 JSP = HTML + Java。

概述

JSP依赖


    javax.servlet.jsp
    jsp-api
    2.2
    provided

JSP原理

  1. 浏览器第一次访问 hello.jsp 页面;
  2. tomcat 会将 hello.jsp 转换为名为 hello_jsp.java 的一个 Servlet;
  3. tomcat 再将转换的 servlet 编译成字节码文件 hello_jsp.class;
  4. tomcat 会执行该字节码文件,向外提供服务;
JSP脚本分类

<%...%>:内容会直接放到_jspService()方法之中;
<%=...%>:内容会放到out.print()中,作为out.print()的参数;
<%!…%>:内容会放到_jspService()方法之外,被类直接包含;

JSP代码示例

需要先访问servlet资源,然后转发到该资源目录。
JSP脚本可以用标签分开,然后中间穿插HTML。

<%@ page import="com.itheima.pojo.Brand" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
    // 查询数据库
    List brands = new ArrayList();
    brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
    brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
    brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));

%>





    
    Title




//JSP脚本可以用标签分开,然后中间穿插HTML。 <% for (int i = 0; i < brands.size(); i++) { Brand brand = brands.get(i); %> <% } %>
序号 品牌名称 企业名称 排序 品牌介绍 状态 操作
<%=brand.getId()%> <%=brand.getBrandName()%> <%=brand.getCompanyName()%> <%=brand.getOrdered()%> <%=brand.getDescription()%> <%=brand.getStatus() == 1 ? "启用":"禁用"%> 修改 删除
EL 表达式 概述

EL(全称Expression Language )表达式语言,用于简化 JSP 页面内的 Java 代码。

EL 表达式的主要作用是 获取数据。其实就是从域对象中获取数据,然后将数据展示在页面上。

而 EL 表达式的语法也比较简单,例如:${brands} 就是获取HTTP请求域中存储的 key 为 brands 的数据。

代码示例

1.定义servlet
在 servlet 中封装一些数据并存储到 request 域对象中并转发到 el-demo.jsp 页面。
ServletDemo1.java

@WebServlet("/demo1")
public class ServletDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 准备数据
        List brands = new ArrayList();
        brands.add(new Brand(1,"淘宝","阿里巴巴",100,"阿里巴巴",1));
        brands.add(new Brand(2,"京东","京东集团",200,"多快好省",0));
        brands.add(new Brand(3,"拼多多","拼多多",1000,"拼的多,省的多",1));

        //2. 存储到request域中
        request.setAttribute("brands",brands);

        //3. 转发到 el-demo.jsp
        request.getRequestDispatcher("/el-demo.jsp").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

2.在 el-demo.jsp 中通过 EL表达式 获取数据

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    ${brands}


域对象

JavaWeb中有四大域对象,分别是:

  1. page:当前页面有效
  2. request:当前请求有效
  3. session:当前会话有效
  4. application:当前应用有效

el 表达式获取数据,会依次从这4个域中寻找,直到找到为止。而这四个域对象的作用范围如下图所示

例如: ${brands},el 表达式获取数据,会先从page域对象中获取数据,如果没有再到 requet 域对象中获取数据,如果再没有再到 session 域对象中获取,如果还没有才会到 application 中获取数据。

JSTL标签 概述

JSP标准标签库(Jsp Standarded Tag Library) ,使用标签取代JSP页面上的Java代码。

JSTL的标签

使用流程

导入坐标


    jstl
    jstl
    1.2


    taglibs
    standard
    1.1.2

在JSP页面上引入JSTL标签库

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

:相当于 if 判断,属性test用于定义条件表达式。

代码示例
定义一个 servlet ,在该 servlet 中向 request 域对象中添加 键是 status ,值为 1 的数据

@WebServlet("/demo2")
public class ServletDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 存储数据到request域中
        request.setAttribute("status",1);

        //2. 转发到 jstl-if.jsp
        数据request.getRequestDispatcher("/jstl-if.jsp").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

定义 jstl-if.jsp 页面,在该页面使用 标签

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


    Title


    <%--
        c:if:来完成逻辑判断,替换java  if else
    --%>
    
        启用
    

    
        禁用
    


forEach 标签

:相当于 for 循环。java中有增强for循环和普通for循环,JSTL 中的 也有两种用法。

用法一
类似于 Java 中的增强for循环。涉及到的 中的属性如下

  • items:被遍历的容器
  • var:遍历产生的临时变量
  • varStatus:遍历状态对象,有两个属性,分别是从0开始和从1开始

如下代码,是从域对象中获取名为 brands 数据,该数据是一个集合;遍历遍历,并给该集合中的每一个元素起名为 brand,是 Brand对象。在循环里面使用 EL表达式获取每一个Brand对象的属性值。


    
        ${brand.id}
        ${brand.brandName}
        ${brand.companyName}
        ${brand.description}
    

用法二
类似于 Java 中的普通for循环。涉及到的 中的属性如下

  • begin:开始数
  • end:结束数
  • step:步长
  • var:临时变量
//从0循环到10,临时变量是i ,每次自增1。

    ${i}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013468.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号