百闻不如一见,百说不如一练,实践是不变的真理。
1、jsp基础
1.1、jsp的执行过程:
jsp文件 --> 翻译成Java文件 --> 编译成class字节码文件 --> 构造类对象 --> 调用方法 --> Tomcat的work目录下存放jsp运行时的临时文件
1.2、jsp语法
jsp表达式:<%=变量或表达式%> 向浏览器输出变量或表达式的结果
jsp脚本:<%java代码%> 执行Java代码 原理:翻译到_jspService()方法中
jsp声明:<%!变量或方法%> 声明jsp的成员变量或成员方法
jsp注释:<%!-- jsp注释 --%> 注释jsp代码,不会翻译到Java文件,也不会执行
1.3、jsp文件的编码问题
pageEncoding:告诉Tomcat服务器使用什么编码翻译jsp文件(jsp --> java)
contentType:Tomcat服务器发送给浏览器的数据编码(Tomcat服务器 --> 浏览器)
1.4、异常错误相关
errorPage:当前jsp页面的错误处理页面
isErrorPage:指定当前页面是否为错误处理页面;false不是,则不能使用exception内置对象,反之可以
全局处理页面
<!-- 全局错误处理页面配置 --> <error-page> <error-code>500</error-code> <location>/page/500.jsp</location> </error-page>
2、jsp的内置对象
request;response;config;application;session;exception;page;out;pageContext
2.1、out对象:out对象类型,JspWriter类,相当于带缓存的PrintWriter
JspWriter:向jsp缓冲区写出内容(1、缓冲区满了;2、刷新缓存区;3、关闭缓存区;4、执行完毕jsp页面)
PrintWriter:直接向浏览器写出内容
3、jsp中的四个域对象:保存和获取数据,用于数据共享
pageContext(page域);request;session;application(context域)
4、EL表达式(替换jsp表达式):向浏览器输出域对象中的变量值或表达式计算的结果 ${ }
输出基本数据类型变量:从四个域中获取:${name};指定域获取:${pageScope}
5、jsp标签(替换jsp脚本)
5.1、内置标签(动作标签):不需要在jsp页面导入标签
转发标签:<jsp:forward />
包含标签:<jsp:include /> 包含与被包含的页面先各自翻译成Java源文件,然后运行时在合并在一起
动态包含:<jsp:include page="被包含的页面" />;可以向被包含页面传递参数;先翻译在合并
静态包含:<%@include file="被包含的页面">;不能向被包含页面传递参数;先合并在翻译
6、JSTL标签:Java标准标签库
核心标签库:C标签库;
国际化标签:fmt标签库;
EL标签库:fn函数库;
7、自定义标签
7.1、编写一个普通的Java类,继承SimpleTagSupport类,叫标签处理器类,覆盖doTag方法;在WEB-INF目录下建立tld文件,叫做标签库的声明文件;在jsp页面的头部使用taglib导入自定义标签库;在jsp中使用自定义标签
7.2、自定义标签的生命周期
SimpleTag接口
SetJspContext(JspContext context) 传入PageContext对象
setParent(JspTag tag) 传入父标签类对象
setXXX(参数) 给属性赋值
setJspBody(JspFrament jspBody) 传入标签体内容
doTag() 执行标签