Java Server Pages : java服务器端页面
可以理解为 : 一个特殊的页面 , 其中既可以直接指定定义 html 标签 , 又可以定义java代码用于简化书写的 原理:
JSP本质上就是一个Servlet
指令:
作用 : 用于配置JSP页面 , 导入资源文件’
格式 : <%@ 指令名称 属性名1 = 属性值1 , 属性名2 = 属性值2… %>
例如 :
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
分类 :
(1) page : 配置jsp页面的
contentType : 等同于 response.setContentType ()
设置响应体的mime类型 以及字符集设置当前jsp页面的编码 (高级开发工具才能实现的功能 , 如果使用低级的开发工具 , 则需要设置pageEncoding 这个属性 才能设置当前页面的字符集编码)
language : 设置语言的类型 , 最开始jsp野心很大准备支持所有的编程语言 , 但是到目前为止 , 只支持java这一门语言
<%@ page language ="java" %>
buffer : (默认值是8kb) 缓冲区的大小 , 将来页面输出使用out就是一个输出流 , 有一个缓冲区 , 这个值就是设置这个缓冲区的大小的 ,
<%@ page buffer="16kb" %>
import : 在页面写java代码的时候 , 需要导对应的包 , 一般写法就是一个包写一行
<%@ page import="java.util.ArrayList" %>
errorPage : 当前页面发生异常后 , 会自动跳转错误页面 (不让用户看到具体的错误信息 , 给用户的提示页面 替换了服务器发出的错误页面 )
<%@ page errorPage="error.jsp" %>
isErrorPage : 标识当前页面是否是错误页面 (默认是false)
<%@ page isErrorPage ="true" %>
设置这个的目的是可以使用一个内置对象 : exception.getMessage()
String exception = exception.getMessage(); 这个方法可以获取错误的内容 , 将来是打印到日志文件中的(2) include : 页面包含的 , 导入页面的资源文件
可以将多个页面的重复部分 , 放在一个单独的页面中 , 在其他页面使用的时候 , 使用 include 即可将这个页面 包含在当前页面中 , 达到复用的效果
<%@include file="index.jsp"%>(3) taglib : 导入资源
导入标签库 :
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix 定义前缀 : 自定义的 , 想定义什么定义什么uri : 指定标签库的位置 (4) 注释 :
① html注释 :
只能去注释html代码片段 (使用这种注释包裹的内容会被发送到浏览器页面源码中)
② JSP特有的注释
<%-- --%> 可以注释所有 (使用这种注释 , 不会将内容发送到浏览器页面源码上)
JSP脚本: (就是定义代码的格式)
JSP定义java代码的方式 :
(1) <% (java代码) %> : 定义的java代码 , 在jsp转换之后的java类的service方法中 , service方法中可以定义什么 , 该脚本就可以定义什么
(2) <%! (java代码) %> : 定义的是成员 (变量和方法) 在jsp转换之后的java类的成员位置 (一般不要这样定义 , 会造成线程安全问题)
(3) <%= (java代码) %> : 定义的java代码 , 会输出到页面上 , 输出语句中定义的什么 , 这里就可以定义什么
注意:
jsp可以将java代码进行截断 : 这样在输出的时候 , 就不用写输出语句了 , 直接就可以写文字 , 然后将数据包裹在<%= %> 中即可
<% %>
欢迎回来 , 您上次访问的时间是: <%=value%>
<% %>
JSP的内置对象:
在jsp这个页面中 , 不需要获取和创建 , 就可以直接使用的对象
jsp中一共有9个内置对象
变量名 真实类型 pageContext : PageContext 当前页面内共享数据 还可以获取其他八个对象 request : HttpServletRequest 一次请求访问的多个资源 (转发) session : HttpSession 一次会话的的多个请求间 application : ServletContext 所有用户间共享数据 (服务器开启被创建 , 服务器关闭销毁) //上边四个是域对象 // response : HttpServletResponse 响应对象 page : Object 当前页面(Servlet)的对象 this out : JspWriter 输出对象 , 可以将数据输出到页面上 config : ServletConfig Servlet的配置对象 exception : Throwable 异常对象
requestresponseout :字符输出流对象 , 可以将数据输出到页面上 , 和response.getWriter().write()类似
但是 response.getWriter().write() 不管定义在哪 , 都会先于out输出在Tomcat服务器真正给客户端做出响应之后 , 会先找response缓冲区数据 , 再找out缓冲区数据 , 所以 , response.getWriter().write() 永远会比out输出的早 pageContextsessionapplicationpageconfigexception (只有在声明了isErrorPage 为true的时候才能使用 )



