WEB开发网
开发学院网页设计JavaScript JavaScript EE,第 3 部分: 结合使用 Java Script... 阅读

JavaScript EE,第 3 部分: 结合使用 Java Scripting API 和 JSP

 2009-07-31 00:00:00 来源:WEB开发网   
核心提示: 在处理 HTTP 请求的过程中,您需要使用一个脚本上下文,JavaScript EE,第 3 部分: 结合使用 Java Scripting API 和 JSP(4),以便 JavaScript 片段能够使用上次执行的脚本中定义的变量和函数,满足该请求的简单方式是将脚本上下文存储为 reques

在处理 HTTP 请求的过程中,您需要使用一个脚本上下文,以便 JavaScript 片段能够使用上次执行的脚本中定义的变量和函数。满足该请求的简单方式是将脚本上下文存储为 request 对象的属性。getScriptContext() 方法(见清单 3)使用 jsee.ScriptContext 作为属性名称。

清单 3. JSUtil 的 getScriptContext() 方法

   
public class JSUtil { 
  ... 
  public static ScriptContext getScriptContext(PageContext pageContext) 
      throws IOException { 
    ServletRequest request = pageContext.getRequest(); 
    synchronized (request) { 
      ScriptContext scriptContext 
        = (ScriptContext) request.getAttribute("jsee.ScriptContext"); 
      if (scriptContext == null) { 
        scriptContext = createScriptContext(pageContext); 
        request.setAttribute("jsee.ScriptContext", scriptContext); 
      } 
      return scriptContext; 
    } 
  } 
  ... 
} 

runScript() 方法(见清单 4)在当前 HTTP 请求的上下文中执行给定的 JavaScript 片段,它使用脚本引擎中的 eval() 方法。如果抛出脚本异常,runScript() 将输出源代码,其后是堆栈跟踪,然后抛出 ServletException 终止执行 JSP 页面。

清单 4. JSUtil 的 runScript() 方法

   
public class JSUtil { 
  ... 
  public static void runScript(String source, PageContext pageContext) 
      throws ServletException, IOException { 
    try { 
      getScriptEngine().eval(source, getScriptContext(pageContext)); 
    } catch (ScriptException x) { 
      ((HttpServletResponse) pageContext.getResponse()).setStatus(500); 
      PrintWriter out = new PrintWriter(pageContext.getOut()); 
      out.println("<pre>" + source + "</pre>"); 
      out.println("<pre>"); 
      x.printStackTrace(out); 
      out.println("</pre>"); 
      out.flush(); 
      throw new ServletException(x); 
    } 
  } 
 
} 

编缉推荐阅读以下文章

  • 暂无相关文章

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:JavaScript EE 部分

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接