你懂的!EL 表达式与 JSTL 标签库
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
<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 对象用于和数据库的字段做映射,即 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 表达式的全称为 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 标签的使用,关于其它标签可以参考菜鸟教程【传送门】
标签功能: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" %>
评论