JSP
JSP指令
1.用于配置jsp页面的和导入资源文件
2.格式:<%@ 指令名称 属性名=xxx ,%>
3.分类:
1. page 配置jsp页面的
1. contentType:设置相应的MIME类型和响应类型
2. language:语言类型
3. buffer :缓冲区 默认是8kb
4. import:导包
5. errorPage:错误页面:当前页面发生异常后会跳转到指定的错误页面
6.isErrorPage:是否是错误页面 true可是使用内置对象Exception 对象默认是false
2. include :页面包含的 导入页面的资源文件
1. 比如说页面的logo和导航栏任意一个jsp页面都是可以共用的 就可以使用include标签 包含
3. taglib:导入资源的
1. 用來导入标签库使用taglib引入
2.
Jsp注释
1. html注释:<!---->
2. 代码注释:<% -- --%>
Jsp内置对象 #(在jsp中不需要创建对象直接能够使用的对象)
1. pageContext
1. 真实类型:PageContext
2. 范围:当前页面共享数据
3. 他可以用来获取其他的八个内置对象
2. request
1. 一次请求访问的多个资源(转发)
3. session
1. 一次会话的多个请求之间共享数据
4. application
1. 真实对象:ServletContext
2. 所有的用户共享数据
5. response
1. HttpServletResponse
6. page
1. 当前的servlet对象 this
7. config
8. exception:(只有在isErrorPage为true的时候 才会有这个对象)
1. 1. 真实类型: Throwable
9. out
1. jspWriter
EL表达式 #(使用el表达式和jstl标签 替换jsp中的java代码 )
- 语法:${表达式}
- 运算符
- 使用el表达式获取域对象中的值(request application session pageContext)
- 语法:${域名城.键名}
- pageScope requestScope sessionScope applicationScope
- 用法:${requestScope.name}
- 用法:${键名} 依次从最小的域对象开始找到为止
- 8.
8. ` <h1>运算符号</h1>
${3>4}
<%--算数运算符号 比较运算符 逻辑预算符--%>
<%System.out.println("这是一个分割符号");%>
<% request.setAttribute("name","nihaoJava");
session.setAttribute("age",11);
pageContext.setAttribute("sex",0);
application.setAttribute("school","beijing");
%>
<h1> 使用el表达式</h1>
${sessionScope.age}</br>
${requestScope.name}</br>
${sex}</br>
${school}
`
EL表达式获取对象的值
`<%@ page contentType="text/html;charset=UTF-8" language="java" import="com.liangxin.domain.user" %>
<%@ page import="java.util.Date" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<% user user = new user();
user.setAge(13);
user.setName("javaEE");
user.setBirthday(new Date());
request.setAttribute("user", user);%>
<h1>使用El表达式读取对象的值</h1>
${requestScope.user}<br>
${requestScope.user.name}<br>
${requestScope.user.age}<br>
${user.birthday}<br>
${requestScoper.user.birth}<br>
</body>
</html>`
使用EL表达式获取集合中的值
----------
`<%@ page contentType="text/html;charset=UTF-8" language="java" import="com.liangxin.domain.user" %>
<%@ page import="java.util.Date" %>
<%@ page import="javax.management.ListenerNotFoundException" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List list= new ArrayList() ;
list.add("aaa");
list.add("bbb");
list.add(new user("java",13,new Date()));
request.setAttribute("list",list);
%>
<%
HashMap map = new HashMap();
map.put("sname","javase");
map.put("score",88);
map.put("suser",new user("python",66,new Date()));
request.setAttribute("map",map);
%>
<h1> 使用el表达式读取list集合中value</h1>
${requestScope.list[0]}<br>
${list[1]}<br>
${list[2].name}<br>
<h1>使用El表达式读取map集合中的value</h1>
${map.sname}<br>
${requestScope.map.suser.name}<br>
${requestScope.map.suser.birthday}<br>
</body>
</html>
`
El表达式中空运算符合隐式对象
`<h1>运算符empty</h1>
<% String str= "liang";
request.setAttribute("string",str);
%>
<%--empty运算符用来判断字符串,数组,集合是否是null并且长度是否大于零--%>
${empty str}`
el中的隐式对象十一个
- 获取其他的jsp中八个对象
- ${pageContext.request.contextPath}动态的获取虚拟路径的问题
JSTL #(JavaServer Page Tag Library)jsp标准标签库
- 常用的jstl的标签if choose foreach
- 2.
jstl中if标签的使用
1. `<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>jstlif标签的使用</title>
</head>
<body>
<% List list = new ArrayList();
list.add("java");
list.add("python");
request.setAttribute("list", list);
/*
* <c:if test="true">
test是必须的属性, 接受boolean类型的表达式 如果表达式为true 则会显示if标签体中的内容
这里面没有else标签
</c:if>
* */
%>
<c:if test="true">
<h1> 如果test中的条件成立 标签内容就会输出</h1>
</c:if>
<c:if test="${ not empty requestScope.list}">
<h1> request域对象中不为空我我就会输出</h1>
</c:if>
</body>
</html>`
1.jstl中choose标签的使用
`<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>jstl中choose标签的使用</title>
</head>
<body>
<%--完成数字编号 对应星期几的案例
使用choose去取出數字 相当一 switch
使用when标签做判断条件 相当于case
使用otherwise 做其他条件的判断 相当于default
--%>
<%
request.setAttribute("num", 3);
%>
<c:choose>
<c:when test="${requestScope.num==1}">星期一</c:when>
<c:when test="${requestScope.num==2}">星期二</c:when>
<c:when test="${requestScope.num==3}">星期三</c:when>
<c:when test="${requestScope.num==4}">星期四</c:when>
<c:when test="${requestScope.num==5}">星期五</c:when>
<c:when test="${requestScope.num==6}">星期六</c:when>
<c:when test="${requestScope.num==7}"> 星期日</c:when>
<c:otherwise>内容不符合要求</c:otherwise>
</c:choose>
</body>
</html>`
jstl中foreach标签的使用
`<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>jstl中for标签的使用 相当于for循环</title>
</head>
<body>
<%--使用for循环 1.完成重复的操作 2. 遍历容器--%>
<%-- 一下代码相当于 for(i=1; i<=10 ;i++){
System.out.pirintln(i);
}--%>
<%--varStatus 代表的是循环状态 item 相当于容器中临时变量--%>
<c:forEach begin="1" end="10" var="i" step="1">
${i} <br>
</c:forEach>
<%--遍历容器--%>
<hr>
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list",list);
%>
<%--一下代码相当于 foreach(String str : list){
System.out.println(str)}--%>
<c:forEach items="${list}" varStatus="s" var="str">
${s.index} ${s.count} ${str}<br>
</c:forEach>
</body>
</html>
demo练习 ### `
`<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.liangxin.domain.user" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>练习将request域对象中的list集合输出到页面的表格中使用jstl和el表达式完成</title>
</head>
<body>
<%--准备数据--%>
<% List list = new ArrayList();
list.add(new user("python", 111, new Date()));
list.add(new user("java", 122, new Date()));
list.add(new user("javaScript", 111, new Date()));
list.add(new user("C++", 4444, new Date()));
request.setAttribute("list", list);
%>
<table border="1px" align="center" width="500px">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>生日</th>
</tr>
<c:forEach items="${requestScope.list}" var="user" varStatus="s">
<tr>
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birthday}</td>
</tr>
</c:forEach>
</table>
>
</body>
</html>
`