JSP的全称是:Java Server Pages(Java服务器页面)。
(1)作用:使程序员专注于页面的编写;可以被tomcat翻译成对应的可执行的Java文件。
(2)构成:是一种动态页面模板技术;主体内容可以是html代码;也可以在主体中随处插入Java代码;提供了九大内置对象方便程序员使用,其中有四个对象可以作为四大作用域使用;
(3)执行流程
1、浏览器发送请求,访问jsp页面;
2、应用服务器接收请求,jspServlet会帮助我们查找对应的jsp文件;
3、应用服务器将.jsp文件翻译成.Java文件;
4、jvm会将Java文件编译成class文件;
5、应用服务器运行class文件,生成动态的html页面;
6、应用服务器将动态生成的页面发送给浏览器;
7、浏览器接收html页面,解析展示。
(4)JSP的指令
作用:用来声明JSP页面的一些属性和动作;
格式:<%@指令名称 属性="值" 属性="值" %>
常见的指令:
1、page:声明JSP页面的属性
language | 声明jsp页面使用的嵌套语言 |
contentType | 设置响应流的类型和编码格式 |
pageEncoding | jsp页面的编码格式 |
import | 导包 |
session | 设置jsp页面的是否可以用session内置对象 |
isErrorPage | 设置是否是错误页面 |
isELIgnored | 设置是否忽略EL表达式 |
2、include:静态包含
格式:<%@include file="相对路径或者内部路径"%>
作用:将其他页面的内容包含进来,一起进行编译和运行
3、taglib:导入标签库
格式:<%@taglib prefix=“前缀名" uri="命名空间"%>
作用:引入标签库到本页面,本页面中可以使用 前缀名:标签...
(5)jsp脚本
<%..%> | 编写Java代码,作为页面的脚本 |
<%=...%> | 输出表达式,简化out.writer() |
<%!. ..%> | 全局声明,只能用于声明变量,会在所有脚本执行之前执行,可在页面任意位置 |
(6)jsp注释
html注释 | <!-- --> |
Java注释 | // /**/ |
jsp注释 | <%-- --%> |
(7)jsp的九大内置对象
对象名 | 内置对象 | 数据类型 |
输出对象 | out | Jspwriter |
请求对象 | request | HttpservletRequest |
响应对象 | reponse | HttpservletReponse |
应用对象 | application | servletContext |
页面上下文 | pageContext | Pagecontext |
会话对象 | session | HttpSession |
异常对象 | exception | Throwable |
配置对象 | confige | servletconfig |
页面对象 | page | servlet(this) |
out输出对象:向页面输出内容,类似servlet中的输出流对象writer
request请求对象:
1.设置请求编码格式
2.封装请求数据
3.获取请求数据
4.通过转发实现页面的跳转,可实现请求数据的共享
response响应对象:
1.通过Cookie绑定数据,然后通过response响应给客户端并保存,客户端可以
通过request获取Cookie;Cookie是服务端产生的,发送给服务端保存,相当于
本地的缓存,提高访问效率,但是安全性较低;Cookie可以以键值对得形式保
存数据,Cookie可以设置最大有效时间
2.设置响应格式
3.通过重定向实现页面的跳转
(8)jsp四大作用域
application | 作用域是整个项目,项目重启或者关闭,数据丢失。如果项目不关闭,有用户访问访问该项目的所有页面均可以访问application中的数据 |
session | 作用域是一次会话,关闭浏览器书据丢失,如果会话不中断本次会话访问的所有页面均可以获取session中的数据 |
request | 作用域是一次请求,发送另一次请求时,数据无法共享 |
pageContext | 作用域是本页面,不同的页面无法共享数据 |
(9)转发和重定向
-
1、.转发是request对象的方法,重定向是response对象的方法。
转发:request.getRequestDispatcher("目标页面路径").forward(request,response);
重定向: response.sendRedirect("目标页面路径");
-
2、转发url地址不改变,重定向url地址改变;
-
3、转发是服务器行为,重定向是客户端行为;
-
4、转发是一次请求,重定向是两次请求;
-
5、转发只能是内部网址,重定向可以是外部网址;
-
6、转发请求数据不会丢失,重定向请求数据会丢失。
(10)jsp的动作标签
转发动作标签:<jsp:forward page="目标页面路径"> < /jsp:forward>
(11)动态包含和静态包含的区别
动态包含:<jsp:include page ="目标页面路径"></jsp:include>
1、两个jsp页面会独立翻译成Java文件然后编译执行;
2、在运行时,将目标页面的视图显示到本页面中来;
3、动态包含不会真实的引入代码,而是引入视图。
静态包含:<%@include file="相对路径或者内部路径"%>
1、将目标页面的代码全部引入本页面;
2、然后只翻译本页面为Java文件,最后编译执行;
3、静态包含会真实的引入代码。