JSP
概念:
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 异常对象
- request
- response
- out :字符输出流对象 , 可以将数据输出到页面上 , 和response.getWriter().write()类似
- 但是 response.getWriter().write() 不管定义在哪 , 都会先于out输出
- 在Tomcat服务器真正给客户端做出响应之后 , 会先找response缓冲区数据 , 再找out缓冲区数据 , 所以 , response.getWriter().write() 永远会比out输出的早
- pageContext
- session
- application
- page
- config
- exception (只有在声明了isErrorPage 为true的时候才能使用 )