前言
el表达式:${表达式}和JSTL标准标签库
一、EL(Expression Language)是什么?
- 表达式语言
- 代替JSP页面表达式脚本进行数据的输出(只能获取数据,不能设置数据)
- EL表达式写在jsp页面中,表达式一般是域对象的key

2.EL的使用
通过变量名取值
${变量}
获取对象的属性值
${对象名.属性名}
获取集合元素
${对象.size()}
${对象名[索引]}
${map集合对象名[key]}
//算术运算
${+-*/}
/:div
%:mod
//逻辑运算符
&&:and ||:or !:not
//关系运算符
>=:ge
<=:le
==:eq
!=:ne
//empty运算符:代表判断元素是否为null
二、JSTL(标准标签库)
1.JSLT配置及使用
- 导入依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
- 核心标签库:核心标签库是整个JSTL中最常用的部分,主要有:基本输入输出、流程控制、迭代操作和URL(import…)操作
- 使用
- 在使用该库的页面中添加指令
- 使用标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<c:set var="num" value="7" scope="request|session|application"/>
<!--target:代表要修改的对象,property:要修改对象的属性,value:要修改的属性值-->
<c:set target="${userInfo}" property="username" value="张三"/>
<!--out:输出内容-->
<c:out value="${num}"/>
<!--删除属性-->
<c:remove var="num"/>
<c:forEach var="map" items="数组|集合" begin="起始值" end="结束值" step="迭代步长" varStatus="循环变量(status)">
<!--循环体-->
</c:forEach>
<!--数字与日期格式化-->
<fmt:formatNumber value="12.354" pattern="#0.00"/>
<!--12.35四舍五入-->
<fmt:formatDate value="${Date}" type="yyyy-MM-dd HH:mm:ss" />
<!--2012-01-21 13:30:00-->
2.循环遍历的方式
代码如下(示例):
<c:forEach var="newsType" items="list">
${newsType}
</c:forEach>
<c:forEach var="i" begin-"0" end="10" step="1">
<!--循环体-->
</c:forEach>
<c:if test="条件(true/false)">
</c:if>
<c:if test="${not(!) empty userInfo}">
</c:if>
<c:choose>
<c:when test="表达式">
<!--满足表达式就执行的代码段-->
</c:when>
---
<c:otherwise>
<!--以上表达式都没满足就执行的代码段-->
</c:otherwise>
</c:choose>
数据库的连接JDBC
Properties properties = null;
{
//创建Properties对象
properties = new Properties();
properties.load(JDBCUtils.class.getClassLoder().getResourseAs)
}
public Connection getConnection(){
//加载驱动
Class.forName(getValue("classname"))
//创建连接
Connection connection = DriverManager.getConnection(getValue("url"),getValue("username"),getValue("password"));
return connection
}
数据库的增删改查(CRUD)
增加Create
public int addNews(News news){
final String SQL="INSERT INTO news(newsName,title,content,resourse,editor,news_date) value(?,?,?,?,?,?)";
Connection c = getConnection();
PreparedStatement ps = c.perpareStatement(SQL);
ps.setString(1,news.getNewsName())
ps.setString(2,news.getTitle());
ps.setString(3,news.getContent());
ps.setString(4,news.getResourse());
ps.setString(5,news.getEditor());
ps.setDate(6,new java.sql.Date(news.getNews_date().getTime()));
int num = ps.executeUpate();
release(ps,c);
return num;
}
检索(查Retrieve)
int num Update(News newsold, String content){
String sql="update news set content=? where id=?";
Connection connection = getConnection();
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1,content);
ps.setInt(2,newsold.getId());
int num = ps.executeUpdate();
release(ps,connection);
return num;
}
改U(Update)
public int addNews(News news){
final String SQL="INSERT INTO news(newsName,title,content,resourse,editor,news_date) value(?,?,?,?,?,?)";
Connection c = getConnection();
PreparedStatement ps = c.perpareStatement(SQL);
ps.setString(1,news.getNewsName())
ps.setString(2,news.getTitle());
ps.setString(3,news.getContent());
ps.setString(4,news.getResourse());
ps.setString(5,news.getEditor());
ps.setDate(6,new java.sql.Date(news.getNews_date().getTime()));
int num = ps.executeUpate();
release(ps,c);
return num;
}
多表操作
映射关系的建立
- 一对多
- 在一的一方,建立多的一方的集合,由于考虑到集合中的对象必须是唯一的,所以通常会采用Set集合实现,由于一对多的查询方式较为复杂而且不利于维护,所以通常采用多对一的查询方式
public class Grade{ private Set<Student> set; } - 多对一
- 在多的一方,建立对一的一方的引用
public class Student{ private Grade grade; }
本文介绍了JavaWeb中的EL表达式语言,讲解了EL的使用,并详细探讨了JSTL标准标签库,包括配置、使用及循环遍历的方法。此外,还涉及到了JDBC数据库连接,以及数据库的增删改查操作,特别是多表操作中的映射关系建立。
939

被折叠的 条评论
为什么被折叠?



