# 一、核心标签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)
- Java Web项目开发学习手册
- 一、B/S开发环境搭建
- 1.1 tomcat服务器目录结构及作用
- 1.2 在IDE开发工具上配置tomcat服务器
- 1.3 简单web项目在tomcat服务器上运行的方法
- 1.4 开发工具设置
- 1.5 总结
- 二、Servlet技术应用
- 2.1 HttpServlet中的主要方法及应用
- 2.1.1 基于Eclipse完成一个JavaWeb项目
- 2.2 HttpRequest,HttpResponse的应用
- 2.2.1客户端请求
- 2.2.2服务器响应
- 2.2.3Servlet HTTP 状态码
- 2.2.4图片验证码类
- 2.2.5注册模拟实现(带验证码)
- 2.3 ServletConfig对象和ServletContext对象的概念
- 2.4 总结
- 三、JSP技术应用
- 3.1 JSP基本语法
- 3.2 JSP标签和指令
- 3.3 JSP中的隐式对象
- 3.4 常用应用操作
- 3.4.1 JSP客户端请求
- 3.4.2 JSP服务器响应
- 3.4.3 HTTP状态码
- 3.4.4 表单处理
- 3.4.5 过滤器
- 3.4.6 Cookie处理
- 3.4.7 Session处理
- 3.4.8 文件上传
- 3.4.9 日期处理
- 3.4.10 页面重定向
- 3.4.11 点击量统计
- 3.4.12 自动刷新
- 3.4.13 发送邮件
- 3.5 JSP高级应用
- 3.5.1 JSP标准标签库(JSTL)
- 3.5.2 JSP连接数据库
- 3.5.3 JSP XML数据处理
- 3.5.4 JSP JavaBean
- 3.5.5 自定义标签
- 3.5.6 表达式语言
- 3.5.7 异常处理
- 3.5.8 调试
- 3.5.9 JSP国际化
- 3.6 实践代码
- 3.6.1 实践代码
- 3.6.2 项目实战
- 3.7 总结
- 四、MVC思想的理解和搭建MVC
- 4.1 MVC设计模式的思想
- 4.2 MVC设计模式的实现步骤
- 4.3 项目实践
- 4.4 总结
- 五、EL表达式和JSTL技术
- 5.1 EL表达式及其应用
- 5.2 常用的JSTL标签的应用
- 5.3 项目实践
- 5.4 总结
- 六、Cookie和Session
- 6.1 cookie对象的概念和应用
- 6.2 session对象的概念和应用
- 6.3 项目实践
- 6.4 总结
- 七、过滤器技术应用
- 7.1 Filter的概念及应用
- 7.2 Filter、FilterChain、FilterConfig 介绍
- 7.3 用户登录过滤案例
- 7.4 项目实战
- 7.5总结
- 八、异步请求技术
- 8.1 JSON数据格式
- 8.2 使用AJAX实现异步请求
- 8.3 用户名校验案例
- 8.4小结
- 综合项目技术实训
- 1.BS项目开发项目实战
- 2.项目需求分析和系统设计
- 2.1需求分析
- 2.2类型模型设计
- 2.3原型设计
- 3.项目数据库分析和系统设计
- 4.BS项目编程实现
- 4.1搭建框架和命名规约
- 4.2实现步骤
- 4.2.1创建实体类
- 4.2.2创建过滤器类
- 4.2.3创建工具类
- 4.2.4创建DAO接口及其实现类
- 4.2.5创建Service接口及其实现类
- 4.2.6创建测试类
- 4.2.7创建控制器类
- 5.企业开发流程规范
- 6.总结
- 九、练习题及答案
- 企业开发常用技术
- 1.Maven技术
- Java命名规范解读
- 参考资料
- 开发中常用的应用服务器和Web服务器