一、概述
JSP 全名是 Java Server Page,它是建立在 Servlet 规范之上的动态网页开发技术。 在 JSP 文件中,HTML 代码与 Java 代码共同存在,其中,HTML 代码用来实现网页中静态内 容的显示,Java 代码用来实现网页中动态内容的显示。为了与普通 HTML 有所区别 JSP 文件 的扩展名为.jsp 。
二、JSP基本语法
JSP 界面可以按照编写 HTML 的方式来编写其中可以包含 HTML 文件的所有静态内容,在 静态的 HTML 内容之中可以嵌套 JSP 的其它各种元素来产生动态内容和执行业务逻辑,JSP 页面中的静态 HTML 内容被称为 JSP 模板元素,JSP 模板元素定义了网页的基本骨架,即定 义了页面的结构和外观。
JSP表达式
<!--这个表达式是用来输出的 -->
<%= new Date().toLocaleString()%>
效果:在网页上打印当前时间
JSP脚本片段
1.简单的脚本片段
<!--在脚本里写Java代码-->
<%
//int a=10/0;/* 故意出错 */
int x=10;
out.print(new Date().toLocaleString());
%>
2.分开写:分开写,单个脚本中的语句可以是不完整的,但是多个脚本片段组合后的结果必须是完整的Java 语句
<%
for(int i=0;i<10;i++){
%>
<h1>yyy</h1><br>
<%
}
%>
JSP声明
<!--用来声明变量,方法,声明的是全局变量 -->
<%!String name; %>
<!--在这里声明的变量是局部变量-->
<%int a=9;%>
JSP注释
<%--这是注释内容--%>1.需要注意的是:JSP 页面中格式为<%-- 注释信息 --%> 内容不会发布到客户端
三、JSP指令
包括page、include、taglib 三种指令
1.page指令
格式:<%@ page 属性名 1= "属性值 1" 属性名 2= "属性值 2" ...%>
常见属性:
2.include 指令
需要在 JSP 页面静态包含一个文件,例如 HTML 文件、文本文件等,这时,可以通 过 include 指令来实现
格式:<%@ include file="被包含的文件地址"%>
四、JSP隐式对象
一共有九个隐式对象
名称 类型 描述
out javax.servlet.jsp.JspWriter 用于页面输出
request javax.servlet.http.HttpServletRe quest 得到用户请求信息
response javax.servlet.http.HttpServletRe sponse 服务器向客户端的回应信息
config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数
session javax.servlet.http.HttpSession 用来保存用户的信息
application javax.servlet.ServletContext 所有用户的共享信息
page java.lang.Object 指当前页面转换后的 Servlet 类的实例
pageContext javax.servlet.jsp.PageContext JSP 的页面容器
exception java.lang.Throwable 表示 JSP 页面所发生的异常,在错误页中 才起作用
五个比较重要的,四个域对象范围从大到小是application>session>request>pageContext
PageContext常量名 描述 作用域名称 域对象类型
PageScope 当前页面中有效 pageContext PageContext
RequestScope 一次请求范围 request HttpServletRequest
Sessionscope 一次会话范围 session HttpSession
Applicationscope 应用范围 application ServletContext
1.pageContext对象
在 JSP 中,想要获取 JSP 隐式对象,可以使用 pageContext 对象,pageContext 对象时 Javax.servlet.jsp.PageContext 类的实例对象,它代表当前 JSP 页面的运行环境,并提供了一些 列用于获取其他隐式对象的方法。
示例:使用 pageContext 获取 request 对象
pageContext操作属性
pageContext 对象的作用范围有 4 个值
pageContext.PAGE_SCOPE:表示页面范围
pageContext.REQUEST_SCOPE:表示请求范围
pageContext.SESSION_SCOPE:表示会话范围
pageContext.APPLICATION_SCOPE:表示 Web 应用程序范围
五、jsp标签
1. <jsp:include>标签
作用:为了把其他资源的输出内容插入到当前 JSP 页面的输出内容中
示例:
注意:include 指令和<jsp:include>标签的区别
1. < isp:include>标签中要引入的资源和当前 JSP 页面是两个彼此独立的执行实体,即被动 态引入的资源必须能够被 Web 容器独立执行。而 include 指令只能引入遵循 JSP 格式 的文件,被引入文件与当前 JSP 文件需要共同合并才能翻译成一个 Servlet 源文件
2.<jsp:include>标签中引入的资源是在运行时才包含的,而且只包含运行结果。而 include 指令引入的资源是在编译时期包含的,包含的是源代码
3.<jsp:include>标签运行原理与 RequestDispatcher.include()方法类似,即被包含的页面不 能改变响应状态码或者设置响应头,而 include 指令没有这方面的限制。
2.<jsp:forward>标签
作用:将请求转发给另一个资源
示例:
这是index.jsp
welcome.jsp
效果: