我是前端或UI开发人员,对Java的理解有限。我有一个基于java的Web应用程序,其中使用了JSTL ..我想了解JSTL的确切用法。它是否始终在JSP页面中使用,并且仅用于从数据库中获取数据。能否请您解释一些基本的例子..
答案 0 :(得分:6)
JSP标记用于在JSP中动态生成HTML,但不混合Java代码和HTML标记。 JSTL是标准JSP标记库。它表示“JavaServer Pages标准标记库”,正如其名称所示,它在JSP中使用。
永远不应该使用它从数据库中获取数据。在使用Java编写的控制器中执行JSP之前,应该从数据库中获取数据。一旦控制器完成其工作,它应该将HTTP请求分派给视图(JSP),其作用是呈现数据。
因此,如果您的应用使用sql
标签,那就错了。 core
和fmt
代码都可以。正如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的映射:
如果是,那么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引擎的标记,两者都只是一个自定义标记。