一、el表达式
这是实体类,下面是根据这个信息进行操作的
package cn.kgc.entity;
import java.io.Serializable;
import java.util.Date;
/**
* 新闻实体类->和news_detail数据表对应的
* @author Charles7c
* 2019年4月28日 下午1:55:24
*/
public class Detail implements Serializable {
private static final long serialVersionUID = -8099406261580563983L;
private Long id; // 编号
private String title; // 标题
private Long categoryId; // 分类编号
private String summary; // 摘要
private String content; // 内容
private String picPath; // 图片地址
private String author; // 作者
private Date createDate; // 发表日期
private Date modifyDate; // 修改日期
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Long getCategoryId() {
return categoryId;
}
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPicPath() {
return picPath;
}
public void setPicPath(String picPath) {
this.picPath = picPath;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getModifyDate() {
return modifyDate;
}
public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
}
public Detail() {
super();
}
public Detail(Long id, String title, Long categoryId, String summary, String content, String picPath,
String author, Date createDate, Date modifyDate) {
super();
this.id = id;
this.title = title;
this.categoryId = categoryId;
this.summary = summary;
this.content = content;
this.picPath = picPath;
this.author = author;
this.createDate = createDate;
this.modifyDate = modifyDate;
}
@Override
public String toString() {
return "NewsDetail [id=" + id + ", title=" + title + ", categoryId=" + categoryId + ", summary=" + summary
+ ", content=" + content + ", picPath=" + picPath + ", author=" + author + ", createDate=" + createDate
+ ", modifyDate=" + modifyDate + "]";
}
public Detail(Long id,String title,String author,Date createDate) {
this.id = id;
this.title = title;
this.author = author;
this.createDate = createDate;
}
}
el简单的应用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>el的基本语法</title>
</head>
<body>
<%
//先在作用域中存一个数据
//el表达式只能从四大作用域中进行获取数据
request.setAttribute("username", "小孩子输欧华");
%>
<!--requestScope:request作用域 -->
<!--sessionScope:session作用域 -->
<!--pageScope:page作用域 -->
<!--applicationScope:application作用域 -->
<!-- 开始从作用域中取出数据 -->
姓名:${username}
</body>
</html>
2.el简单的应用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<%
//先进行存储数据到作用域中
request.setAttribute("user", "谁学了");
%>
<!-- 从作用域中取出数据
1.page作用域:this只能在本页面中使用
2.session作用域:一次会话中都可以使用
3.request作用域:一次请求中都可以使用
4.application :全局的作用域,只要服务器没有关闭,作用域中的数据就一直存在
如果不指定从哪个作用域中取出数据。默认的就是从小到大的作用域中开始来进行取出数据
-->
姓名:${user}
</body>
</html>
3.el简单的应用
<%@page import="cn.kgc.entity.Detail"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//想作用域中存储数据
Detail detail = new Detail();
detail.setAuthor("人生自古谁无私");
request.setAttribute("newsDetail", detail);
%>
<!--el操作对象中的某个属性的时候,通过使用对应的get方法 -->
作者:${newsDetail.author}
</body>
</html>
4.el简单的应用
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Arrays"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>操作数组和集合</title>
</head>
<body>
<%
//存储数据,储存数组,集合,
int[] arr = {2,3,5};
//Collection
List<Double> list = Arrays.asList(10.2,30.6,60.8,90.4);
//Map
Map<Object,Object> map = new HashMap<>();
map.put("cn", "中国");
map.put("jp", "日本");
map.put("us", "美国");
//将数据存到作用域中
request.setAttribute("arr1", arr);
request.setAttribute("list2", list);
request.setAttribute("map3", map);
%>
数组中的内容是:${arr1[0]} ${arr1[1]} ${arr1[2]}</br>
List中的内容是:${list2[0]} ${list2[1]} ${list2[3]}</br>
map集合中的内容是:${map3.cn} ${map3.jp}
</body>
</html>
5.简单的应用el
<%@page import="cn.kgc.entity.Detail"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>操作运算符</title>
</head>
<body>
<!--算数运算符直接返回true或者是false -->
${4>2}</br>
<!-- 关系运算符 -->
${ 4 == 2 }</br>
${3>5 || 3<1}</br>
<!-- 三元运算符 -->
${2>6?"网吧":"小孩子"} </br>
<!--判断是否为空,空的时候就返回true
字符串是空或者是null时候就返回true
集合是空的时候,或者是null的时候就返回true
-->
<%
//先定义一个字符串,和集合,将它存在作用域中
String str =null;
request.setAttribute("str1", str);
List<Detail> list = null;
%>
是否是空的集合:${not empty list}</br>
是否是空的字符串:${empty str1}
</body>
</html>
6.简单的el表单式应用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>操作其他作用域对象</title>
</head>
<body>
<!--如果想在el中操作request session等对象,需要借助域
pageContextPath隐式对象 -->
<!--获取请求的对象的地址 -->
${pageContext.request.remoteAddr}</br>
<!--contextPath就是获取绝对路径 -->
${pageContext.request.contextPath}
</body>
</html>
7.el简单的应用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>隐式对象params</title>
</head>
<body>
${param.name1}
</body>
</html>
---------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="index6.jsp?name1=admin">点我发送请求</a>
</body>
</html>
总结:el表达式只能从作用域中进行数据的获取,只能获取对象。
1.page作用域:this只能在本页面中使用
2.session作用域:一次会话中都可以使用
3.request作用域:一次请求中都可以使用
4.application :全局的作用域,只要服务器没有关闭,作用域中的数据就一直存在
5.如果不指定从哪个作用域中取出数据。默认的就是从小到大的作用域中开始来进行取出数据
6.el操作对象中的某个属性的时候,通过使用对应get方法得到的,获取作用域中的对象是(提前在作用域中存储好的对象)
7.算术运算符关系运算符,直接返回得是true或者是false
还可以使用三元运算符。
还可以进行是否是空的判断
通过${empty 对象或者是对象的属性}
param.name1可以获取隐式对象的值
二、使用jstl表达式
注意:使用jstl首先要导入jstl1.2jar的包,然后就进行在项目中进行引进,通过标签和URI还有priex引进,然后进行使用
1.JSTL使用的步骤
1.导入jstl的jar包
2.在jsp页面中引入jstl 通过taglib进行声明
3.可以使用这些标签进行业务的处理
2.jstl和el表达式结合起来使用的
jstl set,设置属性的值,属性名,属性在哪个作用域
1.var:键名
2.value:键值
3.scope:作用域
<c:set var="username" value="小5" scope="request"></c:set>
3.jstl 中的out
value:输出的内容
default:如果他判断你的value是空的,则会输出默认值
escapeXml:控制是否规避xml,标记语法,默认是true
记住jstl表达式中如果嵌套了标签超链接。超链接的地址要使用单引号进行引起来
<c:out value="${name}" default="谁丢了"></c:out></br>
<c:out value="<a href='http://www.baidu.com'>度娘</a>" escapeXml="false"></c:out>
4.从作用域中移除数据
var:要移除的键名
scope:要从哪个作用域中进行移除
<c:remove var="name" scope="page"/></br>
移除后:${name}
5.jstl中的条件表达式是结合的el 表达式使用的
test:条件表达式
var:将表达式的结果存储为某个键
scoPe:存储到某个作用域
<c:if test="${gender==0}">
女性
</c:if>
<c:if test="${gender==1}">
男性
</c:if> --%>
jstl中的choose等价于java中的if-else
<c:choose>
<c:when test="${gender==1}">男性</c:when>
<c:when test="${gender==0}">女性</c:when>
<c:otherwise>人妖</c:otherwise>
</c:choose>
6.1.items 要遍历的集合对象
2.var:遍历出来的每一个元素都会存在var 中
3.varStatus:表示每个遍历出来的元素的状态信息。它是一个对象
count:当前是第几个遍历的元素
index:元素的对应的索引
<c:forEach items="${list1 }" var="num1" varStatus="status">
当前的每一个元素${status.index}<br/>
</c:forEach>
begin:开始的数值
end:结束的数值
step;bujing
<c:forEach begin="1" end="10" var="num1" step="2" >
${num1}
</c:forEach>