- 指令:在页面转换时执行,是向容器提供的关于JSP页面的总体信息
- page指令:通知容器关于JSP页面的总体特性,如页面输出的内容类型和使用的字符集等,格式如:<%@ page contentType="text/html;charset = gb2312" %>
- include指令:告诉容器把另一个文件(HTML、JSP等)的内容包含到当前页面中,格式如:<%@ include file="copyright.html" %>
- taglib指令:指定在JSP页面中使用标准标签或自定义标签的前缀与标签库的URI。格式如:<%@ taglib prefix="test" uri="taglib.tld" %>
- JSP 中9大内置对象:request,response,session,application,out,pageContext,config,page,exception
- JSP 中有四大作用域对象:pageContext,request,session,application
- JSP页面生命周期的三个方法:
- public void jspInit()
- public void _jspService(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
- public void jspDestroy()
- pageContext变量
pageContext是javax.servlet.jsp.PageContext类型的隐含变量,对应于页面上下文对象。它有下面三个作用:
- 存储隐含对象的引用。 session、application、config与out这些隐含变量是调用pageContext对象的相应方法得到的。
- 提供了在不同作用域内获取或设置属性的方便的方法。
- 提供了forward()方法和include()方法实现将请求转发到另一个资源和将一个资源的输出包含到当前页面中的功能
public void include(String relativeURL)
public void forward(String relativeURL)
例如,从Servlet中将请求转发到另一个资源,我们需要写下面两行:
RequestDispatcher view = request.getRequestDispatcher("other.jsp");
view.forward(request, response);
在JSP页面中,通过使用pageContext变量仅需一行就可以完成上述功能:
pageContext.forward("other.jsp");
- config变量
config是javax.servlet.ServletConfig类型的隐含变量。也可以为JSP页面传递一组初始化参数
<servlet>
<servlet-name>InitTestServlet</servlet-name>
<jsp-file>/initTest.jsp</jsp-file>
<init-param>
<param-name>email</param-name>
<param-value>smith@yahoo.com.cn</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>InitTestServlet</servlet-name>
<url-pattern>/InitTest</url-pattern>
</servlet-mapping >
<html> <body>
Servlet Name = <%=config.getServletName()%><br>
Email Address = <%=config.getInitParameter("email")%>
</body> </html>
- JSP页面的生命周期包括哪几个阶段?
- 理解作用域对象
- 应用作用域
- 会话作用域
- 请求作用域
- 页面作用域
对应的Servlet类 | JSP对象 | 作用范围 |
ServletContext | application | 整个web应用程序 |
HttpSession | session | 一个用户会话范围 |
ServletRequest | request | 请求和请求转发 |
PageContext | pageContext | 当前页面转换单元 |
转换阶段---->编译阶段---->初始化阶段(创建实例)---->执行阶段---->销毁阶段
- JSP语法元素有哪些?使用时应注意什么问题?
JSP页面元素 | 简要说明 | 标签语法 | |
脚本元素 | 声明 | 声明变量与定义方法 | <%!Java声明%> |
小脚本 | 执行业务逻辑的Java代码 | <%Java代码%> | |
表达式 | 用于在JSP页面输出表达式的值 | <%=表达式%> | |
指令 | 页面转换时向容器发出的指令 | <%@指令%> | |
动作 | 向容器提供请求时的指令 | <jsp: 动作名/> | |
EL表达式 | JSP 2.0 引进的表达式语言 | ${applicationScope.email} | |
注释 | 用于文档注释 | <%--任何文本--%> | |
模板文本 | 静态HTML标签和文本 | 同HTML规则 |
使用时的注意事项:
- 表达式不能以分号结束,非法的:<%=count;%>
- 百分号和等号之间不能有空格<%=count%>
- 使用指令时,大小写不能混用,属性值要用引号括起来,等号与值之间不能有空格
- JSP指令和动作有哪些?有什么区别?
- JSP指令:page指令,include指令,taglib指令
- JSP动作:include动作(<jsp:include>包含标签),useBean动作,getProperty动作,setProperty动作,param动作(<jsp:param>参数标签),forward动作(<jsp:forward>转发标签),plugin动作
| JSP指令 | JSP动作 |
语法格式 | <%@include file=“ ”%> | <jsp:include page=“ ”> |
发生作用时间 | 页面转换时 | 请求期间 |
包含内容 | 文件的实际内容(源代码) | 页面输出(结果) |
转换成Servlet | 主页面和包含页面转换为一个servlet | 主页面和包含页面分别转换为独立的servlet |
编译时间 | 较慢,资源必须被解析 | 较快 |
执行时间 | 稍快 | 较慢,每次资源必须被解析 |
使用方式 | 页面内容不经常变化 | 页面经常变化时 |
- page指令有哪些常用的属性,这些属性的功能是什么?
属性 | 作用 |
language=“ScriptLanguage” | 指定JSP Container用什么语言来编译,目前只支持Java语言。默认为Java |
extends=“className” | 定义此JSP网页产生的Servlet是继承哪个 |
import=“importList” | 定义此JSP网页要使用哪些Java API |
session=“true|false” | 决定此页面是否使用session对象。默认为true |
buffer=“none|size in kb” | 决定输出流(Input Stream)是否有缓冲区。默认为8kb |
autoFlush=“true|false” | 决定输出流的缓冲区慢了后是否需要自动清除,缓冲区慢了后会产生异常错误(Exception)。默认为true |
isThreadSafe=“true|false” | 是否支持线程。默认为true |
errorPage=“url” | 如果此页面发生异常,网页会重新指向一个url |
isErrorPage=“true|false” | 表示此网页是否为错误页面。默认为false |
contentType=“text/html:charset=gb2312” | 表示MIME类型和JSP的编码方式 |
pageEncoding=“ISO-8859-1” | 编码方式 |
isELIgnored=“true|false” | 表示是否支持JSP页面中EL表达式。true则忽略,反之false则支持。默认为false |
- JSP标准动作:
- <jsp:include page="copyright.jsp"/>
- <jsp:forward page="other.jsp"/>
- <jsp:useBean id="xx" class="xx">
- <jsp:setProperty name=" " property=" " value=" "/>
- <jsp:getProperty name=" " property=" " />
- <jsp:plugin id=" " name=" " class=" "/>