1、JSP (Java server pages)
1.1 JSP和Servlet的关系
JSP的本质就是Servlet,JSP经过编译之后就是一个Servlet,只不过JSP主要是用于页面的展示,也就是MVC结构的视图层
1.2 JSP的生命周期
JSP-->翻译成java源代码-->编译成class文件-->类加载-->实例化-->_jspInit()方法-->_jspService()(每次请求都执行,进行数据的处理)-->_jspDestroy()(最后执行一次)-->类卸载
1.3 脚本
小脚本: <% %>中间的代码,在翻译成Java代码时,中间的代码在_jspService()中原样显示
表达式:<%= %> 中间的代码可以将一段Java代码转换成数据在页面上显示,JSP翻译成Java代码后,_jspService()中变成out.print(),括号中时<%= %>中间的代码
声明:<%! %> 中间的代码翻译成Java代码后直接在类里面,可以定义新的方法或者属性,不推荐使用
1.4 指示符,指令
page: page指令可以写在JSP任意位置,但一般是写在JSP页面最前面
language:脚本语言,默认Java,可以省略,改成其他语言不能编译 <% page language="java"%>
import:导入Java中的包
isELIgnored:默认false 是否忽略el表达式
errorPage:设置处理异常时间的JSP文件
isErrorPage:默认false 如果为true则会多一个内置对象exception
contentType:设置响应的MIME类型和响应编码
pageEncoding:设置响应的编码,如果pageEncoding和contentType都有设置,则使用contentType的设置
taglib:定义一个标签库以及自定义其标签的前缀
prefix:设置标签前缀
uri:定义标签的URI
include:静态包含,直接将包含的代码跟本身JSP代码合并之后再编译
1.5 动作
jsp:include 包含,跟静态包含的区别在于代码本身不合并,是执行完包含的代码之后把结果带到本身的代码中来
jsp:forward 转发
jsp:param 用于传递包含跟转发的数据
1.6 内置对象
pageContext 可以取得任何范围的参数
request 主要用于接收通过HTTP协议传输到服务器的数据
session 保存用户信息,跟踪用户操作
application 将信息保存在服务器中,直到服务器关闭
response 主要用于将jsp容器处理过的数据传回客户端
config 获得服务器的配置信息
out 输出
page 代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针
exception 只在页面指令为isErrorPage时出现,用于处理错误信息
1.7 注释
// Java注释 在JSP的<% %>中的Java代码中可以使用,JSP翻译成Java代码的时候还存在,编译的时候忽略
<!-- -->html注释 一直存在,注释中间的代码照样执行,只不过不会显示,而且在页面的源代码中也存在,会占用一部分资源
<%-- --%> jsp注释 JSP翻译成Java代码的时候直接忽略
1.8 错误处理
1)在web-xml文件中配置
<error-page>
<error-code>
500
</error-code>
<location>error.jsp</location>
</error-page>
<error-page>
<error-code>
404
</error-code>
<location>notfound.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>error.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>error
.jsp</location>
</error-page>
2)在JSP的errorPage中加入错误页
<%@ page errorPage="error.jsp"> 然后在error页面加上isError="true"
原文:https://www.cnblogs.com/kfw5264/p/JSP.html