一、JSP的基本执行过程:
- 把 hello.jsp转译为hello_jsp.java
- hello_jsp.java 位于d:\tomcat\work\Catalina\localhost_\org\apache\jsp
- hello_jsp.java是一个servlet
- 把hello_jsp.java 编译为hello_jsp.class
- 执行hello_jsp,生成html
- 通过http协议把html 响应返回给浏览器
我们说某个类是一个Servlet,不是因为它的类名里有一个"Servlet",而是因为它继承了 HttpServlet。打开转译hello.jsp 后得到的hello_jsp.java,可以发现它继承了类:
org.apache.jasper.runtime.HttpJspBase
而HttpJspBase 继承了HttpServlet,所以我们说hello_.jsp.java 是一个Servlet。
二、JSP页面基本元素
jsp由这些页面元素组成:
- 静态内容
就是html,css,javascript等内容 - 指令
以<%@开始 %> 结尾,比如<%@page import=“java.util.*”%> - 表达式 <%=%>
用于输出一段html - Scriptlet
在<%%> 之间,可以写任何java 代码 - 声明
在<%!%> 之间可以声明字段或者方法。但是不建议这么做。 - 动作
<jsp:include page=“Filename” > 在jsp页面中包含另一个页面。在包含的章节有详细的讲解 - 注释 <%-- – %>
不同于 html的注释 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了
三、JSP的四个作用域
JSP有4个作用域,分别是
pageContext 当前页面
requestContext 一次请求
sessionContext 当前会话
applicationContext 全局,所有用户共享
四、JSP的九种隐式对象
JSP的隐式对象指的是不需要显示定义,直接就可以使用的对象。JSP一共有9个隐式对象,分别是:
request,response,out
pageContext, session,application
page,config,exception
。
request 代表请求 请参考 request常见方法
response 代表响应 请参考 response 用法
out 代表 输出
pageContext 代表当前页面作用域
session 代表当会话作用域
application 代表当全局作用域
page 对象即表示当前对象,JSP 会被编译为一个Servlet类 ,运行的时候是一个Servlet实例。 page即代表this
config可以获取一些在web.xml中初始化的参数。
exception 对象只有当前页面的<%@page 指令设置为isErrorPage="true"的时候才可以使用
五、JSTL JSP Standard Tag Library 标准标签库
JSTL允许开人员可以像使用HTML标签 那样在JSP中开发Java功能。
JSTL库有core, i18n, fmt, sql 等等。
六、EL表达式
为了保证EL表达式能够正常使用,需要在<%@page 标签里加上isELIgnored=“false”。
EL表达式可以从pageContext,request,session,application四个作用域中取到值,如果4个作用域都有name属性,则EL会按照从高到低的优先级顺序获取
pageContext>request>session>application