JSP 动作元素

jsp:include、jsp:forward、jsp:param、jsp:useBean 等标准动作。

Beginner
Key Points标准动作用 jsp: 前缀,在请求处理期执行;它们和指令的区别是「运行时」而非「编译时」。

七个常用动作

ActionPurpose
jsp:include运行期包含另一个页面
jsp:forward把请求转给另一个页面或 Servlet
jsp:param给 include / forward 的目标传参数
jsp:useBean查找或创建 JavaBean 实例
jsp:setProperty给 Bean 赋值,可自动绑定请求参数
jsp:getProperty输出 Bean 的属性值
jsp:plugin生成嵌入 Applet 的标签,已废弃

include 与 forward

JSP
<%-- 运行期包含,可传参 --%>
<jsp:include page="/WEB-INF/parts/nav.jsp">
  <jsp:param name="active" value="orders"/>
</jsp:include>

<%-- 转发:当前页后续内容不会执行 --%>
<jsp:forward page="/login.jsp">
  <jsp:param name="from" value="/orders"/>
</jsp:forward>

Parameters set with jsp:param are read in the target via request.getParameter or ${param.active}. They apply only to include/forward and never appear in the URL.

useBean 三件套

JSP
<jsp:useBean id="user" class="com.example.User" scope="request"/>
<jsp:setProperty name="user" property="*"/>
<p>姓名:<jsp:getProperty name="user" property="name"/></p>

property="*" auto-binds request parameters to matching setters: a field named name fills setName. Convenient in early JSP, but implicit binding is hard to debug; explicit assignment in the controller is preferred today.

动作与指令的差别

Action <jsp: >
When翻译期请求处理期
Output否include / forward 会
Params不支持支持 jsp:param
Scope当前文件当前请求
Nothing should be written after jsp:forward. The spec says the container discards later output, but implementations differ; put it at the very top or use RequestDispatcher.forward from a servlet instead.

Friends & Partners