什么是Java Server Pages?
JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
JSP九大内置对象:
request:用户端请求对象,此请求包含来之GET/POST请求的参数
reponse:响应对象
out:输出对象
session:会话对象、存储当前用户的信息
application:应用程序级对象,存放所用用户共享的信息
page:当前页面
config:配置对象
pageContext:页面上下文对象
exception:针对网页错误,异常对象
GET和POST的区别:
get提交:请求的数据会存储在url中,以?分割url和传输数据,多个参数使用&连接,传输的数据长度有限制,不安全
post提交:请求的数据防止在http的包体内,不会在url中体现,传输的数据大小没有限制,更安全
JSP页面组成:
1、脚本程序
脚本程序可以包含任意量的Java语句,只要它们在脚本语言中是有效的。
脚本程序的语法格式:<% 代码片段 %>
脚本的本质:就是将代码插入到Servlet的service方法中。
2、JSP声明
一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。
JSP声明的语法格式:<%! declaration; [ declaration; ]+ … %>
声明的本质:其实就是将声明的变量加入到Servlet类(在任何方法之外),方法就成了Servlet的方法。
3、JSP表达式
一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。
由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。
JSP表达式的语法格式:<%= 表达式 %>
4、JSP注释
JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。
<%– 注释 –%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译
HTML注释,通过浏览器查看网页源代码时可以看见注释内容
5、JSP指令
JSP指令用来设置与整个JSP页面相关的属性。
JSP指令语法格式:<%@ directive attribute=”value” %>
6、jsp动作
以“
<jsp:动作名”开始,以“</jsp:动作名>
<
j
s
p
:
动
作
名
”
开
始
,
以
“
<
/
j
s
p
:
动
作
名
>
<script type="math/tex" id="MathJax-Element-10">
</script> ” 结束
比如:
<jsp:includepage="Filename"/>
<
j
s
p
:
i
n
c
l
u
d
e
p
a
g
e
="
F
i
l
e
n
a
m
e
"
/
>
<script type="math/tex" id="MathJax-Element-11">
</script>
JSP指令
JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。指令可以有很多个属性,它们以键值对的形式存在,并用逗号隔开。
<%@ page … %>定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include … %>包含其他文件
<%@ taglib … %>引入标签库的定义
JSP中include指令和include动作的区别
1.include指令
include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。
语法:<%@ include file=”sample.jsp” %>
2.include动作
jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的 结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面, 将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页 面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。
语法:
<jsp:includepage="sample.jsp"flush="true"><jsp:paramname="name"value="value"/></jsp:include>
<
j
s
p
:
i
n
c
l
u
d
e
p
a
g
e
="
s
a
m
p
l
e
.
j
s
p
"
f
l
u
s
h
="
t
r
u
e
"><
j
s
p
:
p
a
r
a
m
n
a
m
e
="
n
a
m
e
"
v
a
l
u
e
="
v
a
l
u
e
"
/
><
/
j
s
p
:
i
n
c
l
u
d
e
>
<script type="math/tex" id="MathJax-Element-12">
</script>