在Web应用程序中使用JSTL

时间:2011-06-26 06:47:45

标签: java jsp web-applications jstl jsp-tags

我是前端或UI开发人员,对Java的理解有限。我有一个基于java的Web应用程序,其中使用了JSTL ..我想了解JSTL的确切用法。它是否始终在JSP页面中使用,并且仅用于从数据库中获取数据。能否请您解释一些基本的例子..

4 个答案:

答案 0 :(得分:6)

JSP标记用于在JSP中动态生成HTML,但不混合Java代码和HTML标记。 JSTL是标准JSP标记库。它表示“JavaServer Pages标准标记库”,正如其名称所示,它在JSP中使用。

永远不应该使用它从数据库中获取数据。在使用Java编写的控制器中执行JSP之前,应该从数据库中获取数据。一旦控制器完成其工作,它应该将HTTP请求分派给视图(JSP),其作用是呈现数据。

因此,如果您的应用使用sql标签,那就错了。 corefmt代码都可以。正如the Java EE tutorial表示:

  

用于访问的JSTL SQL标记   表7-7中列出的数据库是   专为快速原型设计而设计   简单的应用。用于生产   应用程序,数据库操作   通常封装在JavaBeans中   组件。

答案 1 :(得分:3)

JSTL - JavaServer Pages标准标记库 - 旨在克服JSP中的缺点,即从JSP页面调用Java库需要更简单的方法。之前的方法是使用<%%><%=转义到Java并执行您需要的操作,这会导致非常复杂且难以维护的JSP页面。

除了JSP页面中的HTML标记之外,JSTL还为您提供了新标记,但它们具有特殊含义的服务器端,因此在客户端询问时会对其进行解释,并将结果放在实际页面中送回客户端。

标记定义可以执行您在Java中可以执行的任何操作,但您应该强烈考虑在哪里执行操作。有例如JSP页面中的SQL请求意味着您将业务逻辑与实际表示结合在一起,而这些表现非常痛苦,同时也提供了复杂且难以维护的Web应用程序。

答案 2 :(得分:1)

  

是否总是在JSP页面中使用

  

...它是否仅用于从数据库中获取数据。

没有。实际上,在桅杆情况下,使用JSTL或使用其他方法(例如scriptlet)从JSP访问数据库是不行的。

  

这意味着大多数JSP会像1-1映射一样关联Java文件,其中使用SQL查询获取数据的逻辑被写入并提供给JSP页面。

排序。但不一定是1比1的映射:

  • 并非所有JSP都需要访问数据库。
  • Java servlet可以使用多个JSP来呈现不同的输出页面。
  • 不同的servlet可以共享一个JSP;例如渲染一个常见的错误消息页面。
  

如果是,那么JSTL代码在JSP中的作用究竟是什么。

JSP的目标是呈现输出;通常是HTML页面,但它可以是基于文本的任何内容。当输出呈现逻辑过于复杂或混乱而无法使用JSP EL表达时,JSTL在JSP中使用。


<强>更新

JSTL和JSP EL的老式替代方法是在JSP中嵌入Java代码......即scriptlets ....例如:

<c:if test="${a == 'true'}">
    hi
</c:if>

等同于:

<% if ("true".equals(context.findAttribute("a")) { %>
    hi
<% } %>
  

对于JSTL的使用,根据我的理解,它在JSP中用于通过if..else语句进行动态HTML呈现。

您正在描述其结构和内容依赖请求参数,配置参数,从数据库中获取的数据等的HTML。这是JSTL的主要用途。

但是,这不是通常所说的“动态HTML”。动态HTML是浏览器更改当前显示页面的HTML的地方;例如当嵌入在页面中的Javascript通过修改DOM更改显示页面时。

答案 3 :(得分:0)

JSTL 是在 J2EE服务器JSP servlet引擎部分的规范中开发的“自定义标记库集”。 “为Java服务器编写的Java服务器标记页面中的任何标记”为Java服务器编写的J2EE规范是一个“自定义标记实现”,无论是JSF,JSP,JSTL还是Databasing cudtom 标记。 然而,它不是Java Bean(在语法和语义方面与编写类程序非常相似)。 每个自定义标记库在java服务器标记中都有自己的一组有用属性,这也是系统开发的原因。 Java Bean系统是相似的,但是通过EL语言完成。 “tag”使用页面中的标记表示和服务器中的共同绑定(已配置) .class文件程序来处理页面标记和界面或加入其他服务器进程和程序 JSTL只是JSP-servelt引擎的java服务器标记库,因为JSF是faces-servlet引擎的标记,两者都只是一个自定义标记。