用于配置jsp页面,导入资源文件
<%@ 指令名称 属性名1=属性值 属性名2 = 属性值2 ... %> //属性之间使用空格隔开
配置jsp页面的
contentType: 等同于response.setContentType( )
1.设置响应体的mime类型以及字符集
2.设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
import:导包
errorpage:当前页面发生异常后,会自动跳转到指定的错误页面
一个栗子:
index.jsp
<%@ page contentType="text/html;charset=UTF-8" errorPage="error.jsp" language="java" %>
<%@include file="include.jsp"%>
Title
主体信息
<%
int i = 3/0;
%>
error.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
服务器正忙...
解释:因为index.jsp页面存在语法错误(3/0)除数不能为0
所以页面跳转到error.jsp页面
iserrorpage:标识 当前页面是否是错误页面
true:是,可以使用内置对象exception
false:否,默认值,不可以使用内置对象exception
页面包含的,导入页面的资源文件
形如:
<%@include file = "top.jsp" %>
一个栗子:
include.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
这是top标题
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@include file="include.jsp"%>
Title
主体信息
导入资源
形如:
<%@taglib prefix = "c" uri = "http:,,," %>
prefix:前缀,自定义的
//只能注释html代码片段
<%-- 注释内容--%> //可以注释所有
在jsp页面中不需要创建,直接使用的对象
一共有9个
1.早期只有servlet,只能使用response输出标签数据,非常麻烦
2.后来有jsp,简化了servlet的开发,如果过度使用jsp,在jsp中写大量的Java代码,又写html,造成难以维护,难以分工协作
3.再后来,Javaweb的开发,借鉴MVC开发模式,使得程序的设计更加合理性
模型 --javabean
功能:完成具体的业务操作 如:查询数据库,封装对象
视图 --jsp
功能:展示数据
控制器 --servlet
功能:获取用户的输入
调用模型
将数据交给视图进行展示
Expression language 表达式语言
替换和简化jsp页面中java代码的编写
${表达式}
jsp默认支持el表达式,如果要忽略el表达式
. 1.设置jsp中page指令中:
isElignored = "true"
即可忽略当前jsp页面中所有el表达式
- 写el表达式之前加斜杠 \
\${表达式}
运算符
1.el表达式只能从域对象中获取值
2.语法:
1.${域名称.键名} //从指定域中获取指定键的值
2.${键名} //表示依次从最小的域中查找是否有该间对应的值,知道查到为止
3.获取对象、list集合、map集合的值
(1)对象:
${域名称.键名.属性名} //本质上会去调用对象的getter方法
(2)list集合:
${域名称.键名[索引]}
(3)map集合:
${域名称.键名.key名称}
或 ${域名称.键名["key名称"]}
一个栗子:
<%@ page import="com.igeek.domain.Person" %>
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: 冰冰
Date: 2019/11/12
Time: 23:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" errorPage="error.jsp" language="java" %>
<%@include file="include.jsp"%>
Title
<%
Person one = new Person();
one.setName("张三");
one.setAge(32);
one.setBirthday(new Date());
one.setSex('男');
request.setAttribute("one1",one);
%>
${one1.name}
el表达式有11个隐式对象
pageContext:
获取其他8个内置对象
${pageContext.request.contextPath} //动态获取虚拟目录
javaserver Page Tag Libary - - jsp标准标签库
用于简化和替换jsp页面上的代码
1.导入jstl相关jar包
2.引入标签库:taglib指令
<%@ taglib %>
3.使用标签
相当于Java代码的if语句
格式
内容...
一个栗子
页面效果
将test值改为false时,页面效果为
test必须属性,接收Boolean表达式
如果表达式为true,则显示if标签内容,如果为false,则不显示标签内容
一般情况下,test属性值会结合EL表达式一起使用
第二个栗子,结合EL表达式:
jstl.jsp
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: 冰冰
Date: 2019/11/15
Time: 10:49
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Title
<%--
这是一条消息
这是第二条消息--%>
<%
List list = new ArrayList();
list.add("hello");
request.setAttribute("list",list);
%>
这是一个集合...
c:if标签没有else情况,想要else情况,则可以再定义一个c:if标签
第三个栗子
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: 冰冰
Date: 2019/11/15
Time: 10:49
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Title
<%--
这是一条消息
这是第二条消息--%>
<%--<%
List list = new ArrayList();
list.add("hello");
request.setAttribute("list",list);
%>
这是一个集合...
--%>
<%--判断奇偶性--%>
<%
request.setAttribute("i",34);
%>
${i}为奇数
${i}为偶数
相当于Java代码的switch语句
1.使用choose标签声明 相当于switch声明
2.使用when标签声明 相当于case
3.使用otherwise标签做其他情况的声明 相当于default
一个栗子(判断星期几)
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: 冰冰
Date: 2019/11/15
Time: 10:49
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Title
<%--
这是一条消息
这是第二条消息--%>
<%--<%
List list = new ArrayList();
list.add("hello");
request.setAttribute("list",list);
%>
这是一个集合...
--%>
<%--判断奇偶性--%>
<%--<%
request.setAttribute("i",34);
%>
${i}为奇数
${i}为偶数
--%>
<%
request.setAttribute("date",5);
%>
星期一
星期二
星期三
星期四
星期五
星期六
星期日
输入有误
相当于Java代码的for语句
1、完成重复的操作
属性:
begin:开始值
end:结束值
var:临时变量
step:步长
varstaus:循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
一个栗子:
${i}
页面效果:
2、遍历容器
List list;
for(User user:list){
}
属性:
items:容器对象
var:容器中元素的临时变量
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list",list);
%>
${s.index}${s.count}${str}