目录
1.JSP概述
1.1什么是JSP
JSP(Java Server Pages)是JavaWeb服务器端的动态资源 。它与html页面的作用是相同的,显示数据和获取数据 。
1.2JSP的组成
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>表格</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的原理
3.1JSP是特殊的Servlet
JSP是一种特殊的Servlet,当JSP页面首次被访问时,容器(Tomcat)会先把JSP编译成Servlet,然后再去执行Servlet。所以JSP其实就是一个Servlet!
3.2JSP注释
<%-- ... --%>中的内容在JSP编译成.java时会被忽略的,即JSP注释。 也可以在JSP页面中使用html注释:<!-- … -->
,但这个注释在JSP编译成的.java中是存在的,它不会被忽略,而且会被发送到客户端浏览器。
4.JSP指令
4.1JSP指令概述
JSP指令的格式:<%@指令名 attr1=”” attr2=”” %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的。
JSP中有三大指令:page、include、taglib,最为常用,也最为复杂的就是page指令了。
4.2page指令
page指令是最为常用的指定,也是属性最多的属性!
page指令没有必须属性,都是可选属性。例如:
<%@page %>,没有给出任何属性也是可以的!
在JSP页面中,任何指令都可以重复出现!
<%@ page language=”java”%>
<%@ page import=”java.util. ”%>
<%@ page pageEncoding=”utf-8”%>
4.3taglib指令
在JSP页面中使用第三方的标签库时,需要使用taglib指令来“导包”。例如:
<%@ taglib prefix="c" uri="Oracle Java Technologies | Oracle" %>
其中prefix表示标签的前缀,这个名称可以随便起。uri是由第三方标签库定义的.
5.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。
四大域: pageContext, request,session,application
响应对象: response
异常对象: exception
jsp配置: config
this: page
响应输出流: out
6.JSP动作标签
6.1JSP动作标签概述
动作标签的作用是用来简化Java脚本的!
JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用。
6.2 常用的JSP动作标签
6.2.1<jsp:include>
jsp:include标签的作用是用来包含其它JSP页面的!
include标签与include指令的区别:
include指令是在编译级别完成的包含,即把当前JSP和被包含的JSP合并成一个JSP,然后再编译成一个Servlet。
include动作标签是在运行级别完成的包含,即当前JSP和被包含的JSP都会各自生成Servlet,然后在执行当前JSP的Servlet时完成包含另一个JSP的Servlet。
6.2.2<jsp:forward>
forward标签的作用是请求转发!forward标签的作用与RequestDispatcher#forward()方法相同。
6.2.3<jsp:param>
还可以在<jsp:include>
和<jsp:forward>
标签中使用<jsp:param>
子标签,它是用来传递参数的。下面用<jsp:include>
来举例说明<jsp:param>
的使用。