写点什么

你懂的!EL 表达式与 JSTL 标签库

作者:Java高工P7
  • 2021 年 11 月 11 日
  • 本文字数:2534 字

    阅读完需:约 8 分钟

this.name = name;


}


public String[] getPhones() {


return phones;


}


public void setPhones(String[] phones) {


this.phones = phones;


}


public List<String> getCities() {


return cities;


}


public void setCities(List<String> cities) {


this.cities = cities;


}


public Map<String, Object> getMap() {


return map;


}


public void setMap(Map<String, Object> map) {


this.map = map;


}


@Override


public String toString() {


return "Person{" +


"name=" + name +


", phones=" + Arrays.toString(phones) +


", cities=" + cities +


", map=" + map +


'}';


}


}


2)在 webapp 目录下新建 dao.jsp 文件,内容为:


<%@ page contentType="text/html; charset=UTF-8" isELIgnored="false" language="java" %>


<%@ page import="sharm.obj.People"%>


<%@ page import="java.util.List" %>


<%@ page import="java.util.ArrayList" %>


<%@ page import="java.util.Map" %>


<%@ page import="java.util.HashMap" %>


<%@ page import="sharm.obj.People" %>


<html>


<head>


<title>JavaBean</title>


</head>


<body>


<%


People person = new People();


person.setName("sharm");


person.setPhones(new String[]{"18610541354","18688886666","18699998888"});


List<String> cities = new ArrayList


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


<String>();


cities.add("北京");


cities.add("上海");


cities.add("杭州");


person.setCities(cities);


Map<String,Object>map = new HashMap<>();


map.put("key1","value1");


map.put("key2","value2");


map.put("key3","value3");


person.setMap(map);


pageContext.setAttribute("p", person);


%>


输出 Person:${ p }<br/>


输出 Person 的 name 属性:${p.name} <br>


输出 Person 的 pnones 数组属性值:${p.phones[2]} <br>


输出 Person 的 cities 集合中的元素值:${p.cities} <br>


输出 Person 的 List 集合中个别元素值:${p.cities[2]} <br>


输出 Person 的 Map 集合: ${p.map} <br>


输出 Person 的 Map 集合中某个 key 的值: ${p.map.key3} <br>


输出 Person 的 age 属性:${p.age} <br>


</body>


</html>


二 JavaBean


=============================================================================


JavaBean 对象用于和数据库的字段做映射,即 ORM(对象关系映射)。它的写法有特定的要求,为:


  • 必须要有一个无参构造

  • 属性必须私有化

  • 必须有对应的 get/set 方法


对应的映射关系为:


  • 表—>类

  • 字段–>属性

  • 行记录---->对象


实例:


people 表


| id | name | age | address |


| --- | --- | --- | --- |


| 1 | sharm1 | 3 | 杭州 |


| 2 | sharm2 | 18 | 金华 |


| 3 | sharm3 | 22 | 宁波 |


People 类


class People{


private int id;


private String name;


private int age;


private String address;


}


class A{


new People(1,"sharm1",3,"杭州");


new People(2,"sharm2",18,"金华");


new People(3,"sharm3",22,"宁波");


}


三 JSTL


=========================================================================


1 定义




JSTL 表达式的全称为 JSP Standard Tag Library ,即 JSP 标准标签库。如果说 EL 表达式主要是为了替换 jsp 中的表达式脚本,而 JSTL 则是为了替换 jsp 中的代码脚本。这会使得整个 jsp 页面变得更佳简洁。


JSTL 包括格式化标签、SQL 标签、核心标签等,其中核心标签是重点,其它标签差不多已经被淘汰了。


在 JSP 页面的头部使用 taglib 指令引入 JSTL,如:


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


其中 prefix='c’代表了标签的种类,各标签的前缀为:


| 功能范围 | URI | 前缀 |


| --- | --- | --- |


| 核心标签库 | http://java.sun.com/jsp/jstl/core | c |


| 格式化标签库 | http://java.sun.com/jsp/jstl/fmt | fmt |


| 函数标签库 | http://java.sun.com/jsp/jstl/functions | fn |


| 数据库标签库 | http://java.sun.com/jsp/jstl/sql | sql |


| XML 标签库 | http://java.sun.com/jsp/jstl/xml | x |


在 JSP 页面头部对应的 taglib 指令为:


| 标签库种类 | taglib 指令 |


| --- | --- |


| 核心标签库 | <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %> |


| 格式化标签库 | <%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %> |


| 函数标签库 | <%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %> |


| 数据库标签库 | <%@ taglib prefix=“sql” uri=“http://java.sun.com/jsp/jstl/sql” %> |


| XML 标签库 | <%@ taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” %> |


因为在实际工作中,对于 JSTL,不需要把每一个地方都记住,下面,我只介绍一下核心标签库中 if 标签的使用,关于其它标签可以参考菜鸟教程传送门


2 核心标签库中的 if 标签




标签功能:if 语句。


具体注释:见代码注释。


代码实例:


<%@ page contentType="text/html; charset=UTF-8" isELIgnored="false" language="java" %>


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


<html>


<head>


<title>if</title>


</head>


<body>


<h4>if 测试</h4>


<hr>


<form action="scope.jsp" method="get">


<%--


EL 表达式获取表单中的数据


${param.参数名}


--%>


<input type="text" name="username" value="${param.username}">


<input type="submit" value="登录">


</form>


<%--判断如果提交的用户名是管理员,则登录成功--%>


<%--test 是判断条件;var 用来接收返回值,true 或者 false;c:out 用于输出在网页上。--%>


<c:if test="${param.username=='sharm'}" var="isAdmin">


<c:out value="管理员欢迎您!"/>


</c:if>


<%--自闭合标签--%>


<c:out value="${isAdmin}"/>


</body>


</html>


四 遇到的问题


==========================================================================


1)EL 表达式在 JSP 页面中不起作用。 解决办法:因为在 Servlet2.4 之前,EL 表达式是默认关闭的,所以首先在 WEB-INF 文件夹的 web.xml 文件中查看 Servlet 的版本号,如果发现其版本是在 Servlet2.4 之前的话,那就需要在 JSP 页面开头的 page 标签中加入:isELIgnored=“false”。


如:


<%@ page contentType="text/html; charset=UTF-8" isELIgnored="false" language="java" %>

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
你懂的!EL表达式与JSTL标签库