java web--EL技术与JSTL技术简介

  为了更方便、便捷的在页面中输入和操作动态数据,jsp引入了表达式语言(EL)和jsp标准标签库(JSTL)技术。两者在jsp2.0版本以上都作为标准被支持。

目录

一、EL技术

  1.EL的作用

  2.EL语法

  (1)EL的语法形式

  (2)EL内部对象

  (3)存取运算符

  (4)EL运算符

  3.EL调用实例

二、JSTL技术

  1.JSTL简介

  2.常用的JSTL标签

(1):用于在jsp页面中显示数据

(2):用于保存数据

(3):用于删除数据

(4):单条件标签

(5):多分枝标签

(6):循环标签

  3.JSTL标准函数

  4.JSTL实例--使用EL和JSTL显示查询结果


一、EL技术

  1.EL的作用

    jsp页面中输出动态信息有三种方法。

    ①jsp内置对象out:例如,<% out.println("这是一篇技术介绍博客");%>

    ②jsp表达式:例如,<%=new Date()%>

    ③表达式语言:例如,${user.id}

    EL表达式的作用就是在jsp页面中输出动态信息

  2.EL语法

  (1)EL的语法形式

    所有的EL都是以“${”开始,以“}”结束的。

例如:
   ${user.name}
   功能:在页面上显示表达式user.name的值

   如果EL表达式不指定范围,那么表达式会依次在page、request、session、application范围中查找。若中途找到user.name,就返回其值,不在继续找;但若在全部范围中内有找到,就返回null。

  如果要指定范围,就需要加上特定的前缀

page范围:${pageScope.user.name}
request范围:${requestScope.user.name}
response范围:${responseScope.user.name}
session范围:${sessionScope.user.name}

  在web程序设计时,对jsp页面常用EL代替脚本代码显示输出内容。

  (2)EL内部对象

    EL提供了11个可直接使用的内部对象。

EL内部对象
类别对象描述
jsppageContent获取当前jsp页面的信息,可访问jsp的8个内置对象
作用域pageScope获取page范围的属性值
requestScope获取request范围的属性值
sessionScope获取response范围的属性值
applicationScope获取application范围的属性值
请求参数param获取单个指定请求参数的值
paramValues获取请求参数的所有请求参数的值数组
请求头header获取单个指定请求头信息的值
headerValues获取请求头信息的所有请求头的值数组
Cookiecookie获取request中的Cookie集
初始化参数initParam获取初始化参数值

  (3)存取运算符

    EL表达式是由EL的有关运算符构成的式子,主要运算符有:存取数据运算符以及表达式求值运算符。

    在EL中,对数据值的存取是通过"[]"或"."实现的。

${user.name}或${user["name"]}或${user[name]}
  "[]"主要用于访问数组、列表或其他集合对象的属性
  "."主要用于访问对象的属性

  (4)EL运算符

    EL支持的运算符和java语言运算符类似,分为算数运算符、关系运算符、逻辑运算符和特殊运算符。唯一不同的是EL中的一个特殊运算符empty--用以判断是否为空。

    EL提供自动类型转换的功能,能够按照一定的规则将操作数或结果转换成指定的类型。

  3.EL调用实例

    调用并显示javabean中的信息

package bean;

public class javabean {
  private int id;
  private String name;
  private String sex;
public javabean() {
	super();
	id=1;
	name="张三";
	sex="男";
}
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getSex() {
	return sex;
}
public void setSex(String sex) {
	this.sex = sex;
}
  
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page import="bean.javabean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>调用javabean</title>
</head>
<body>
<jsp:useBean id="javabean" class="bean.javabean" scope="session"></jsp:useBean>
<%
int BId=javabean.getId();
javabean.setId(2);
String Name=javabean.getName();
javabean.setName("李四");
%>
<p>展示信息</p>
<hr>
学号:${javabean.id}<br>
姓名:${javabean.name}<br>
性别:${javabean.sex}<br>
</body>
</html>

二、JSTL技术

  1.JSTL简介

    JSTL是jsp标准标签库,使用JSTL中的标签可以提高开发效率,减少jsp页面中的代码数量,保持页面的简洁性和良好的可读性、可维护性。

    JSTL专门提供了一套支持Jar包,JST标签按功能分为5类。

JSTL标签库
功能类型uriprefix库功能
核心库

http://java.sun.com/jsp/jstl/core

c操作范围变量、流程控制、url生成和操作
XML处理http://java.sun.com/jsp/jstl/xmlx操作通过xml表示的数据
格式化http://java.sun.com/jsp/jstl/fmtfmt数字及日期数据格式化、页面国际化
数据库存取http://java.sun.com/jsp/jstl/sqlsql操作关系数据库
函数http://java.sun.com/jsp/jstl/functionsfn字符串处理函数

    表中的统一资源标识符(URI)表示标签的位置,perfix是使用标签时用到的前缀。在web程序中使用JSTL标签,必须首先下载支持Jar包(javax.servlet.jsp.jstl.jar和jstl-impl-1.2.2.jar),然后部署到工程中。

    在jsp页面中添加taglib指令,从而使该页面使用到添加的标签:

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

  2.常用的JSTL标签

(1)<c:out>:用于在jsp页面中显示数据

<c:out value="${user.id}" default="null"/>

    value属性:输出的信息,可以使EL表达式或常量;default属性:可选项,当value值为空时显示的信息,上述例子显示null。  

(2)<c:set>:用于保存数据

<c:set target="" value="" var="" property="" scope=""/>

    value属性:可选项,要保留的信息;target属性:可选性,需要修改属性的变量名;property属性:可选项,需要修改的javabean属性;var属性:可选项,需要保存的信息的变量;scope属性:可选项,保存信息的变量范围。

(3)<c:remove>:用于删除数据

<c:remove var="" scope=""/>

    var属性:要删除的变量;scope属性:可选项,被删除变量的范围(page、request、response、application)

(4)<c:if>:单条件标签

<c:if test="test-condition">
    body content
</c:if>

    test属性:需要评价的条件,条件需要自己定义;var属性:可选项,需要保存的信息的变量;scope属性:可选项,保存信息的变量范围。

(5)<c:choose>:多分枝标签

    <c:choose>用于多选择情况,与<c:when>、  <c:otherwise>配合使用。<c:when>有一个属性test,由于指明判定条件。

<c:choose>
  <c:when test="condition1">
    相关语句
  </c:when>
  其他条件语句
  <c:otherwise>
    相关语句
  </c:otherwise>
</c:choose>

(6)<c:forEach>:循环标签

    格式1:

<c:forEach var="" varStatus="" begin="" end="" step="">
    循环内容
</c:forEach>

    格式2:

<c:forEach var="" varStatus="" items="">
    循环内容
</c:forEach>

    其中,items属性:进行循环的项目;var属性:代表当前项目的变量名;begin属性:开始条件;end属性:结束条件;step属性:步长;vatStatus属性:显示循环变量的状态。

  3.JSTL标准函数

    调用函数前,需要在jsp中引入标准函数声明。

http://java.sun.com/jsp/jstl/functions
JSTL标准函数
函数名函数说明
fn:contains()测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase()测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith()测试输入的字符串是否以指定的后缀结尾
fn:escapeXml()跳过可以作为XML标记的字符
fn:indexOf()返回指定字符串在输入字符串中出现的位置
fn:join()将数组中的元素合成一个字符串然后输出
fn:length()返回字符串长度
fn:replace()将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split()将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith()测试输入字符串是否以指定的前缀开始
fn:substring()返回字符串的子集
fn:substringAfter()返回字符串在指定子串之后的子集
fn:substringBefore()返回字符串在指定子串之前的子集
fn:toLowerCase()将字符串中的字符转为小写
fn:toUpperCase()将字符串中的字符转为大写
fn:trim()移除首位的空白符

  4.JSTL实例--使用EL和JSTL显示查询结果

package bean;

public class javabean {
  private int id;
  private String name;
  private String sex;
public javabean() {
	super();
	// TODO Auto-generated constructor stub
}
public javabean(int id, String name, String sex) {
	super();
	this.id = id;
	this.name = name;
	this.sex = sex;
}
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getSex() {
	return sex;
}
public void setSex(String sex) {
	this.sex = sex;
}
  
}
package bean;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class jieshou
 */
@WebServlet("/jieshou")
public class jieshou extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public jieshou() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		List<javabean> studentlist=new ArrayList<javabean>();
		studentlist.add(new javabean(1,"张三","男"));
		studentlist.add(new javabean(2,"李四","女"));
		studentlist.add(new javabean(3,"王五","男"));
		request.setAttribute("result", studentlist);
		request.getRequestDispatcher("beanEL.jsp").forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page import="bean.javabean,java.util.*" %>
            <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>调用servlet</title>
</head>
<body>
<p>通过EL和JSTL显示结果</p>
<hr>
<table>
<tr><th>学号</th><th>姓名</th><th>性别</th></tr>
<c:forEach var="javabean" items="${result }">
<tr><td>${javabean.id}</td>
<td>${javabean.name}</td>
<td>${javabean.sex}</td></tr>
</c:forEach>
</table>
</body>
</html>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值