🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 一、核心标签forEach和if的使用案例及代码实践 ## 1.forEach 标签 这些标签封装了Java中的for,while,do-while循环。 相比而言,标签是更加通用的标签,因为它迭代一个集合中的对象。 标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。 * * * ### forEach 语法格式 ~~~ <c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>"> ... ~~~ ### forTokens 语法格式 ~~~ <c:forTokens items="<string>" delims="<string>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>"> ~~~ ### 属性 标签有如下属性: | **属性** | **描述** | **是否必要** | **默认值** | | --- | --- | --- | --- | | items | 要被循环的信息 | 否 | 无 | | begin | 开始的元素(0=第一个元素,1=第二个元素) | 否 | 0 | | end | 最后一个元素(0=第一个元素,1=第二个元素) | 否 | Last element | | step | 每一次迭代的步长 | 否 | 1 | | var | 代表当前条目的变量名称 | 否 | 无 | | varStatus | 代表循环状态的变量名称 | 否 | 无 | 标签与标签有相似的属性,不过还有另一个属性: | **属性** | **描述** | **是否必要** | **默认值** | | --- | --- | --- | --- | | delims | 分隔符 | 是 | 无 | * * * ## forEach实例演示 ~~~ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>c:forEach 标签实例</title> </head> <body> <c:forEach var="i" begin="1" end="5"> 序号 <c:out value="${i}"/><p> </c:forEach> </body> </html> ~~~ 运行结果如下: ~~~ 序号 1 序号 2 序号 3 序号 4 序号 5 ~~~ * * * ## forTokens演示实例 ~~~ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>c:forTokens 标签实例</title> </head> <body> <c:forTokens items="google,baidu,taobao" delims="," var="name"> <c:out value="${name}"/><p> </c:forTokens> </body> </html> ~~~ 运行结果如下: ~~~ google baidu taobao ~~~ * * * ## 2. if标签 标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。 ### 语法格式 ~~~ <c:if test="<boolean>" var="<string>" scope="<string>"> ... </c:if> ~~~ ### 属性 标签有如下属性: | **属性** | **描述** | **是否必要** | **默认值** | | --- | --- | --- | --- | | test | 条件 | 是 | 无 | | var | 用于存储条件结果的变量 | 否 | 无 | | scope | var属性的作用域 | 否 | page | ## if演示实例 ~~~ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>c:if 标签实例</title> </head> <body> <c:set var="score" scope="session" value="${91}"/> <c:if test="${score >90}"> <p>你的成绩为: <c:out value="${score}"/><p> </c:if> </body> </html> ~~~ 运行结果如下: ~~~ 你的成绩为: 91 ~~~ ***** ***** # 二、代码实践 **1.使用EL进行算术运算,获取request里面的数据** ![](http://h.yiniuedu.com/a432ba2e4facf20d485f9eb3521a2705) **2.使用EL获取request里面List的数据** ![](http://h.yiniuedu.com/b20d22f6e814982537ef8bf34884f2ff) **3.JSTL包下载和配置** 1.下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ ![](http://h.yiniuedu.com/54e2d1ce6dec26922041415a646fdcb1) 2.解压然后配置到项目的WEB-INF的lib目录下 ![](http://h.yiniuedu.com/84d5cea5c9378003df6706f12427ad68) 3.找到核心标签的TLD文件 ![](http://h.yiniuedu.com/02bd5270aa4043bb374f1d795d6d36c0) 4.标签的信息 ![](http://h.yiniuedu.com/c176adc31f6204c695666eadab5a0f42) 5.jstl中核心标签out、set和if的结合使用 ![](http://h.yiniuedu.com/c7e9fe04b983ba6a7674c9ade250d05f) 6.jstl中核心标签forEach获取集合List中的导航菜单数据 ![](http://h.yiniuedu.com/653a411f946e6dc1de1aa0c48030da00) ***** ***** # 三、项目实践 **1.创建数据库wms200和表t_menu** ``` create database wms200 default character set utf8 collate utf8_general_ci; use wms200; DROP TABLE IF EXISTS `t_menu`; CREATE TABLE `t_menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `menuName` varchar(255) DEFAULT NULL, `menuURL` varchar(255) DEFAULT NULL, `menuNo` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; INSERT INTO `t_menu` VALUES ('1', '首页', 'index.jsp', '1'); INSERT INTO `t_menu` VALUES ('2', '关于我们', 'about.jsp', '2'); INSERT INTO `t_menu` VALUES ('3', '新闻中心', 'news.jsp', '3'); INSERT INTO `t_menu` VALUES ('4', '项目管理及实施', 'portfolio.jsp', '4'); INSERT INTO `t_menu` VALUES ('5', '产品中心', 'product.jsp', '5'); INSERT INTO `t_menu` VALUES ('6', '服务支持', 'server.jsp', '6'); INSERT INTO `t_menu` VALUES ('7', '联系我们', 'contact.jsp', '7'); INSERT INTO `t_menu` VALUES ('8', '人才招聘', 'talent.jsp', '8'); ``` **2.项目中导入mysql的jar包** 包下载地址: mysql-connector-java-3.1.13-bin.jar mysql8以上版本用 mysql-connector-java-8.0.25-bin.jar **3.手工创建数据库连接工具类DBconnection300.java** ``` package com.baishenghua300.utils; import java.sql.*; public class DBConnection300 { public static Connection getConn300() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/wms200?user=root&password=123456"); } catch (ClassNotFoundException e) { e.printStackTrace(); }catch (SQLException e) { e.printStackTrace(); } return conn; } public static void main(String[] args) { getConn300(); } public static void close(Connection con,Statement stmt, PreparedStatement pstmt,ResultSet rs){ try { if(con != null){ con.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if(stmt != null){ stmt.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if(pstmt != null){ pstmt.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if(rs != null){ rs.close(); } } catch (SQLException e) { e.printStackTrace(); } } } ``` **4.导航菜单DAO实现类实现查询所有导航菜单信息的方法** ![](http://h.yiniuedu.com/89688c291eaacb7c1594ddea8aaf4891) **5.服务层调用DAO层的方法** ![](http://h.yiniuedu.com/32f7d7fc6ed456c7fb5a81bc9360bee5) **6.控制器调用服务层,然后转发到jsp界面** ![](http://h.yiniuedu.com/d73f66b31833490a9b6ee351f8ad93b7) **7.发布项目,可以查询出数据库所有导航菜单信息** ![](http://h.yiniuedu.com/5e03ba9c489fe8242dbc0f9a7288afdf)