JSP
1 JSP概述
.1 什么是JSP
JSP(Java Server Pages)是JavaWeb服务器端的 动态资源 。它与html页面的作用是相同的, 显示数据和获取数据 。
1.2 JSP的组成
JSP = html + Java脚本(代码片段) + JSP动态标签
2 JSP语法
2.1 JSP脚本
JSP脚本就是Java代码片段,它分为三种:
<%...%>:Java语句;
<%=…%>:Java表达式;
<%!...%>:Java定义类成员;
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<!DOCTYPE HTML>
<html>
<head>
<title>JSP演示</title>
</head>
<body>
<h1>JSP演示</h1>
<%
// Java语句
String s1 = "hello jsp";
// 不会输出到客户端,而是在服务器端的控制台打印
System.out.println(s1);
%>
<!-- 输出到客户端浏览器上 -->
输出变量:<%=s1 %><br/>
输出int类型常量:<%=100 %><br/>
输出String类型常量:<%="你好" %><br/> <br/>
</body>
</html>
2.2 内置对象out
out对象在JSP页面中无需创建就可以使用,它的作用是用来向客户端输出。
<body>
<h1>out.jsp</h1>
<%
//向客户端输出
out.print("你好!");
%>
</body>
其中
<%=…%>
与out.print()功能是相同的!它们都是向客户端输出,例如:
<%=s1%>
等同于<% out.print(s1); %>
<%=”hello”%>
等同于<% out.print(“hello”); %>
,也等同于直接在页面中写hello一样。
2.3 多个<%...%>可以通用
在一个JSP中多个<%...%>是相通的。例如:
<body>
<h1>out.jsp</h1>
<%
String s = "hello";
%>
<%
out.print(s);
%>
</body>
循环打印表格:
<body>
<h1>表格</h1>
<table border="1" width="50%">
<tr>
<th>序号</th>
<th>用户名</th>
<th>密码</th>
</tr>
<%
for(int i = 0; i < 10; i++) {
%>
<tr>
<td><%=i+1 %></td>
<td>user<%=i %></td>
<td><%=100 + 1 %></td>
</tr>
<%
}
%>
</table>
</body>
3 JSP九大内置对象
在JSP中无需创建就可以使用的9个对象,它们是:
-
out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
-
config(ServletConfig):对应“真身”中的ServletConfig;
-
page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象;
-
pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
-
exception(Throwable):只有在错误页面中可以使用这个对象;
-
request(HttpServletRequest):即HttpServletRequest类的对象;
-
response(HttpServletResponse):即HttpServletResponse类的对象;
-
application(ServletContext):即ServletContext类的对象;
-
session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用session。
在这9个对象中有很多是极少会被使用的,例如:config、page、exception基本不会使用。
4 EL表达式(EL expression)
语法: ${expression} expression:作用域.对象名[.方法名] (方法名去掉get/set,)
el 隐式作用域: pageScope,requestScope,sessionScope,applicationScope
. 如果指定了存储的作用域则直接: ${xxxScope.keyName}
. 也可以不指定作用域访问则按以下顺序从作用域中查找,顺序如下
pageScope --> requestScope --> sessionScope --> applicationScope
el 请求参数:
. param: 获取请求参数值(String) [request.getParameter("名字");]
param.名字
. paramValues:获取请求参数数组(String[])[request.getParameterValues();]
el 请求头
. header: ${header['User-Agent']} 等同 getHeader("User-Agent")
el 运算符(请参见书p183)
4、JSTL(javaserver page standard tag library) jsp标准标签库
tag指令:<%@ taglib uri="Oracle Java Technologies | Oracle" prefix="c"%>
jsp指令:
. page指令
. include指令: <%@ include file="relativeURL" %>
. taglib指令
JSTL的使用
(1)导包: jstl.jar , standard.jar
(2)在指定的jsp页面中通过<%@ taglib %>导入对应的库
(3)使用
. <c:set /> , <c:out /> <c:remove />
. <c:forEach /> , <c:if /> , <c:choose> <c:when></c:when><c:otherwise></c:otherwise></c:choose>