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

2022/3/20 Java开发之Java web编程 第八章 使用EL和JSTL简化JSP

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

2022/3/20 Java开发之Java web编程 第八章 使用EL和JSTL简化JSP

目录

一、EL表达式

        1、概念

        2、作用

        3、语法

        4、注意

        5、使用

6、隐式对象

7、c:set、c:out和c:remove

1.

2.

3.

二、JSTL

        1、概念

        2、作用

        3、使用步骤

        4、常用的JSTL标签

       (1)if:相当于java代码的if语句

        (2)choose:相当于java代码的switch语句

        (3)foreach:相当于java代码的for语句

        5、练习

三丶本章总结


一、EL表达式


        1、概念

                expression Language 表达式语言

        2、作用


                替换和简化jsp页面中java代码的编写

        3、语法


                ${表达式}

        4、注意


                jsp默认支持el表达式的。如果要忽略el表达式
                设置jsp中page指令中:isELIgnored="true",忽略当前jsp页面中所有的el表达式
                ${表达式}:忽略当前这个el表达式

        5、使用

        (1)运算

                运算符:

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

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

        (2)获取值

el表达式只能从域对象中获取值语法:

${域名称.键名}:从指定域中获取指定键的值

域名称:

  1. pageScope		--> pageContext
  2. requestScope 	--> request
  3. sessionScope 	--> session
  4. applicationScope --> application(ServletContext)

举例:在request域中存储了name=张三

获取:${requestScope.name}

${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

        (3)获取对象、List集合、Map集合的值

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

本质上会去调用对象的getter方法

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

Map集合:

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

6、隐式对象

el表达式中有11个隐式对象pageContext:

获取jsp其他八个内置对象

${pageContext.request.contextPath}:动态获取虚拟目录

7、c:set、c:out和c:remove

1.


标签用于设置变量值和对象属性。它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。

属性

value:要存储的值var:存储信息的变量target:要修改的属性所属的对象property:要修改的属性scope:var属性的作用域

2.

标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是标签可以直接通过"."操作符来访问属性。

举例来说,如果想要访问customer.address.street,只需要这样写:

标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。

属性

value:要输出的内容default:输出的默认值escapeXml:是否忽略XML特殊字符(默认值为true表示会自动进行转义处理,手动设置为false后可以显示标签)

3.

标签用于移除指定作用域内的指定变量。


var:待移除的变量名称scope: 待移除变量所在的作用域(默认为page)

二、JSTL         1、概念

                JavaServer Pages Tag Library JSP标准标签库是由Apache组织提供的开源的免费的jsp标签 <标签>         2、作用

                用于简化和替换jsp页面上的java代码

        3、使用步骤

导入jstl相关jar包引入标签库:taglib指令: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>使用标签

        4、常用的JSTL标签

       (1)if:相当于java代码的if语句     属性:test必须属性,接受boolean表达式

如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容一般情况下,test属性值会结合el表达式一起使用注意:

c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签

        (2)choose:相当于java代码的switch语句 使用choose标签声明 相当于switch声明使用when标签做判断 相当于case使用otherwise标签做其他情况的声明 相当于default

        (3)foreach:相当于java代码的for语句 语法

    主体内容
items属性指被迭代的集合对象,可以通过EL表达式获取。var属性是对当前成员的引用,即如果当前循环到第一个成员,var就引用第一个成员, 如果当前循环到第二个成员,var就引用第二个成员,以此类推。varStatus属性用于存放var属性引用的成员的相关信息,如索引等。begin属性表示开始位置,默认为0,该属性可以省略。end属性表示结束位置,该属性可以省略。step表示循环的步长,默认为1,该属性可以省略。

        5、练习

需求:在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中代码如下:

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.allen.domain.User" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    test



<%
    List list = new ArrayList();
    list.add(new User("张三",23,new Date()));
    list.add(new User("李四",24,new Date()));
    list.add(new User("王五",25,new Date()));

    request.setAttribute("list",list);

%>

    <%--数据行--%>
    
        
            
            
编号 姓名 年龄 生日
${s.count} ${user.name} ${user.age} ${user.birStr}
${s.count} ${user.name} ${user.age} ${user.birStr}
package Servlet;
import entity.Dog;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/TextServlet")     //用注解给这个文件取个路径
public class TextServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setAttribute("a",10);
        req.getSession().setAttribute("b",20);
        Dog d1=new Dog("小白",2,"白色");
        Dog d2=new Dog("小黑",3,"黑色");
        Listlist=new ArrayList<>();
        list.add(d1);
        list.add(d2);
        req.getSession().setAttribute("list",list);
        req.getSession().setAttribute("Flag",1);
        req.getSession().setAttribute("html","点我啊");
        req.getRequestDispatcher("index.jsp").forward(req,resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }
}
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    $Title$
  
  
  <%--用于从作用域中取值--%>
  <%--page
  ${requestScope.a}
  ${sessionScope.b}
  
    
${ob.name} ${ob.age} ${ob.color}
欢迎你,啊啊啊! 请登录! <%-- var:键 value:值 scope:作用域--%>

三丶本章总结
    EL表达式的语法有$和{}两个要数,两者缺一不可。EL表达式提供了pageScope丶requestScope丶sessionScope丶applicationScope丶param丶paramValues丶pageContext丶cookie丶initParam等隐式对象。EL表达式具有类型无关性,可以使用点操作符或[]操作符取得某个属性的值。JSTL核心标签库中常用的标签有如下三类。
      通用标签:。条件标签:。迭代标签:
    EL表达式与JSTL标签结合使用,可以在很大程度上减少在JSP中嵌入的Java代码,有利于程序的维护和扩展。

 

 

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

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

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