<% %>中可以插入 Java 代码。

JSP页面指令:

  • page
  • include
  • taglib

指令提供了一种特殊的方法,可以在页面转换时向容器提出特殊的指示,例如:

<%@ page import="com.*,java.util.*" %>表示引入相关的jar包

Java 代码放在<% %>之间,而指令会为元素开始记号再添加一个 @。<%@ %>

JSP中的4种语法:

  1. scriptlet:<% %>
  2. 声明 :<%! %> → 这个声明内的东西会被放到类中,即全局变量,亦可以创造一个方法在这之中。
  3. 指令 :<%@ %>(参见上面)

JSP中含有隐藏的变量,这些变量在Servlet中都有相应的对应值

Servlet:            JSP:
JspWriter           out
HttpServletRequest  request
HttpServletResponse response
HttpSession         session
ServletContext      application
ServletConfig       config
JspException        exception
PageContext         pageContext
Object              page

当对 JSP页 面进行请求的时候才会生成或更新 JSP 对应的Servlet类并且把其编译成.class文件。

EL(Expression Language):表达式语言,用来替代scriptlet。

  • EL:${person.name} 等价于 ${person[“name”]}
  • EL表示:对象.属性;K.V;param.name;header.host;pageContext.request.method;cookie.name.value;
  • EL函数:貌似不常用…

两种导入文件到JSP内的方式:

  1. include指令:<%@ include file="**.jsp"%>
  2. JSP标准动作:&lt;jsp:include page="**.jsp" /&gt;

JSTL:JSP Standard Tag Library,核心库标签13个,包括

  • 表达式标签: out set remove catch
  • 流程控制标签: if choose when otherwise
  • 循环控制: forEach forTokens
  • URL操作标签: import url redirect

ClassicTag,传统标记

  • 指令标记库:taglib 的定制文件的后缀名为 .tld
  • 调用方法:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

SimpleTag,简单标记

  • 标记文件:后缀名为 .tag
  • 调用方法:<%@ taglib prefix="mYtagd" tagdir="/WEB-INF/tags" %>

WEB-INF 文件夹下的任何内容都无法被外界直接访问,即 WEB-INF 是受保护的。

出错页面:<%@ page errorPage=”ErrorPage.jsp” %>

错误显示页面(ErrorPage.jsp):<%@ page isErrorPage=”true” %>

Action(动作):运行期间的命令

  jsp:useBean jsp:setProperty,jsp:getProperty
  jsp:include jsp:param
  jsp:forward jsp:param
  jsp:plugin

两种页面跳转方式:

  1. response.sendRedirect
    使用的是不同的request,第一个访问的页面命令客户端再重行对指定的新的页面发起一次新的请求;
  2. jsp:forward
    使用的是同一个request,是在服务器端进行的跳转,跳转前和跳转后所使用的是同一个request,即客户端只发起了一次请求。

4种JSP页面的数据:

  1. page:对应的是一个页面;
  2. request:对应的是一次请求;
  3. session:对应的是一个会话(Session和浏览器窗口是一一对应的);
  4. application:对应的是整个webapp。

页面跳转的方式:

  1. JSP 跳转到 Servlet:<jsp:forward page="xxx" />或者sendRedirect
  2. Servlet 跳转到 JSP:
    getServletConfig().getServletContext().getRequestDispatcher("a.jsp").forward(request, response);