任务如下图
JSP-20190911
src
com\jstl\pojo
Admin.java
package com.jstl.pojo;
public class Admin {
private Integer aid;
private String aname;
private String password;
public Admin() {
super();
}
public Admin(String aname, String password) {
super();
this.aname = aname;
this.password = password;
}
public Admin(Integer aid, String aname, String password) {
super();
this.aid = aid;
this.aname = aname;
this.password = password;
}
public Integer getAid() {
return aid;
}
public void setAid(Integer aid) {
this.aid = aid;
}
public String getAname() {
return aname;
}
public void setAname(String aname) {
this.aname = aname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
WebContent
demo
demo1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
EL表达式中的算术运算符
+ 一定是求和运算,自动将运算数转换成数值类型后进行求和.如果不能进行类型转换就会报错.
% mod 求余运算
/ 求商运算,对结果保留小数.
El表达式中的空值运算符
empty 检查运算数是否为null或者为"". 条件满足是返回true否则返回false
-->
<% request.setAttribute("key", 100); %>
${1+2} ${key+200} ${"100"+200} <hr/>
${12%3} ${12 mod 3} ${10/3}<hr/>
${12 == 12} ${true && true } ${true or false} ${not true}
${1<2 && key==100}<hr/>
${empty key} ${empty param.name}<hr/>
${12345E-2}
</body>
</html>
demo2.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="com.jstl.pojo.Admin"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
JSTL 由JSP语言提供方,提供一组用于JSP页面的标签库
作用: 以标签的形式控制页面内容的显示和数据的处理(提高JSP页面的可读性及可维护性).
JSTL
1.核心标签库
通用标签
out 输出value属性计算的结果到页面显示,当value结果为null或者""时.输出default属性的内容到页面
value="输出的内容"
default="默认值"
escapeXml="true/false" 当为false时解析输出内容中的实体.
set
1.在指定的作用域中创建键值对
var="键名称"
value="值内容"
scope="作用域" page,request,session,application
2.对指定的对象属性进行赋值
target="${对象}" 被修改的对象
property="属性名" 要修改的属性,该属性在类中必须提供规范的set方法.
value="修改的值"
remove 从指定作用域范围中删除对应的键值对
var="键名称"
scope="作用域范围"
注意: 当没有提供scope属性是,会将所有作用域范围中对应的键值对都删除掉.
迭代标签
foreach 用户循环操作,一般用来迭代数组或者集合中的元素.
1.迭代集合或者数组内容
items="${集合或者数组}" 被迭代的容器
var="临时变量名" 从容器中提取出内容临时存放变量.
2.迭代集合并控制提取的范围
bgein="起始下标"
end="结束下标"
step="自增张值"
3.获取提取元素在容器中的状态
varStatus="status"
${status.first} true/false 是否为容器中的第一个元素
${status.last} true/false 是否为容器中的最后一个元素
${status.index} 数值 在容器中的下标(从0开始)
${status.count} 数值 在容器中的位置(从1开始)
条件标签
2.国际化标签库
3.方法标签库
使用JSTL标签库的步骤:
1. 在项目中导入JSTL库的.jar文件
2. 在需要使用JSTL标签的JSP文件中.使用taglib指令导入对应标签库.
3. 在页面上通过 <前缀:标签名/>进行使用
-->
<c:out value="${param.name }" escapeXml="false">
<input type="text"/>
</c:out><hr/>
<c:set var="key" value="${param.name}" scope="request"/>
<c:out value="${key}"/>
<%
Admin admin=new Admin(1,"Tom","111");
Admin admin2=new Admin(1,"Jimmy","111");
request.setAttribute("admin", admin);
session.setAttribute("admin", admin2);
%>
<c:out value="${admin.aname}"/>
<c:set target="${admin}" property="aname" value="Mary"/>
<c:out value="${admin.aname}"/><hr/>
<c:out value="${admin.aname}"/>
<c:remove var="admin"/>
<c:out value="${admin.aname}" default="empty"/><hr/>
<%
ArrayList<Admin> list=new ArrayList<Admin>();
list.add(new Admin(1,"Tom1","111"));
list.add(new Admin(2,"Tom2","111"));
list.add(new Admin(3,"Tom3","111"));
list.add(new Admin(4,"Tom4","111"));
list.add(new Admin(5,"Tom5","111"));
list.add(new Admin(1,"Tom6","111"));
list.add(new Admin(2,"Tom7","111"));
list.add(new Admin(3,"Tom8","111"));
list.add(new Admin(4,"Tom9","111"));
list.add(new Admin(5,"Tom10","111"));
request.setAttribute("list", list);
%>
<c:forEach items="${list}" var="t">
${t.aname}
</c:forEach><hr/>
<c:forEach items="${list}" var="t" begin="0" end="7" step="3">
${t.aname}
</c:forEach><hr/>
<c:forEach items="${list}" var="t" varStatus="status">
${t.aname}<br/>
是否为第一个元素${status.first}<br/>
是否为最后一个元素${status.last}<br/>
下标为:${status.index}<br/>
位置为:${status.count}<br/>
<hr/>
</c:forEach>
</body>
</html>
WEB-INF
lib
jstl.jar和standard.jar