首页 > SpringMVC学习手册(三)------EL和JSTL(上)

SpringMVC学习手册(三)------EL和JSTL(上)

1.含义 

EL:       Expression Language , 表达式语言
JSTL:   Java Server Pages Standard Tag Library, JSP标准标签库 

2.测试项目构建

2.1 复制JSTL的标准实现

复制Tomcat中webappsexamplesWEB-INFlib下的两个jar包到新建项目目录的WEB-INFlib下

 2.2 在JSP文件中使用taglib标记定义前缀与uri引用

使用Core标签库:
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
使用Function标签库:
<%@ taglib prefix="fn"  uri="http://java.sun.com/jsp/jstl/functions" %> 
然后就可以在自己的JSP页面进行编写测试了

3.EL 学习 

3.1 JSP页面的EL控制开关

EL表达式类似于JSP表达式<%=表达式%>,可以通过JSP页面的page指令的isELIgnore属性指明JSP页面是否支持EL表达式.
false:支持
true:不支持
JSP页面默认isELIgnore为false,也就是说一般用Eclipse建立的JSP页面可以直接使用EL表达式 

3.2 基本语法的使用:

基本形式:
${EL 隐含对象.关键字对象.属性} 

(1)"[]"与"."获取值

一般我们需要获取的值有三种形式:
  • JavaBean 中的值
  • 数组中的值
  • 集合中的值
下面我们通过一个JSP页面来测试这三种获取值的形式:
<%@page import="
java.util.*,
model.*
"%>
<%@ page language="java" contentType="text/html;  charset=UTF-8"pageEncoding="UTF-8"%>
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>Insert title heretitle>
head>
<body><%        //对象参数Student s= new Student("Tom",19);pageContext.setAttribute("ps", s);//数组参数int numList[]={ 1,2,3,4,5};pageContext.setAttribute("pnumList",numList);//List集合参数ArrayList<Integer> sList = new  ArrayList<Integer>();sList.add(1);sList.add(2);sList.add(3);pageContext.setAttribute("psList",sList);//Map集合参数Map<String,String> m =new HashMap<>();m.put("Tom", "19");m.put("Tina","20");pageContext.setAttribute("pm", m);%><div>1.取值操作<p>(1)获取student对象属性(个人觉得使用"."的形式获取更方便):p><ul><li>${ps.name}li><li>${ps.age}li><li>${ps["name"]}li><li>${ps["age"]}li>             ul><p>(2)获取数组中的值:p><ul><li>${pnumList[0]}li><li>${pnumList[1]}li><li>${pnumList[2]}li><li>${pnumList[3]}li>ul>     <p>(3)获取List集合对象中的值:p><ul><li>${psList[0]}li><li>${psList[1]}li><li>${psList[2]}li>ul>         <p>(4)获取Map集合对象中的值,如果键为数值,只能使用"[]"形式获取其中的值p><ul><li><span>Tom`s age:span>${pm.Tom}li><li><span>Tina`s  age:span>${pm["Tina"]}li>ul>     div> body>
html>

 

(2)运算符

算数运算符:
符号示例结果
+${1+1}2
-${1-1}0
*${1*1}1
/ 或div ${1 /1} 1
% 或 mod${10 %3 } 1
关系运算符:
符号:== 或 eq!= 或 ne< 或 lt> 或 gt<= 或 le>= 或 ge
逻辑运算符:
符号
&& 或 and
|| 或 or
! not
条件运算符:
符号(三目运算符)
?:
empty运算符:
用于检测一个值是否为null,例如变量A不存在,则${empty A} 返回的结果为True 

3.3 EL隐含对象

  • pageScope
  • requestScope
  • sessionScope
  • applicationScope
其分别对应了JSP的隐含对象:
  • pageContext
  • request
  • session
  • application 
注意如果一个EL表达式没有指定查找对象,其会依次从page,request,session,application中的范围中查找
  • 找到:直接返回,不再继续查出下去
  • 没找到:返回空字符串

3.4 EL与请求参数相关的隐含对象

主要用于JSP接受来自form的参数,相关对象为:param和paramValues,通过例子学习其 使用方法
input.jsp
<%@ page language="java" contentType="text/html;  charset=UTF-8"pageEncoding="UTF-8"%>
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>Insert title heretitle>
head>
<body><form method="post" action="param.jsp">名字:<input type="text" name="userName"/ ><input type="checkbox" name="habit" value="读书"/>读书<input type="checkbox" name="habit" value="游戏"/>游戏<input type="checkbox" name="habit" value="跑步"/>跑步<input type="submit" value="提交"/>form>
body>
html>

 

param.jsp
<%@ page language="java" contentType="text/html;  charset=UTF-8"pageEncoding="UTF-8"%>
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>Insert title heretitle>
head>
<body>
<%request.setCharacterEncoding("UTF-8"); %>
${param.userName }
${paramValues.habit[0]}
${paramValues.habit[1]}
${paramValues.habit[2]}
body>
html>

  

附录:测试项目

源码下载:https://github.com/Taoey/cnblog-demos/releases/download/v1.0/JSTLTest.1.zip 

转载于:https://www.cnblogs.com/hwtblog/p/8386630.html

更多相关: