54-el和jstl表达式

一、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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值