EL,JSTL

1 篇文章 0 订阅

学习主题:EL,JSTL
学习目标:
1 掌握 EL表达式基本语法
2 掌握EL表达式获取作用域数据
3 掌握EL表达式的判断 例如为空判断 相等判断 不等判断
4 掌握JSTL常用标签
5 掌握为什么需要使用JSTL以及使用JSTL的步骤

1.使用传统方式在jsp中获取作用域数据

(1)使用传统方式在jsp中获取作用域的数据有什么不方便的地方?
1、书写比较繁琐
2、需要导包
3、需要强转

2.表达式的概念介绍和基本语法

(1)视频中在jsp中使用脚本段语句获取作用域中的数据的缺陷是?
1、书写比较繁琐
2、需要导包
3、需要强转

(2)简述El表达式的作用?
作用:让 jsp 书写起来更加的方便。简化在 jsp 中获取作用域或者请求数据的写法。

3.EL表达式获取请求实体和请求头和Cookie数据

(1)根据视频中讲解,使用EL表达式获取请求实体数据

<!-- (1)使用EL表达式获取请求实体数据 -->
<!-- 获取一个键一个值的数据 -->
<%=request.getParameter("uname")%> <br />
${param.uname} <br />
<!-- (1)获取一个键多个值的数据 -->
<%=request.getParameterValues("fav")[1] %> <br />
${paramValues.fav[1]} <br />

(2)使用EL表达式获取请求头数据

<!-- (2)使用EL表达式获取请求头数据 -->
${header} <br />
<%=request.getHeader("user-Agent") %> <br />
${header["user-Agent"]} <br />
${headerValues["Accept-Language"][0] } <br />

(3)使用EL表达式获取Cookie数据

<!-- (3)使用EL表达式获取Cookie数据 -->
${cookie } <br />
${cookie.JSESSIONID} <br />
${cookie.JSESSIONID.name } <br />
${cookie.JSESSIONID.value } <br />

4.EL表达式获取作用域数据

(1)使用EL表达式获取作用域字符串数据的格式是?
普通字符串数据 ${键名}

(2)使用EL表达式获取作用域对象数据的格式是?
对象数据 ${键名.属性名}

(3)使用EL表达式获取List集合和Map集合的数据的格式是?
集合数据 list集合 : 键 名 [ 角 标 ] M a p 集 合 : {键名[角标]} Map集合: []Map{map集合作用域存储的键名.map集合存储的数据的键名}

(4)使用EL表达式获取作用域数据的查找顺序是?
作用域数据查找顺序:如果找到了则不再查找,如果找不到,则继续查找下一个作用域,如果四个作用域中都没有则什么都不显示。pageContext–>request–>session–>application

(5)使用EL表达式获取指定作用域数据的格式是?。
指定作用域获取数据:
${pageScope.键名} 指明获取pageContext作用域中的数据
${requestScope.键名} 指明获取request作用域中的数据
${sessionScope.键名} 指明获取session作用域中的数据
${applicationScope.键名} 指明获取application作用域中的数据

5.El表达式中的运算&empty判断

(1)视频中使用EL表达式完成逻辑运算的总结是?
算术运算:+,-,*,/ 在EL表达式中可以直接进行算术运算
算 术 表 达 式 例 如 : {算术表达式} 例如 : :{1+2}
注意:+表示算术运算,不能进行字符串连接
逻辑运算:&& || !
${逻辑表达式}
注意:没有单& 和单|
比较运算:== != >,>=,<,<=
比 较 表 达 式 三 目 运 算 : {比较表达式} 三目运算: {条件?值:值}

(2)EL表达式的Empty的作用及其使用格式是?
EL表达式的empty判断 ${empty 键名}
作用:判断该键是否有存储有效数据

6.El表达式修改项目和查询用户信息功能界面创建

(1)根据视频中的讲解,完成以下内容
使用EL表达式在登录成功的主页显示当前登录用户信息

  <div style="position: relative;left:820px" class="head-l"><span style="font-size: 15px;color: white">当前用户为:${sessionScope.user.uname }</span>&nbsp;&nbsp;<a class="button button-little bg-red" href="data?method=userExit" id="div_a"><span class="icon-power-off"></span> 退出登录</a> </div>

	在项目中完成查询用户信息功能及userList.jsp页面的创建
	
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="renderer" content="webkit">
<title></title>
<link rel="stylesheet" href="css/pintuer.css">
<link rel="stylesheet" href="css/admin.css">
<script src="js/jquery.js"></script>
<script src="js/pintuer.js"></script>
</head>
<body>
<div class="panel admin-panel">
  <div class="panel-head"><strong class="icon-reorder"> 用户信息列表</strong></div>
  <table class="table table-hover text-center">
    <tr>
      <th width="5%">ID</th>
      <th width="15%">一级分类</th>
      <th width="10%">排序</th>
      <th width="10%">操作</th>
    </tr>
    <tr>
      <td>1</td>
      <td>产品分类</td>
      <td>1</td>
      <td><div class="button-group"> <a class="button border-main" href="cateedit.html"><span class="icon-edit"></span> 修改</a> <a class="button border-red" href="javascript:void(0)" onclick="return del(1,2)"><span class="icon-trash-o"></span> 删除</a> </div></td>
    </tr>
    <tr>
      <td>1</td>
      <td>产品分类</td>
      <td>1</td>
      <td><div class="button-group"> <a class="button border-main" href="cateedit.html"><span class="icon-edit"></span> 修改</a> <a class="button border-red" href="javascript:void(0)" onclick="return del(1,2)"><span class="icon-trash-o"></span> 删除</a> </div></td>
    </tr>
    <tr>
      <td>1</td>
      <td>产品分类</td>
      <td>1</td>
      <td><div class="button-group"> <a class="button border-main" href="cateedit.html"><span class="icon-edit"></span> 修改</a> <a class="button border-red" href="javascript:void(0)" onclick="return del(1,2)"><span class="icon-trash-o"></span> 删除</a> </div></td>
    </tr>
    <tr>
      <td>1</td>
      <td>产品分类</td>
      <td>1</td>
      <td><div class="button-group"> <a class="button border-main" href="cateedit.html"><span class="icon-edit"></span> 修改</a> <a class="button border-red" href="javascript:void(0)" onclick="return del(1,2)"><span class="icon-trash-o"></span> 删除</a> </div></td>
    </tr>
    <tr>
      <td>1</td>
      <td>产品分类</td>
      <td>1</td>
      <td><div class="button-group"> <a class="button border-main" href="cateedit.html"><span class="icon-edit"></span> 修改</a> <a class="button border-red" href="javascript:void(0)" onclick="return del(1,2)"><span class="icon-trash-o"></span> 删除</a> </div></td>
    </tr>
    <tr>
      <td>1</td>
      <td>产品分类</td>
      <td>1</td>
      <td><div class="button-group"> <a class="button border-main" href="cateedit.html"><span class="icon-edit"></span> 修改</a> <a class="button border-red" href="javascript:void(0)" onclick="return del(1,2)"><span class="icon-trash-o"></span> 删除</a> </div></td>
    </tr>
  </table>
</div>
<script type="text/javascript">
function del(id,mid){
	if(confirm("您确定要删除吗?")){			
	}
}
</script>
</body>
</html>

(2) 根据视频简述查询用户信息功能实现的基本思路
1、创建用户信息显示界面(userList.jsp)
2、点击查询用户信息请求发送DataServlet
3、在DataServlet中获取所有的用户信息
4、将数据存储进request作用域对象中,请求转发给userList.jsp
5、在userList.jsp中获取从DataServlet中流转过来的用户数据,显示给浏览器。

7.查询用户信息功能实现

(1)根据视频讲解独立完成查询所有用户信息功能。

DataServlet:
//查询所有用户的信息
	public void selAllUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
		//获取请求信息
		//处理请求信息
		UserService us = new UserServiceImpl();
		List<User> list = us.selAllInfoService();
		//响应处理结果
			//将流转数据存储进req对象
			req.setAttribute("list", list);
			//请求转发
			req.getRequestDispatcher("/user/userList.jsp").forward(req, resp);
	}
UserService:
List<User> selAllInfoService();
UserServiceImpl:
@Override
	public List<User> selAllInfoService() {
		return ud.selAllUserInfoDao();
	}
UserDao:
List<User> selAllUserInfoDao();
UserDaoImpl:
@Override
	public List<User> selAllUserInfoDao() {
		
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		List<User> list = null;
		try{
			conn = (Connection) DBUtil.getConnection();
			String sql = "select * from t_user";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			list =  new ArrayList<User>();
			while(rs.next()){
				User user = new User();
				user.setUid(rs.getInt("uid"));
				user.setUname(rs.getString("uname"));
				user.setPwd(rs.getString("pwd"));
				user.setSex(rs.getString("sex"));
				user.setAge(rs.getInt("age"));
				user.setBirthday(rs.getString("birthday"));
				list.add(user);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DBUtil.closeAll(rs, ps, conn);
		}
		
		return list;
	}
userList.jsp:
<%
    	ArrayList<User> list =  (ArrayList)request.getAttribute("list");
    	for(int i=0;i<list.size();i++){
    %>
    	<tr>
	      <td width="5%"><%=list.get(i).getUid() %></td>
	      <td width="15%"><%=list.get(i).getUname() %></td>
	      <td width="10%"><%=list.get(i).getPwd() %></td>
	      <td width="10%"><%=list.get(i).getSex() %></td>
	      <td width="10%"><%=list.get(i).getAge() %></td>
	      <td width="10%"><%=list.get(i).getBirthday() %></td>
	      <td><div class="button-group"> <a class="button border-main" href="cateedit.html"><span class="icon-edit"></span> 修改</a> <a class="button border-red" href="javascript:void(0)" onclick="return del(1,2)"><span class="icon-trash-o"></span> 删除</a> </div></td>
    </tr>
    <%
    	}
    %>

8.JSTL的概念和介绍和out标签

(1)简述JSTL的作用
在jsp页面使用其可以非常方便的进行数据的处理。较与使用java代码块方法,更加的简单,代码更加的简洁易读。

(2)使用JSTL的流程是?
导入jar包
引入标签库

(3)如何在jsp中引入jstl?
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

9.out标签总结和set标签和remove标签

(1)简述out标签的作用及其使用格式?
out标签:<c:out value="${表达式}" default=“默认值”></c:out>
作用:结合EL表达式将数据响应给浏览器,如果EL表达式没有取到数据则可以使用default属性声明默认值

(2)set标签的使用格式及其作用?
set标签: <c:set value=“数据” var=“键名” scope=“作用域名”></c:set>
作用:将数据存储到指定的作用域中,默认是pageContext作用域

(3)set标签的scope属性的值分别为?及其作用?
注意:scope的值为:page request session application
声明作用域

(4)remove标签的使用格式及其作用是?
remove标签:<c:remove var=“要删除数据的键名” scope=“作用域名”/>
作用:删除作用域中的数据,默认是删除四个作用域中的符合要求的数据但是可以通过scope属性指明要删除的作用域数据。

10.if标签学习

(1)视频中使用remove标签的注意是?
注意:
使用pageContext.removeAttriute(“键名”), 此方法会将四个作用域中的符合要求的数据全部删除
使用pageContext.removeAttriute(String name,int scope)指明要删除的作用域中的数据 scope的值为 1pageContext,2request ,3 session,4 application
使用request.removeAttibute(“键名”) 删除当前作用域符合要求的数据
使用session.removeAttibute(“键名”) 删除当前作用域符合要求的数据
使用application.removeAttibute(“键名”) 删除当前作用域符合要求的数据

(2)if标签的使用格式及其作用是。
单分支判断标签:<c:if test="${表达式}">数据</c:if>
作用:可以根据el表达式进行一定程度的单分支逻辑判断。
(3)使用if标签的注意事项是什么?。

注意:
test属性中书写的是EL表达式,或者说是EL表达式的逻辑表达式。该标签只能进行EL表达式相关的逻辑判断。不能进行EL表达式不能获取的数据的逻辑处理
11.多分支choose标签学习
(1)视频中choose标签的使用基本格式及其作用是?。
		<c:choose>
			<c:when test="${表达式}"></c:when>
			<c:when test="${表达式}"></c:when>
			..
			<c:otherwise></c:otherwise>
		</c:choose>
		作用:多分支判断

(2)使用choose标签的注意事项是?
注意:符合条件后只会执行一个分支,其他分支不会执行。

12.循环标签普通循环学习

(1)循环标签的begin和end属性的作用是?。
begin:声明循环的开始位置
end:声明循环的结束位置

(2)循环标签的step属性和varStatues属性的作用是?
step:声明循环的步长
varStatus:声明变量记录循环状态 ,例如变量名:i

(3)varStatus属性获取循环状态的内容都有哪些及其作用是什么?

varStatus:声明变量记录循环状态 ,例如变量名:i
				注意:记录的数据存储到了作用域中可以直接使用El表达式进行获取
				示例: ${i.index}  获取当次循环的下标
						${i.count}  获取当次循环的次数
						${i.first}  判断是否是第一次循环
				 ${i.last}	  判断是否是最后一次循环

13.循环标签遍历集合学习

(1)循环标签的item和var属性的作用是?
items:声明要遍历的数据,可以是集合和数组等
注意:要使用EL表达式来获取
var:声明变量记录每次遍历的结果。可以做循环体中使用使用EL表达式获取遍历出来的数

14.使用JSTL修改项目学习

(1)根据视频使用JSTL完成项目的修改。

<c:choose>
                	<c:when test="${sessionScope.flag=='loginFalse'}">
                		<div style="text-align: center;color:red;">用户名或密码错误</div>
                	</c:when>
                	<c:when test="${sessionScope.flag=='regSuccess'}">
                		<div style="text-align: center;color:red;">用户注册成功</div>
                	</c:when>
                </c:choose>
                <c:remove var="flag" scope="session"/>

<c:forEach items="${lu}" var="u">
	    	<tr>
		      <td width="5%">${u.uid}</td>
		      <td width="15%">${u.uname}</td>
		      <td width="10%">${u.pwd}</td>
		      <td width="10%">${u.sex}</td>
		      <td width="10%">${u.age}</td>
		      <td width="10%">${u.birthday}</td>
		     <td><div class="button-group"> <a class="button border-main" href="cateedit.html"><span class="icon-edit"></span> 修改</a> <a class="button border-red" href="data?method=delUserInfo&uid=${u.uid}" onclick="return del(1,2)"><span class="icon-trash-o"></span> 删除</a> </div></td>
	    	</tr>
    	</c:forEach>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值