1.JSP原理
Java server Pages:Java服务器端页面。一个特殊的页面,既可以定义html标签,又可以定义Java代码
原理:JSP本质上是一个Servlet,例如index.jsp,服务器启动后,浏览器访问index.jsp,在CATALINA_BASE目录下生成work目录,其中可以找到对应的index_jsp.class和index_jsp.java文件。
其中,对应的类为index_jsp,继承了org.apache.jasper.runtime.HttpJspBase,在tomcat源码中HttpJspBase继承了HttpServlet。
index_jsp.java文件中该类的_jspService方法中将index.jsp文件中的html标签输出到浏览器。
2.JSP脚本
jsp定义Java代码的地方
定义方式
- <% 代码 %>:定义的Java代码,在_jspService方法中。 _jspService可以定义什么,该脚本就可以定义什么
- <%! 代码 %>:定义的Java代码,在jsp转换后的Java类中的成员位置,比如变量,静态代码块
- <%= 代码 %>:定义的Java代码,会输出到页面上
1 | <body> |
3.JSP指令
指令作用:用于配置JSP页面,导入资源文件
格式:
<%@ 指令名 属性名1=属性值1 属性名2=属性值2 %>
指令分类
page:配饰JSP页面
content-type:等于response.setContentType()。
设置响应体的mime类型以及字符集
设置当前jsp页面文件的编码(高级IDE可使用,如果是低级工具,则需要设置pageEncoding属性)
import:导包
errorPage:当前页面发生异常后,会自动跳转到指定的错误页面。比如在index.jsp中发生异常,那么指定errorPage=”500.jsp”,在500.jsp文件中输出服务器正忙信息。
isErrorPage:标识当前是否为错误页面。
true:是错误页面,可以使用内置对象exception,获取异常信息并输出到日志文件中
false:不是错误页面,默认值。
include:导入页面的资源文件
<%@include file=”top.jsp”%>
taglib:导入资源
先导入jstl的jar包
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core" %>
4.JSP内置对象
- 在JSP页面中不需要获取和创建,可以直接使用的对象。
例如:在_jspService方法的参数中有request和response,那么在jsp中就可以直接使用,在 _jspService方法中定义了out对象,那么在jsp中也可以使用。
1 | <% |
jsp有九个内置对象:request、response、out、pageContext、session、application、page、config、exception
out:字符输出流对象,将数据输出到页面上。
out.write()和response.getWriter()的区别
在tomcat服务器真正给客户端做出相应之前,会先找response缓冲区数据,在找out缓冲区数据。response.getWriter()数据输出永远在out.write()之前
作用