第七章 ELJSTL

xiaoxiao2021-03-01  16

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>

 

转载请注明原文地址: https://www.6miu.com/read-3200212.html

最新回复(0)