55 EL和 JSTL

EL和JSTL

55,1

EL和JSTL

01.实现了一个简易的Tomcat

02.搭建了web环境和初识JSP

03.JSP的内置对象(request response session application)

04.数据源和分层开发(查询新闻列表,新增新闻,删除新闻)

​ JNDI和连接池

三层架构:

表现层(迎宾/前台):接收来自客户端的请求,并对请求作出响应。

业务逻辑层(厨师):处理客户端的业务逻辑(登录,删除新闻)

数据访问层(采购):用于和数据库进行直接交互(DAO模式)

05.第三方控件(commons-fileupload和富文本编辑器)

06.分页技术(改造了项目:首页分页,管理员页面-列表分页)

07.分页功能完善和页面拆分

1.掌握EL表达式优化JSP页面显示

1.1 EL的概述
<%
	object obj = request.getAttribute("categoryList");
	//想使用集合
	if(obj != null){}
	List<Category> categoryList = (List<Category>)obj;
	}
	%>
	//取出来信息
	User user = (User)session.getAttribute("loginUser");
	//假设不为空:取用户的数据
	user.getUserName();
	user.getUserPassword();
	%>
	//${loginUser}
	//${loginUser.userName}
	//${loginUser.userPassword}

**EL(Expression Language)?*它是JSP中专门用于四大作用域中 取数据的一种表达式语言。

四大作用域

**page:**存储的数据只能在当前JSP页面使用

**request:**存储的数据只能在同一次请求中有效(请求转发可以保证请求不会重新发起)

**session:**存储的数据只能在同一个会话中有效(只要浏览器不会完全关闭 都属于一个会话,其他它利用的cookie技术)

**application:**存储的数据可以在整个应用中都有效(服务器开启则可以使用 关闭则自动销毁)

1.2 EL的基本语法

从作用域中取出变量数据

${作用域中的变量名}
例如:request.setAttribute("username","赵经理");
取数据:${username}
//EL在取数据时,如果查找不到,则默认不显示,不像之前的getAttribute()系列返回null

//其实最完整的语法应该如下:从作用域中取数据 应该添加上作用域的前缀
${pageScope.键名}
${requestScope.键名}
${sessionScope.键名}
${applicationScope.键名}
//当采用上方的简写形式时,它会默认从page->request->session->application依次查找数据(范围小 ->范围大>

1.3 EL操作各类型数据

EL操作数组

例如:${nameArr[索引]}

EL操作对象

可以使用.来获取对象的属性 也可以使用【】,它们实质上调用的还是getter方法

用户名:${loginUser.username}<br/>
用户类型:${loginUser.userType}<br/>

用户名:${loginUser["usernamef  "]}

EL操作集合

List 临时存储数组

Map 临时存储 对象操作

1.4 EL操作运算符

EL内支持各种运算符 算术运算符 关系运算符 逻辑运算符和三元运算符

另外它还有一个特别的关键字:empty用于判断一个字符串(null 空字符串),集合(null 空集合)等内容是否为空。

判断不为空:not empty

1.5 EL隐式对象

pageScope

requestScope

sessionScope

application

pageContext:用于获取其他的的作用域对象

param:等价于request.getParameter(name)

paramValus:等价于request.getParameterValues(name)

header:获取请求头信息

headerValue:获取多个请求头信息

initParams:获取web.xml中配置的初始化参数信息

cookie:获取cookie信息

2.掌握JSTL优化JSP页面显示

**JSTL:(Java Server Pages **Standard Tag Library)

<%

​ for(){

}

%>

它需要结合EL表达式来使用!用于在JSP页面进行一些数据处理操作,选择结构,循环结构。

JSTL默认没有集成在Java EE中,想使用必须先下载并导入。

使用步骤:

​ 1.下载jstl 1.2并导入工程

​ 2.通过tablib声明引入到JSP页面

<%@taglib uri = “http://java.sun.com/jsp/jstl/core” prefix=“c”%>

2.1 JSTL输出

<c:out></c:out>

<!--
	out标签是用来向页面输出内容 它通常输出的是EL表达式的内容
		value:表达式
		default:默认值
		escapexml:默认为true 表示 忽略XML(不解析)
		如果改为false则重新解析
	-->
	<%
	// request.setAttribute("uname,"赵经理");
	%>
	<%--<c:out value="${uname}"></c:out>--%>
	<%--<c:out value="${uname}"default="未知用户"></c:out>
	--%>
	<c:out value="<a href=''>点我跳转百度</a>"escapeXml="false"></c:out>
	
2.2 JSTL设置
<!--
	set标签可以用于向作用域中存储数据
		var:键名
		value:值/也可以写EL
		scope:作用域名
	-->
	<%
		//request.setAttribute("uname","陈经理");
		User user = new User();
		user.setUsername("路里国");
		request.setAttribute("loginUser",user);
	%>
	${uname}<br/>
	<%--<c:set var="uname" value="陈经理"
	scope="request"></c:set>--%>
	
		<!--
			target:EL表达式 对象
			property:给某个对象的某个属性赋值
			value:要赋的值
		-->
		<c:set target="${loginUser}" property="userType"
	value="1"></c:set>
		用户名:${loginUser.username}<br/>
		用户类型:${loginUser.userType}
		

target:EL表达式 对象

property:给某个对象的某个属性赋值

value:赋值

2.3 JSTL移除

<c:remove var = “uname” scope=“page”/> 从指定作用域移除内容

2.4 条件语句-选择结构
<c:if test=""></c:if>
<c:choose>
	<c:when test=""></c:when>
	<c:otherwish></c:otherwise>
</c:choose>
c:set var ="userType" value="2"></c:set>
	当前用户类型为:
	<%--<c:if test="${userType == 1}">经理</c:if>
	<c:if test="${userType == 0}">普通员工</c:if>--%>
	
	<!--类似于多重if 不要在此标签内写注释等其他标签-->
	<c:choose>
		<c:when test="${userType == 1}">经理</c:when>
		<c:when test="${userType == 2}">老板</c:when>
		<c:otherwise>普通员工</c:otherwise >
	</c:choose>
2.5 循环语句-循环结构
<c:forEach items ="" var="" varStatus="" begin="" end="" step=""></c:forEach>
<%
		User user1 = new User("薛东明",2);
		User user2 = new User("李嘉诚",0);
		User user3 = new User("赵经理",2);
		List<User>userList =
	Arrays.asList(user1,user2,user3);
	
		request.setAttribute("userList",userList);
		%>
		
		<!--
		
		
			items:要遍历的集合(EL来获取)
			var:遍历出来的每一个元素
			varStatus:遍历出来的元素的状态信息(对象信息)
			index:索引
			count:当前是遍历的第几个(循环次数)
			-->
			<%--<c:forEach items="${userList}" var="user" varStatus="status">
			${status.count}-->${user.username}<br/>
			</c:forEach>--%>
			
			<!--
				begin:从,,第几个开始
				end:到第几个结束
				step:步进
				-->
				<%--<c:forEach begin ="1" end="10" step="2" var="num">
					${num}<br/>
					</c:forEach>--%>
					
					
					<!--遍历集合-->
					<%
						Map<String,Object>map = new HashMap<>();
						map.put("username","天老板");
						map.put("abc","冯老板");
						map.put("123","高老板");
						request.setAttribute("map",map);
						%>
						<c:forEach items="${map}" var = "entry">
							${entry.key}-->${entry.value}<br/>
						</c:forEach>
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值