第七章 EL/JSTL

EL表达式

    传统获取JavaBean属性必须实例化,且需要强制类型转换; EL即表达式语言,可以通过EL的功能替代传统的复杂流程

 

EL的语法

           ${ EL 表达式 }

           ${ bean.属性 }

EL的运算符

           ${ bean.属性 }

           ${ bean[属性] }

变量属性范围名称

           pageScope  :  整个page页面

           requestScope  :  request对象

           sessionScope  :  session对象

           applicationScope  :  application对象

           注册页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>注册页面</title>
  </head>
  
  <body>
  	<form action="submit.jsp" method="post">
  		编号:<input type="text" name="stuno" /><br /><br />
   		姓名:<input type="text" name="sname" /><br /><br />
   		年龄:<input type="text" name="age" /><br /><br />
   		<input type="submit" />
  	</form>
  </body>
</html>

           JavaBean

package com.entity;

/*
 * JavaBean实体类:封装数据
 */
public class Student {
	// 私有属性
	private int stuno ;
	private String sname;
	private int age ;

	// 有参构造方法
	public Student(int stuno, String sname, int age) {
		this.stuno = stuno;
		this.sname = sname;
		this.age = age;
	}
	// 公有的方法
	public int getStuno() {
		return stuno;
	}
	public void setStuno(int stuno) {
		this.stuno = stuno;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

           服务器处理页面和响应页面

<%@ page language="java" import="java.util.*,com.entity.Student" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>服务端处理</title>

  </head>
  
  <body>
	<%
		// 通过请求对象获取注册页面的数据
		int stuno = Integer.parseInt(request.getParameter("stuno"));
		String sname = request.getParameter("sname");
		int age = Integer.parseInt(request.getParameter("age"));
		// 将获取到的数据存入对象中
		Student stu = new Student(stuno, sname, age);
		// 将stu对象存入session会话对象中---名字为key,存入的内容的stu对象
		session.setAttribute("key", stu);
		
		// 进行响应重定向页面
		response.sendRedirect("response.jsp");
	 %>
  </body>
</html>
<%@ page language="java" import="java.util.*,com.entity.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>服务端响应的页面</title>
  </head>
  
  <body>
	<%
		// 获取服务端存入session会话对象中的stu对象
		/*
			传统获取stu对象,需要使用session会话的方法,
			获取到Object类型的stu,并进行类型转换
			以及调用对象的公有方法获取属性值
		*/
	 %>
	 <!--使用EL表达式简化了传统的流程-->
	 <!--EL表达式只能获取pageContext,request,session,application作用域中的对象,并且是通过作用域中的name名字来获取的-->
	 <h1>欢迎编号为${key.stuno}的同学注册成功</h1>
	 <h2>姓名:${sessionScope.key.sname}</h2>
	 <h2>年龄:${sessionScope.key.age}</h2>
  </body>
</html>

 

EL表达式的简单应用

<%@ page language="java" import="java.util.*,com.entity.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>

  </head>
  
  <body>
	<%
		// 设置字符串,存入session会话
		String str = "墨渐生微";
		session.setAttribute("str_key", str);
		// 设置对象 存入request对象
		Student stu1 = new Student(10 ,"Micro",20);
		Student stu2 = new Student(11 ,"Peter",19);
		request.setAttribute("stu_key", stu1);
		
		// 设置list集合,存入页面
		List<Student> list = new ArrayList<Student>();
		list.add(stu1);
		list.add(stu2);
		pageContext.setAttribute("list_key", list);
		
		// 设置map 存入application对象
		Map<String ,Student> map = new HashMap<String ,Student>();
		map.put("1", stu1);
		map.put("2", stu2);
		application.setAttribute("map_key", map);
		
	 %>
	 
	 <!--获取字符串-->
	 ${str_key}
	 <hr />
	 <!--获取对象-->
	 ${stu_key.sname}
	 <hr />
	 <!--获取集合-->
	 ${list_key[1].sname}
	 <hr />
	 <!--获取Map集合元素-->
	 ${map_key["1"].sname}
	 <hr />
  </body>
</html>

 

JSTL核心标签库

    JSTL标签包含了基本标签, 迭代标签, 条件标签 ;在使用时需要在JSP页面使用taglib指令导入标签库

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!--taglib指令:用来导入所需要的标签库  prefix是指定标签的前置-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>JSTL核心标签库</title>
  </head>
  
  <body>
  	<!--c:set标签用于某空间中(pageContext request session application)声明变量并赋值-->
  	
  	<!--定义了一个名字为name的变量,值为Micro 作用于为session对话-->
  	<c:set var="name" value="Micro" scope="session"></c:set>
  	<!--定义名字为sex的变量  值为男-->
  	<c:set var="sex" >男</c:set>
  	<!--set标签也可以通过target对象 property属性 value值  改变对象的属性值-->
  	<!--输出值-->
  	${name}
  	${sex}
  	<br /><hr />
  	<!--移除名字为sex的变量   : 输出为空-->
  	<c:remove var="sex"/>
  	${sex}
  	<br /><hr />
  	
  	
  	
  	<!--if标签--><!--如果name不等于null则输出name-->
  	<c:if test="${name!=null}">
  		<h1>${name}</h1>
  	</c:if>
  	<br /><hr />
  	
  	<!--choose选择标签:通过when标签的判断,eq判断等值,out输出,otherwise否则(when中不成立)-->
  	<c:choose>
  		<c:when test="${name eq 'micro'}">
  			<c:out value="${name}"></c:out>
  		</c:when>
  		<c:when test="${name eq 'Micro'}">
  			<c:out value="${name}"></c:out>
  		</c:when>
  		<c:otherwise>
  			<c:out value="否则"></c:out>
  		</c:otherwise>
  	</c:choose>
  	
  	<%
  		int[] nums={12,56,78,45,45};
  		session.setAttribute("arr", nums);
  	 %>
  	
  	<!--foreach:循环遍历,通过自动获取items中对象赋给var-->
  	<c:forEach var="num" items="${arr}">
  		<h5>${num}</h5>
  	</c:forEach>
  	
  </body>
</html>

formatNumber

formatDate

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!--taglib指令:用来导入所需要的标签库  prefix是指定标签的前置-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>格式化</title>
  </head>
  
  <body>
	<c:set var="number" value="8668.8866"></c:set>
	
	<!--formatNumber:对数字进行格式化-->
	<!--默认为number-->
	<fmt:formatNumber type="number" value="${number}"></fmt:formatNumber><br />
	<!--货币类型-->
	<fmt:formatNumber type="currency" value="${number}"></fmt:formatNumber><br />
	<!--百分比类型-->
	<fmt:formatNumber type="percent" value="${number}"></fmt:formatNumber><br />
	<!--对整数位与小数位截取-->
	<fmt:formatNumber type="number" value="${number}" maxIntegerDigits="3" minFractionDigits="6"></fmt:formatNumber><br />
	<!--自定义格式化数字-->
	<fmt:formatNumber type="number" value="${number}" pattern="###.##E0"></fmt:formatNumber>
	<hr /><br />
	
	<%
		Date date = new Date();
		session.setAttribute("time", date);
	 %>
	<!--formatDate:对日期进行格式化-->
	<!--时分秒-->
	<fmt:formatDate type="time" value="${time}"/><br />
	<!--年月日-->
	<fmt:formatDate type="date" value="${time}"/><br />
	<!--年月日时分秒-->
	<fmt:formatDate type="both" value="${time}"/><br />
	<hr />
	<fmt:formatDate value="${time}" dateStyle="short" timeStyle="short" type="both"/><br />
    <fmt:formatDate value="${time}" dateStyle="long" timeStyle="long" type="both"/><br />
    <fmt:formatDate value="${time}" dateStyle="medium" timeStyle="medium" type="both"/><br />
    <!--自定义时间格式-->
    <fmt:formatDate value="${time}" pattern="时间:yyyy-MM-dd HH:mm:ss"/>
  </body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值