JSP 结构
网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面。容器负责截获对JSP页面的请求。本教程使用内嵌JSP容器的Apache来支持JSP开发。
JSP容器与Web服务器协同合作,为JSP的正常运行提供必要的运行环境和其他服务,并且能够正确识别专属于JSP网页的特殊元素。
下图显示了JSP容器和JSP文件在Web应用中所处的位置。
JSP处理
以下步骤表明了Web服务器是如何使用JSP来创建网页的:
- 就像其他普通的网页一样,您的浏览器发送一个HTTP请求给服务器。
- Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
- JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
- JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。
- Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
- Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
- 最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。
基础
- JSP中用<% %>包裹起来的Java代码会被添加到Servlet中的service方法中。所以用<% %>包裹起来的Java代码中不能声明带有访问控制符的变量和方法。
- JSP中用<%! %>包裹起来的Java代码不会被添加到service方法中。所以可以被用来声明成员变量和方法以及静态代码块。
- JSP中用<%= %>包裹起来的Java代码称之为表达式代码块,其表达式的结果会被显示到网页上。
JSP内置对象
名字 | 类型 |
---|---|
out | JspWriter |
request | HttpServletRequest |
response | HttpServletResponse |
session | HttpSession |
pageContext | PageContext |
application | ServletContext |
config | ServletConfig |
page | Object(this) |
exception | Throwable |
JSP四大域
名字 | |
---|---|
pageContext | 只在当前页面生存,一旦当前页面关闭他也就死了 |
request | 只在本次请求中生存,可以进行页面的跳转,但一旦刷新他就死了 |
session | 只在本次会话中生存,可以进行页面的刷新,但是一旦关闭浏览器他就死了 |
application | 只在本次活动中生存,只要服务器不关闭,他就不会死,一旦服务器关闭了或者重启他就死了 |
它们都有这样的两个方法:
-
setAttribute(“属性名”,“属性值”);
-
getAttribute(“属性名”);—>返回 属性值
JSP指令
Page指令
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。
Page指令的语法格式:
<%@ page attribute="value" %>
等价的XML格式:
<jsp:directive.page attribute="value" />
属性
下表列出与Page指令相关的属性:
扫描二维码关注公众号,回复:
4614203 查看本文章
属性 | 描述 |
---|---|
buffer | 指定out对象使用缓冲区的大小 |
autoFlush | 控制out对象的 缓存区 |
contentType | 指定当前JSP页面的MIME类型和字符编码 |
errorPage | 指定当JSP页面发生异常时需要转向的错误处理页面 |
isErrorPage | 指定当前页面是否可以作为另一个JSP页面的错误处理页面 |
extends | 指定servlet从哪一个类继承 |
import | 导入要使用的Java类 |
info | 定义JSP页面的描述信息 |
isThreadSafe | 指定对JSP页面的访问是否为线程安全 |
language | 定义JSP页面所用的脚本语言,默认是Java |
session | 指定JSP页面是否使用session |
isELIgnored | 指定是否执行EL表达式 |
isScriptingEnabled | 确定脚本元素能否被使用 |
JSP动作
语法 | 描述 |
---|---|
jsp:include | 在页面被请求的时候引入一个文件。 |
jsp:forward | 把请求转到一个新的页面。 |