《Java从入门到放弃》JSP入门篇:EL和JSTL

news/2024/5/18 15:15:27 标签: EL表达式, JSTL

ELExpression Language(表达式语言),主要用来替代JSP页面中用来做简单运算和显示的代码。EL表达式可以用来显示page、request、session和application中的数据。

EL表达式的语法非常简单:

${  EL exprission },${  bean.name } 或  ${  bean['name'] }

案例:在页面上显示个人信息。

User类代码如下:

package com.test.entity;

public class User {
	private String loginID;
	private String loginPWD;
	private String nickName;
	private String tel;
	
	public String getLoginID() {
		return loginID;
	}
	public void setLoginID(String loginID) {
		this.loginID = loginID;
	}
	public String getLoginPWD() {
		return loginPWD;
	}
	public void setLoginPWD(String loginPWD) {
		this.loginPWD = loginPWD;
	}
	public String getNickName() {
		return nickName;
	}
	public void setNickName(String nickName) {
		this.nickName = nickName;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	
	
}

index.jsp页面代码如下:

  <body>
    <%
    	User user = new User();
    	user.setNickName("李大爷");
    	session.setAttribute("user", user);
    %>
    <p style="color:red;">${user.nickName }</p>
  </body>

运行效果:


JSTLJavaServerPages Standard Tag Library)是指JSP标准标签库。

使用JSTL的步骤:

1. 在JSP页面添加JSTL引用。

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

2. 使用JSTL标签。常用JSTL标签有if标签和forEach标签。

if标签用于判断条件是否成,与Java中的If语句做用相同。其语法如下:

<c:if   test="codition"    var="name"    scope="applicationArea" >

</c:if>

属性名

是否支持EL

属性类型

描述

test

true

Boolean

决定是否处理标签体的内容 

var

false

String

用于指定变量名,该变量用于保存test属性的判断结果

scope

false

String

用于指定变量的有效范围,默认值为page。可选值有pagerequestsessionapplication

案例:修改前一篇 文章中的需求,使用if标签。

之前使用的纯JSP的代码实现的登录前后的效果。使用if标签实现,代码如下:

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

  <body>
    <c:if test="${empty user}" var="loginState">
		<a href="#">登录</a>&nbsp;
		<a href="#">注册</a>    
    </c:if>
    <c:if test="${!loginState }">
    	<a href='#'>${user.loginID }</a>
    </c:if>
   </body>

forEach标签,用于实现对集合中对象的遍历。语法格式如下:

<c:forEach     items=collection         var=name    begin=start   end=end  step=count>

</forEach>

属性名

是否支持EL

属性类型

描述

var

false

Boolean

决定是否处理标签体的内容 

item

true

数组、字符串和集合类型

迭代的集合对象

varStatus

false

String

迭代的状态,可以获得迭代自身信息

begin

true

int

如果指定begin属性,则从item的下标为begin的位置开始迭代,如果没有指定begin属性,则从0下标开始迭代

end

true

int

如果指定end属性,就在item的下标为end的位置结束迭代,如果没有指定end属性,将迭代到最后一个下标位置。迭代的步长默认为1

step

true

int

案例:在页面上显示所有歌手。

数据库中的信息如下:

创建singerList.jsp页面,代码如下(可以自己创建集合,添加临时数据,效果相同):

SingerService singerService = new SingerService();
List<Singer> list = singerService.selectAll();
session.setAttribute("singerList", list);
  <body>
    <c:forEach items="${singerList }" var="singer" varStatus="status">
    	<p ${status.index%2==1?"style='background-color: #aa8a0c;'":"" }>${singer.singerName }&nbsp;&nbsp;${singer.birthday }</p>
    </c:forEach>
  </body>

运行结果如下:


http://www.niftyadmin.cn/n/1780726.html

相关文章

wget: unable to resolve host address的解决方法

2019独角兽企业重金招聘Python工程师标准>>> wget&#xff1a;无法解析主机地址。这就能看出是DNS解析的问题。 解决办法&#xff1a; 登入root&#xff08;VPS&#xff09;。进入/etc/resolv.conf。修改内容为下nameserver 8.8.8.8 #google域名服务器nameserver 8.…

《Java从入门到放弃》JSP入门篇:Serlvet入门

Servlet 是一个 Java程序&#xff0c;是在服务器上运行以处理客户端请求并做出响应的程序。 在web项目中创建Servlet的步骤如下&#xff1a; 1.在web项目src目录下的包上点右键&#xff0c;选择new->Servlet。 2. 编写Servlet类名&#xff0c;确定对应的方法&#xff1a; …

小心指针被delete两次

C类中&#xff0c;有时候使用到传值调用&#xff08;对象实体做参数&#xff09;&#xff0c;遇到这种情况&#xff0c;可要小心了&#xff01;特别是当你所传值的对象生命周期较长&#xff0c;而非临时对象&#xff08;生命周期段&#xff09;的时候。来看看下面的情况&#x…

一次一密加密、解密算法

1. 一次一密加密、解密算法 一次一密密码系统的一个重要特性是密钥K为一个真随机序列&#xff0c;且密钥只使用一次。 下面通过计算机的伪随机函数产生的随机序列作为密钥来简单演示一次一密的加密解密算法&#xff0c;代码示例如下&#xff1a; /*** 一次一密加密、解密算法* …

C++ 多线程编程解决CPU占用率高问题

在用C进行多线程编程的时候&#xff0c;时常需要写一些类似于死循环的结构来执行代码&#xff0c;这些死循环如果没有经过处理一直开着&#xff0c;那么CPU的占用率就会居高不下的做着很多无用的操做。为解决这个问题我们可以通过在各线程中的适当位置添加Sleep函数来休眠该线程…

《Java从入门到放弃》JSP入门篇:Servlet过滤器和监听器

先看看生活中的某过滤器&#xff0c;该过滤器对空气经过逐层过滤处理后&#xff0c;让空气净化&#xff0c;达到对身体无害的标准。 Servlet过滤器的功能也一样&#xff0c;对客户端发送的请求进行数据的过滤处理&#xff0c;然后将过滤后的请求转交给下一个资源。 Servlet过滤…

postgresql 9.3 升级至 9.4

2019独角兽企业重金招聘Python工程师标准>>> 前言: postgresql的升级方式有两种 一种是使用 pg_dumpall 备份后 导入至新版本即可。 另一种就是本文使用pg_upgrade方式升级 是从文件级别将 老的数据库文件 复制至新的版本中 注意: 升级前请备份重要数据 最好在测试…

关于工作量和技术积累的辩证关系

工作了几年之后&#xff0c;技术上的积累没有感觉有太大的提高&#xff0c;而工作量一直有增无减&#xff0c;整体埋头苦干却一直不知道如何提高自己&#xff0c;心里总是想着等干完这段时间就有空了。打算从今天开始关注前沿技术&#xff0c;每天抽空关注技术论坛&#xff0c;…