jstl学习
- 格式:doc
- 大小:41.19 KB
- 文档页数:8
实验四:EL表达式和JSTL标签库的使用一、实验的目的(1)掌握EL表达式的使用。
(2)掌握JSTL标签库的使用。
二、实验内容与要求(1)学习EL表达式的原理和使用。
(2)了解JSTL标签库的原理及使用。
(3)EL实例的调试。
(4)JSTL实例的调试。
三、实验主要步骤1. EL表达式实例程序的调试(1)源代码el.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'el.jsp' starting page</title></head><body>45+36=${45+36}<br/><%=pageContext.getAttributesScope("info") %><br/>${info}<br/>ID:${user.id}<br/>ID:${er.id}<br>ID:${user[id]}<br/>name:${}<br/>age:${user.age}<br/>salary:${user.salary}空么?= ${empty user }><br/>Age>20:${user.age>=20 }<br/>ID is empty:${empty user.id }<br/></body></html>(2)源代码employeemain.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ taglib uri="/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>员工管理主菜单</title></head><body><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td width="14%">编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="emp" items="${emplist}"><tr><td width="14%"><a href="toview.do?id=${emp.stu_id}">${emp.stu_name }</a></td> <td width="14%">${emp.stu_id}</td> <td width="14%">${emp.sex}</td><td width="14%">${emp.province}</td><tdwidth="14%">${emp.area}</td><td width="14%">${emp.nation}</td><td width="20%"><a href="toModofy.do?id=${emp.stu_id}">修改</a><a href="toDelete.do?id=${emp.stu_id}">删除</a></td></tr> </c:forEach></table></body></html>运行结果截图:2. JSTL标签库的使用程序实例的调试(1)源代码fmt02.jsp<%@ taglib uri="/jsp/jstl/core" prefix="c" %><html><head><title>JSTL日期格式案例</title></head><body><h1>JSTL日期格式标记</h1><hr><jsp:useBean id="now" class="java.util.Date"></jsp:useBean><fmt:setLocale value="zh_CN"/>full格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/><br> long格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/><br>medium格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="medium"timeStyle="medium"/><br>default格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"/> <br>short格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"/><br> <hr></body></html>运行结果截图:(2)源代码jstl01.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>JSTL应用</title></head><body><h1>c:forTokens标记使用</h1><hr/><c:set var="infos" value="10,30,40,50,60" /><c:forTokens items="${infos}" delims="," var="info" varStatus="status"><c:out value="${status.index}" />-<c:out value="${status.count}" />-<c:out value="${info}" /><br/></c:forTokens><hr/></body></html>运行截图:(3)源代码sql01.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>使用JSTL SQL标记</title></head><body><sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/student" user="root" password="root" var="infoData" scope="request" /><sql:query sql="select * from stuinfo" dataSource="${infoData}" var="emplist"scope="request"> </sql:query><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td >编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="row" items="${emplist.rows}"><tr><td width="14%"><a href="toview.do?id=${row.stu_id}">${row.stu_name }</a></td> <td width="14%">${row.stu_id}</td><td width="14%">${row.sex}</td><td width="14%">${row.province}</td><td width="14%">${row.area}</td><td width="14%">${row.nation}</td><td width="20%"><a href="toModofy.do?id=${row.empid}">修改</a><a href="toDelete.do?id=${row.empid}">删除</a></td></tr></c:forEach></table><hr/></body></html>运行截图:四、结论与体会EL表达式的目的是使用简洁的语法来替代jsp的表达式脚本<%=表达式%>,在jsp页面中输出动态的内容。
jstl 中if语句的使用JSTL(JavaServer Pages Standard Tag Library)是用于在JSP页面中嵌入Java 逻辑的标准标签库。
在JSTL中,有一个<c:if>标签可以用于条件判断和控制页面的显示。
<c:if>标签有三个常用的属性:test、var和scope。
1. test属性:用于定义条件表达式,只有当条件表达式为真(true)时,<c:if>标签中的内容才会被执行。
可以使用JSP中的EL表达式作为条件,例如:<c:if test="{age > 18}"><! 显示内容></c:if>2. var属性:用于定义一个变量,该变量会被赋值为布尔型的条件表达式的值。
例如:<c:if test="{age > 18}" var="isAdult"><! 当age大于18时,isAdult的值为true ></c:if>3. scope属性:用于指定变量的作用域,默认为page。
可以选择的作用域包括page(页面)、request(请求)、session(会话)、application(应用程序)。
例如:<c:if test="{age > 18}" var="isAdult" scope="request"><! 当age大于18时,在request作用域中创建变量isAdult ></c:if>示例:<c:if test="{age > 18}"><p>已成年</p></c:if><c:if test="{age <= 18}"><p>未成年</p></c:if>这个示例中,如果age大于18,则显示"已成年";如果age小于等于18,则显示"未成年"。
XXXX 大学计算机学院实验报告计算机学院2017 级软件工程专业 5 班指导教师XXX 学号姓名XXX 2019 年10 月30 日成绩实验内容或上机调试程序实验:使用EL表达式和JSTL实现将文本框中的内容输出到页面的功能,在此页面的文本框中输入内容,单击页面提交按钮之后,输入框以及按钮消失,文本框中输入的内容显示到页面(操作及显示效果均在同一页面完成)①核心代码如下所示:<!-- 表单 --><c:set value="1"var="visitContent"property="visitContent"/><!-- 表单提交后,表单内输入框如果为null,就隐藏输入框 --><c:if test="${erName==null}"><form action="${pageContext.request.contextPath}/index.jsp">userName:<input type="text"name="userName"><br/>userPassword:<input type="text"name="userPassword"><input type="submit"value="提交"><input type="reset"value="重置"></form></c:if><hr/><!-- 使用EL表达式显示输入框中的内容 -->userName:${erName} <br/>userPassword:${erPassword}②完成效果如下所示:图表单提交之前的效果实验内容或上机图表单提交后前的效果调试程序。
el和jstl实验总结-回复实验总结:el和jstl在Java Web开发中的应用引言:在Java Web开发中,为了简化页面的开发和编写,提高开发效率,EL表达式(Expression Language)和JSTL标签库(JSP Standard Tag Library)被广泛应用。
本文将以实验总结的形式,深入探讨EL表达式和JSTL标签库在Java Web开发中的应用和使用方法,并提供一些实际案例,以便读者更好地理解和应用这两个技术。
第一部分:EL表达式(Expression Language)的应用1. EL表达式的概述:EL表达式是一种用于在JSP页面中处理和访问服务器端数据的简单而强大的语言。
它提供了一种简洁和易于理解的方式来获取和展示数据。
2. EL表达式的语法:介绍EL表达式的基本语法,包括变量访问、属性访问、方法调用等。
3. EL表达式的内置对象:介绍EL表达式内置的一些对象和方法,如pageContext、request、response、session等,以及它们的常用用法。
4. EL表达式的运算符:介绍EL表达式中常用的运算符,如四则运算、逻辑运算、比较运算等。
5. EL表达式的应用案例:通过实际案例,展示EL表达式在Java Web开发中的应用,如获取用户输入、计算表单数据、展示数据库查询结果等。
第二部分:JSTL标签库(JSP Standard Tag Library)的应用1. JSTL标签库的概述:JSTL是一组自定义标签,通过标签的方式提供了一种简洁和易于维护的方式来处理和展示JSP页面中的数据。
2. JSTL标签库的分类:介绍JSTL标签库的分类,如核心标签库、格式化标签库、数据库标签库等。
3. JSTL核心标签库的常用标签:介绍JSTL核心标签库中常用的标签,如<c:if>、<c:forEach>、<c:choose>等,以及它们的常用用法。
2024程序员个人工作总结样本随着年末的临近,我回顾了本年度的个人工作表现,进行了自我审视与反思。
在这个过程中,我认真分析了自身的长处与待提升之处。
回顾过去,我时常感慨,若是从前的我能够掌握现有的经验,将会少走许多弯路。
因此,我认为有必要将我的工作经验分享给大家,特别是职场新人,希望能为他们的成长提供借鉴,避免不必要的曲折。
在工作中,我们应当秉持积极主动的态度,因为态度往往决定了工作的成效。
在此,我想通过一个实例来阐述这一点。
曾经,我分配了一个任务给两位同事。
其中B同事虽然对JSP技术有所了解,但对JSTL并不熟悉。
我为他提供了学习的机会,而他在短时间内迅速掌握了JSTL,并提交了学习总结。
尽管我知道他在短时间内不可能完全精通,但他的学习态度和总结让我深感满意。
第二天,B同事便完成了数据展示任务,并且成果完全符合我的预期。
这个例子充分说明,在同等条件下,不同的人会因为态度和积极性的差异而导致结果大相径庭。
因此,只要一个人对待工作的态度认真端正,其工作成效必然不会差。
提问也是职场新人必须掌握的技巧。
在此,我要强调两点:面对纯粹的技术问题,如果能够通过搜索引擎找到答案,那么就应当自主解决。
在提问之前,应该先通过搜索引擎如Google进行查询,并带着自己的理解和疑问去请教经验丰富的同事,这样可以获得更加丰富的收获。
为此,我推荐阅读《如何使用搜索技巧来成为一名高效的程序员》,以帮助大家提升搜索和提问的效率。
2024程序员个人工作总结样本(二)在报告期内,本人秉持高度的责任心和敬业精神,投入到了工作中。
在同事们的热忱协作与无私支持下,本人顺利完成了上级领导交付的任务。
具体工作成果如下:1. 对计费模块进行了深入的需求分析,完成了系统的概要设计以及数据库架构设计工作。
2. 实现了机器登录功能,该功能能够高效地搜索局域网内所有计算机,迅速获取主机名、IP地址、网卡物理地址MAC,并将其整合入系统登录验证流程。
jstl和el的简答题JSTL(JavaServer Pages Standard Tag Library)和EL (Expression Language)是在Java Web开发中常用的两种技术。
JSTL是一组自定义标签,用于简化在JSP页面中的Java代码编写。
它提供了一系列的标签,用于处理逻辑控制、迭代、条件判断、格式化等常见的页面操作。
通过使用JSTL,我们可以将复杂的Java代码转换为更简洁、易读的标签形式,提高代码的可维护性和可读性。
EL是一种表达式语言,用于在JSP页面中访问和操作数据。
它提供了一种简洁的语法,可以直接在页面中使用表达式来获取和展示数据,而不需要编写大量的Java代码。
EL支持访问JavaBean属性、数组、集合、映射等各种数据结构,并提供了一些常用的运算符和函数,方便在页面中进行数据处理和展示。
从多个角度来看,JSTL和EL的优点和用途如下:1. 简化开发,JSTL通过提供一组标签,使得开发人员可以更方便地进行逻辑控制、数据展示等操作,减少了繁琐的Java代码编写,提高了开发效率。
2. 提高可读性,使用JSTL和EL可以将复杂的Java代码转换为简洁的标签和表达式,使得页面代码更加清晰易读,降低了理解和维护的难度。
3. 代码重用,JSTL提供了一些常用的功能标签,如循环、条件判断、格式化等,可以在不同的页面中重复使用,减少了代码的冗余和重复编写。
4. 分离关注点,通过使用JSTL和EL,可以将页面展示逻辑和业务逻辑分离,使得页面更关注于展示数据而不是处理数据,提高了代码的可维护性和可测试性。
5. 跨平台兼容性,JSTL和EL是Java Web标准的一部分,可以在不同的Java Web容器中使用,保证了代码的可移植性和跨平台兼容性。
总结起来,JSTL和EL是在Java Web开发中常用的技术,它们通过提供一组标签和表达式,简化了页面开发和数据操作,提高了代码的可读性和可维护性。
jstl中的foreach语法,并举例说明JSTL(JSP Standard Tag Library)是一种为JSP页面提供标签库的技术,它简化了在JSP页面中使用条件判断和循环的操作。
在JSTL中,<c:forEach>是一个非常常用的标签,用于在JSP页面中遍历集合或数组。
一、<c:forEach>标签的基本语法 <c:forEach>标签有以下几个基本的属性: - var:指定集合中的当前元素的变量名。
- items:指定要遍历的集合或数组。
- begin、end、step:可选属性,用于指定遍历的起始位置、结束位置和步长。
- varStatus:可选属性,指定一个变量名用于保存每一次循环的状态信息。
下面是<c:forEach>标签的基本语法: ```xml<c:forEach var="item" items="${collection}"><!-- 在此处使用变量 ${item} --> </c:forEach> ```二、使用<c:forEach>标签的示例为了更好地理解<c:forEach>标签的使用,我们来看一个例子。
假设有一个名为“students”的List,其中包含了多个学生对象。
每个学生对象包含有学生的姓名、年龄和性别。
我们希望在JSP页面中显示出每个学生的信息。
首先,我们需要将学生对象的List传递给JSP页面,可以使用EL表达式将List存储在一个名为“students”的变量中: ```java List<Student> students = newArrayList<>(); // 添加学生对象到List中...request.setAttribute("students", students); ```然后,在JSP页面中使用<c:forEach>标签遍历“students”集合中的每个学生对象,并显示出姓名、年龄和性别: ```xml <table> <thead> <tr> <th>姓名</th> <th>年龄</th><th>性别</th> </tr> </thead><tbody> <c:forEach var="student"items="${students}"> <tr><td>${}</td><td>${student.age}</td><td>${student.gender}</td> </tr></c:forEach> </tbody> </table> ```在上面的示例中,<c:forEach>标签的var属性设置为“student”,items属性设置为“${students}”,表明它遍历的是名为“students”的变量,即我们传递给JSP页面的学生对象的List。
Jstl标签c:if的⽤法<c:if> 标签必须要有test属性,当test中的表达式结果为true时,则会执⾏本体内容;如果为false,则不会执⾏。
例如:${ername = = 'admin'},如果ername等admin时,结果为true;若它的内容不等于admin时,则为false。
于 接下来看下列的范例: <c:if test="${ername = = 'admin' }"> ADMIN您好!! //body部分 </c:if> 如果名称等于admin,则会显⽰"ADMIN您好!! "的动作,如果相反,则不会执⾏<c:if>的body部分,所以不会显⽰"ADMIN 您好!! //body部分"。
另外<c:if>的本体内容除了能放纯⽂字,还可以放任何JSP程序代码(Scriptlet)、JSP 标签或者HTML码。
除了test属性之外,<c:if>还有另外两个属性var和scope。
当我们执⾏<c:if>的时候,可以将这次判断后的结果存放到属性var⾥;scope则是设定var的属性范围。
哪些情况才会⽤到var和 scope这两个属性呢?例如:当表达式过长时,我们会希望拆开处理,或是之后还须使⽤此结果时,也可以⽤它先将结果暂时保留,以便⽇后使⽤。
例⼦:<%String amind="Admin";request.setAttribute("amind",amind);%><c:if test="${requestScope.amind=='Admin'}" var="condition" scope="request"> 您好Admin先⽣ </c:if>。
Jstl的添加第一种方式:在创建web项目的时候,自动添加jstl的标签,如图:将其中的单选框选中即可完成jstl标签的添加。
第二种方式:以一种正常的方式创建web项目,然后在项目中手动的添加jstl标签项,如图:点击项目名----右击------选中MyEclipse-------Add JSTL Libraries这样就完成了jstl的添加。
无论哪种方式的添加都必须包含两个jar包:jstl.jar和standard.jar。
Jstl在页面中的导入:---------------------------------------------------------------------------------------------------------------------- 第一种方式:如果是通过以上两种方式添加了jstl的话,那么在页面中就要添加以下的代码:<%@ taglib uri="/jstl/core" prefix="c" %>第二种方式:手动添加两个主要的jar包,就需要修改一下了:<%@ taglib prefix="c" uri="/jsp/jstl/core" %>Jstl标签Core标签库介绍Core标签库,又被称为核心标签库,该标签库的工作是对于jsp页面一般处理的封装,在该标签库中的标签一共有14个,被分为了四类,分别是:多用途核心标签:<c:out> <c:set> <c:remove> <c:catch>条件控制标签:<c:if> <c:choose> <c:when> <c:otherwise>循环控制标签:<c:forEach> <c:forTokens>url相关标签:<c:import> <c:url> <c:redirect> <c:param>以下是各个标签的用途和属性及其简单示例。
1.用于显示的<c:out>标签<c:out value="${username }" default="传值为空" escapeXml="true"/>该标签接收从前一个Action传递过来的username值,如果username的值为空,那么将默认显示default中的值,而当escapeXml设置为true时,将自动更换特殊字符。
2.用于赋值的<c:set>标签<c:set>标签用于为变量或是JavaBean中的变量属性赋值的工作,它的属性和描述如下所示:<c:set value="${username}" property="" scope="page" target="userBean" var="username"/>Value中存放着即将被使用的值Target中式被赋值的JavaBean实例的名称,若存在该target属性,则一定要存在property 属性(可选)Property中是JavaBean实例的变量属性名称(可选)Var是被赋值的变量名(可选)Scope变量的作用范围,若没有指定,默认为page(可选)3.用于删除的<c:remove>标签<c:remove>标签用于删除存在于scope中的变量,它的属性和描述如下:<c:remove var=”sessionName”scope=”session”>var 是即将被删除的存在scope范围中的变量的名称scope指示即将删除的变量存在的作用域范围4.用于捕获异常的<c:catch>标签<c:catch>标签允许在jsp页面中捕捉异常。
它包含了一个var属性,是一个描述异常的变量,该变量可选,若没有改变量的定义,那么仅仅是捕捉异常,而不做任何的处理,若定义了var属性,那么可以利用var所定义的异常变量进行判断转发到其他页面或提示报错信息。
<c:catch var=”errName”>${ == 3}</c:catch>当${ == 3}表达式有异常时,可以从var属性”err”得到异常的内容,通过判断err 内容是否为空来决定错误信息的提示。
5.用于判断的<c:if>标签<c:if>标签用于简单的条件语句<c:if test=”${username == ‘zhangshan’}”var=”result”scope=”session”>若test中的值就是zhangshan的话,就显示<c:if></c:if>中的内容,判断的结果将存储在scope 范围中的var变量中。
默认情况下scope的值为page。
6.用于复杂判断的<c:choose> ,<c:when>,<c:otherwise>标签这三个标签用于实现复杂条件判断语句,类似”if,else if”的条件语句。
<c:choose><c:when test="${username == 'zhangshan'}">显示张山的信息</c:when><c:otherwise>显示其他人的信息</c:otherwise></c:choose><c:choose></c:choose>标签没有属性,我们可以将其看做是<c:when></c:when>和<c:otherwise></c:otherwise>的父标签,而这一对判断标签就是其中的子标签。
7.用于循环的<c:forEach>标签<c:forEach items="${userList }" var="user" step="" varStatus="" begin="" end=""> ${user }</c:forEach>接收传递过来的一个List集合,然后依次迭代将其中的值放在var变量中Items中存放进行循环的集合(可选)Var做循环的对象变量名,若存在items这个属性,则表示循环集合对象中的变量名Begin表示开始条件End表示结束条件Step表示循环的步长,默认情况下为1varStatus显示循环状态的变量(可选)8.用于分隔字符的<c:forTokens>标签<c:forTokens>标签可以根据某个分隔符分隔指定的字符串,相当于java.util.StringTokenizer类。
<c:forTokens items="123.456.789" delims="." varStatus="" var="inteValue" begin="0" end="2" step="1">${intValue }</c:forTokens>Items表示进行分隔的EL表达式或是常量Delims表示分隔符Begin表示开始条件End表示结束条件Step表示循环的步长,默认情况下为1Var表示做循环的对象变量名(可选)varStatus显示循环状态的变量(可选)将需要分隔的字符串“123.456.789”,依据分隔符“.”进行分隔,begin为0表示从第一个“.”开始分隔,end为2表示分隔到第三个“.”,并将做循环的变量名指定为intValue。
由于步长为“2”,显示的EL表达式${intValue}只能显示为“123 789”。
9.用于包含页面的<c:import>标签<c:import>标签允许包含另一个JSP页面到本页面来<c:import url="/index.jsp" charEncoding="utf-8" context="/test" scope="" var="pageTest" varReader=""/>url需要导入页面的urlcontext该属性用于在不同的Context下导入页面,当出现context属性时,必须以“/”开头,此时url属性页需要以“/”开头(可选)charEncoding表示导入页的字符集var可以定义导入文本的变量名(可选)scope导入文本的变量名作用范围(可选)varReader接受文本的java.io.Reader类变量名(可选)10.用于得到URL地址的<c:url>标签该标签用于得到一个URL地址<c:url value="/index.jsp" context="" scope="" var="urlValue"></c:url><a href=”${urlValue}”>超链接</a>Value页面的URL地址Context该属性用于得到不同的Context下的URL地址,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)charEncoding设置URL的字符集(可选)scope变量名的作用范围(可选)11.用于页面重定向的<c:redirect>标签<c:redirect>用于页面的重定向,该标签的作用相当于response.setRedirect方法名的工作,它包含url和context两个属性,属性含义和<c:url>标签相同<c:redirect url=”/index.jsp”>出现该标签,则将重定向到当前web Context下的index.jsp页面,一般与<c:if>等标签一起使用。