JSP概念
JSP:java serve page java服务器端页面
一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码
JSP原理
- 服务器解析请求消息,寻找指定资源,未找到则返回404
- 如果找到,会将jsp文件转换为.java文件
- 编译java文件为class字节码文件
- 由字节码文件提供访问(只有servlet才可以被外界访问到),那么JSP本质上就是一个servlet
JSP脚本
JSP脚本:JSP定义java代码的方式
- <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么
- <%! 代码 %>:定义的java代码,在jsp转换后的java类中。可以定义成员变量和成员方法
- <%= 代码 %>:定义的java代码,会输出到页面上。例如:
<%= a %>
可以将变量a的值输出的到页面
JSP的内置对象
内置对象:在JSP页面中不需要获取和创建,可以直接拿来使用
因为JSP文件是要转化为.java文件的,java文件中已经提前创建了这些内置对象,因此在jsp中直接拿来用即可
9个内置对象
- request
- response
- out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似
response.getWriter()和out.write()的区别:在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。因此response.getWriter()数据输出永远在out.write()之前,建议使用out
变量名 真实类型 作用
* pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
* request HttpServletRequest 一次请求访问的多个资源(转发)
* session HttpSession 一次会话的多个请求间
* application ServletContext 所有用户间共享数据
* response HttpServletResponse 响应对象
* page Object 当前页面(Servlet)的对象 this
* out JspWriter 输出对象,数据输出到页面上
* config ServletConfig Servlet的配置对象
* exception Throwable 异常对象(只有在错误页面中isErrorPage=true才能使用)
JSP指令
作用
用于配置JSP页面,导入资源文件
格式
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
分类
1. page
配置jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
属性
contentType
- 设置响应体的mime类型以及字符集(等同于response.setContentType())
- 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符
import
导入java包
errorPage
当前页面发生异常后,会自动跳转到errorPage的值所指定的错误页面
isErrorPage
标识当前页面是否是错误页面
true:是。可以使用内置对象exception
false:否。默认值。不可以使用内置对象exception
2. include
多个页面的相同部分可以抽取成为一个jsp文件,通过include可以导入这个文件
<%@include file="top.jsp"%>
3. taglib
导入一些资源(例如JSTL标签库)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix:前缀,自定义的
JSP注释
- html注释
<!-- -->
:只能注释html代码片段 - jsp注释(推荐使用)
<%-- --%>
:可以注释所有