一. JSP(Java Server Page)概述
1. 定义
JSP(Java Server Page)将动态代码嵌入到静态的HTML中,从而产生动态的输出。
JSP运行于服务器端,能够对客户端展现内容、变化网页文档以及处理用户提交的表单数据
宏观来说:JSP就是在HTML中嵌套java代码
2. JSP是一个动态网页
静态和动态的区别:
1. 不用和是否有动感混为一谈
2. 是否随着时间、地点、用户操作的改变而改变
动态网页需要使用到 服务端脚本语言(JSP)
3. 注意事项
jsp页面是由JSP容器执行该页面的Java代码部分,然后实时生成的HTML页面,因此说他是服务器端的动态页面,
在客户端源代码中是看不到Java代码的
一般而言,修改了web.xml、配置文件、java需要重启tomcat服务
但是如果修改了jsp\html\css\js,不需要重启
二. JSP页面元素
1. 注释
(1). HTML注释
1. 定义
能够发送给客户端,可以在源代码文件中显示其内容
2. 语法
<!-- 注释内容 -->
(2). JSP注释
1. 定义
不会再客户端的源代码文件中显示其内容,仅提供给程序员阅读
注释内容不会被编译,不会被执行,这些内容不会发到客户端
2. 语法
<% -- 注释内容 -- %>
(3). Java注释
//注释内容
/* 注释内容 */
2. 指令
(1). 定义
JSP指令告诉JSP引擎对JSP页面如何编译,不包括控制逻辑,不会产生任何可见的输出
(2). 语法
<%@ 指令类型 属性1="属性值1"...属性n="属性值n" %>
(3). 分类
指令 | 内容 |
---|---|
<%@ page … %> | 定义网页依赖属性,比如脚本语言、error页面、缓存需求等 |
<%@ include … %> | 包含其他文件 |
<%@ taglib … %> | 引入标签库的定义 |
(4). page指令
用来设定页面的属性和相关功能,用户可以利用其进行导入需要的类,指明JSP输出的内容的类型,指定处理异常的错误页面等操作
与Page指令相关的属性:
属性 | 描述 |
---|---|
buffer | 指定out对象使用缓冲区的大小 |
autoFlush | 控制out对象的 缓存区 |
contentType | 指定当前JSP页面的MIME类型和字符编码 |
errorPage | 指定当JSP页面发生异常时需要转向的错误处理页面 |
isErrorPage | 指定当前页面是否可以作为另一个JSP页面的错误处理页面 |
extends | 指定servlet从哪一个类继承 |
import | 导入要使用的Java类 |
info | 定义JSP页面的描述信息 |
isThreadSafe | 指定对JSP页面的访问是否为线程安全 |
language | 定义JSP页面所用的脚本语言,默认是Java |
session | 指定JSP页面是否使用session |
isELIgnored | 指定是否执行EL表达式 |
isScriptingEnabled | 确定脚本元素能否被使用 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
作用:设置当前页面的参数,指导tomcat编译当前文件的类型。通常page指令的参数不需要我们手动设置。
page指令常用参数:
language="java" 支持的语言
contentType="text/html; charset=UTF-8" 内容类型
pageEncoding="UTF-8" 页面的编码格式
import="java.util.List,java.util.ArrayList" 导入对象:导入某个类对象
autoFlush="true" 自动刷新
errorPage="03-error.jsp" 如果当前页面抛异常 跳转指定页面
session="true" 当前页面中可以直接使用该对象
isELIgnored="false" 是否忽略EL表达式
1. 导入包
编程用到JDK的其他类,需要导入
语法:
<% @page import= "包名.类名|包名.*|包名.类名1,包名.类名2"%>
2. 设定字符集
pageEncoding:jsp文件自身编码 jsp——>java
3. 设定错误页面
errorPage属性的作用:指定一个页面,当JSP程序出现未被捕获的异常时跳转到这个指定的页面
跳转到的页面需要使用isErrorPage属性指明处理其他页面的错误信息
4. 设定MIME类型和字符编码
contentType:浏览器解析jsp的编码
(5). include指令
include指令:将其他页面的内容包含到当前页面来一起执行编译。
使用场景:通常使用一些公共代码的时候可以使用。比如:网页头部、底部代码、重复性的代码。
语法: <%@ include file="time.jsp"%>
参数说明:file表示当前页面包含的页面路径名称。
代码示例:
<%@page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<p>
<a href="#">百度一下</a>
<a href="#">淘宝首页</a>
</p>
<%--页面包含指令:file表示包含的页面--%>
<%@include file="time.jsp"%>
</body>
</html>
1. 定义
使用include指令可以在jsp程序中插入多个外部文件,这些文件可以是JSP、HTML或者Java程序,甚至是文本
在编译时,include指令把相应的文件包含进主文件
2. 语法
<% @ include file= "文件名"%>
3. 注意
由于include指令在编译的时候就将相应的文件包含进来,等价于代码的复制,所以在调用文件和包含文件出现相同变量,会报错
(6). taglib指令
<%@taglib prefix="" uri="" %>
这个指令主要是用来引入JSTL标签库的指令的。
3. HTML
HTML界面元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HTML</title>
</head>
<body>
</body>
</html>
4. Java [脚本(Scriptlet)]
(1). JSP程序段
1. 定义
JSP程序段就是插入到JSP程序的Java代码段,在网页的任何地方都可以插入JSP程序,在程序段中可以插入任何数量的Java代码
2. 语法
<%
局部变量、java语句
%>
3. 举例
<%
String name = "张三";
out.print("Hello"+name);
%>
注:JSP程序段中不能定义函数
(2). JSP声明
1. 定义
JSP声明可以定义网页中的全局变量,这些变量在JSP页面中的任何地方都能使用,
在实际应用中,方法、页面全局变量甚至类的声明都可以放在JSP声明部分
2. 语法
<%!
全局变量、定义方法
%>
3. 举例
<%!
public String bookName; //全局变量
public void init()
{
bookName = "javabook";
}
%>
注:在JSP声明中只能做定义,不能实现控制逻辑
(3). JSP表达式
1. 定义
JSP表达式用于定义JSP的一些输出
将里面的内容所运算的结果输出到客户端
2. 语法
<%=输出表达式(变量/返回值/表达式) %>
等价于
<%out.print(变量/返回值/表达式); %>
3. 举例
<%!
public String bookName; //全局变量
public void init()
{
bookName = "javabook";
}
%>
<%
String name = "张三";
out.print("Hello"+name);
init();
%>
<%="hello"+bookName %>
4. 注意
- JSP表达式中不能用;结束
- JSP表达式中不能出现多条语句
- JSP表达式中的内容一定是字符串类型,或者通过toString()函数转换成字符串的形式
三. URL传值
1. 定义
URL通俗来说就是网址
例如:
http://localhost:8080/Hello_JSP/index.jsp:表示访问项目中index.jsp页面
2. URL传值方式
语法:
url?参数名1=参数值1&参数名2=参数值2&...
例如:
http://localhost:8080/Hello_JSP/index.jsp?m=3&n=5
表示访问这个页面,并给其传送参数m和n
3. 获取URL传送的值
<%
//获取参数m,赋值给str
String str=request.getParameter("m")
如果m没有传过来或者参数名写错,str为null
%>
4. 注意
- 传输的数据只能是字符串,对数据类型有限制
- 传输的数据在浏览器地址栏中可看到,不安全
四. JSP动作
1. 定义
JSP动作指的是使用XML语法格式的标记来控制服务器的行为
2. 语法
<jsp:动作名 属性1="属性值1"... 属性n="属性值n " />
或者
<jsp:动作名 属性1="属性值1" ... 属性n="属性值n">相关内容 </jsp:动作名>
3. 分类
JSP动作如下
-
jsp:include
表示当页面被请求的时候引入一个文件
-
jsp:forward
表示将请求转到另一个页面
-
jsp:useBean
表示获取JavaBean的一个实例
-
jsp:setProperty
表示设置JavaBean的属性
-
jsp:getProperty
表示获得JavaBean的属性
-
jsp:plugin
表示根据浏览器的类型为Java插件生成OBJECT或EMBED两种标记
4. 举例
(1). include动作
1. 作用
在页面请求的时候引入一个指定的文件
2. 语法
<jsp:include page="文件名" />
或者
<jsp:include page="文件名">相关标签</jsp:include>
3. include动作和include指令的区别
include动作:把文件中的输出结果包含进来,对被包含页面与本页面有相同变量的问题不会出现。
还会自动检查被包含文件的变化,可在每次客户端发出请求时重新把资源包含进来,进行实时更新
include指令:静态的,将语句嵌入到当前页面中,然后一起执行
(2). forword动作
1. 作用
实现跳转页面
2. 语法
<jsp:forward page=“文件名” />
page属性用于指定要跳转到的目标文件
3. 注意
当forward动作被执行后,当前页面将不再被执行,而是去了执行指定目标页面