一,JSP
1.JSP:它的英文全称 java server pages ,java服务端页面,它是建立在servlet规范基础上的动态网页开发技术
java 服务端 页面: 在jsp上可以写java代码,也可以写html标记,它运行在服务器端
jsp = java + html + jsp自身的一些东西
2.为什么会产生jsp技术?
因为在早期没有jsp时,需要servlet向页面写数据,比较麻烦,所以就产生了jsp技术
3.jsp最大的特点:可以非常简单的书写页面html
- JSP运行原理:
通过浏览器首次访问jsp时
JSP容器会生成对应的Servlet文件,也就是.java文件
JSP容器,会把java文件编译对应的class文件
JSP容器,会生成对应的servlet对象
通过生成的servlet对象,去处理浏览器发送的请求,响应数据给浏览器。
二,JSP基本语法
1. 在jsp页面书写java的三种形式:
可以声明语句和方法
可以书写java代码段
可以书写表达式
JSP Scriptlets:对应的位置生成在 _jspService方法内部
在jsp页面里可以书写java代码片段,基本语法:<% java代码片段 %>
JSP 声明语句:对应的位置生成在了成员位置。
在jsp里面可以书写变量和方法:基本语法:
<%!
定义变量或者方法
%>
JSP 表达式:对应的位置生成在 _jspService方法内部。
在jsp页面,可以输入一个结果,基本语法:<%=表达式 %>,其实就等同于out.print(); ,注意:表达式后面不能书写分号
2.JSP 指令:page指令、include指令、taglib指令(现在不讲)
page指令
page指令的用途是设置与jsp页面相关的信息,比如说设置jsp页面的编码,jsp页面的默认语言等
基本语法格式:<%@ page 属性=“属性值” 属性=“属性值” 属性=“属性值” %>
常用属性:
language: 默认语言java,也就是只有java一种语言。
pageEncoding:设置jsp的编码格式,一般情况下可以省略 contentType这个属性。
session属性:值得类型是boolean,如果对应的值是true,在jsp页面可以使用session对象,反之就不能使用。
import属性:导包,和在java里面使用一样,如果想使用某个类,前提导入某个类的包名。
include指令:
在jsp页面通常会需要显示其它页面的信息,所以可以通过这个include指令把其它页面包含过来。
基本语法:<%@ include file=“被包含文件的url” %>
创建两个jsp页面: date.jsp页面,include.jsp页面。
使用jsp的include指令实现的包含,又称为静态包含
1.静态包含的特点:
把多个页面的内容,合并输出,比如把date.jsp 和 include.jsp内容合并输出。
多个页面对应生成一个java文件,编译后,对应一个class文件。
三.JSP 隐式对象
1.隐式对象:在jsp页面里面,jsp提供了一些对象,不用咱们自己创建,可以直接使用的对象。
jsp常见的九大隐式对象:
request: HttpServletRequest,请求对象,它同时也是域对象,作用范围一次请求
response:HttpServletResponse,响应对象
session: HttpSession ,会话对象,它同时也是域对象,作用范围一次会话
application:ServletContext,上下文对象,它同时也是域对象,作用范围整个项目
config:ServletConfig,配置对象
out:JspWriter,其实和PrintWriter作用差不多。
page:Object ,代表当前jsp的页面对象
pageContext:PageContext ,jsp容器
exception:Throwable,异常对象,用来捕获异常信息。
只有当前jsp页面有isErrorPage="true"这个属性时,才能使用exception对象
2. out对象
out对象在输出内容到网页上面去,最终是通过reponse缓冲区给输出的。
3 pageContext对象
第一个功能:获取其它八个隐式对象
获取请求对象:getRequest();
获取响应对象:getResponse();
获取输出对象:getOut();
4.exception 对象
它是用来捕获异常信息的, 使用它通常会用到两个属性:
errorPage:属性对应的值,处理异常信息的页面,就是说在当前页面发生了异常,跳转到处理异常信息的页面
5.JSP 动作元素
jsp:include 动作元素:动态包含
动态包含:把其它资源页面的内容,合并到当前要包含的页面,最后一块输出。
基本语法格式:<jsp:include page=“被包含页面的url” flush=“true或者false”>jsp:include
动态包含特点:多个页面的内容合并输出,多个jsp页面生成多个java文件,编译成多个class文件
静态包含特点:多个页面的内容合并输出,多个jsp页面最终生成一个java文件,编译一个class文件。
6.阶段案例:传智书城JSP页面
实现首页面
${pageContext.request.contextPath}:作用就是获取项目名称的路径,比如:/chapter06
设计首页面步骤:
1.创建一个index.jsp页面,在这里实现跳转到首页面的效果
<jsp:forward page="" ></jsp:forward>
2.修改client目录下面的所有html文件,修改成jsp,为了就是jsp知识点。
3.把client目录下面的首页面分离出来几个jsp文件,分离的jsp文件比较通用性,在其它页面也能用到,
分离的目的:提高代码的复用性。
分离index.jsp页面:
第一部分:导航菜单,对应head.jsp
第二部分:搜索栏,对应menu_search.jsp
第三部分:底部信息,对应foot.jsp
在index.jsp页面引入分离的文件:<%@ include file="" %>