我正在研究JSP
和Servlets
,并向你们提问,因为在很少的视频中我看到老师正在使用如下的scriplets,我使用了一个例子array
,没有任何objects
just来更好地表达我的意思。
<%
Student[] students = new Student[]{students};
names.setAttribute("students", students)"
%>
但有时当他使用标准的for
而不是JSTL
c:forEach
时,他正在编写如下的这个小脚本。
<%
for (String temp : students) { %>
<tr>
<td><%=temp.getFirstName()%></td>
<td><%=temp.getLastname()%></td>
<% } %>
单个<% %>
对于for loop
有什么区别我们需要像上面那样使用它还是没有?
可以使用其中任何一个。 c:forEach
方法的唯一问题是您可能必须安装并包含JSTL标记库。根据您的环境和技能组合,这可能会有点痛苦。
您在上面显示的示例使用带有JSP标记的“纯”Java。 <%
和%>
之间的任何东西都是常规的Java代码。它内置于JSP语言中。 <%=
是使用内置于JSP中的out
隐式对象的快捷方式(有关所有变量的列表,请参阅this page)。这也可以写成:
<%
for (String temp : students) { %>
<tr>
<td><% out.print(temp.getFirstName()) %></td>
<td><% out.print(temp.getLastname()) %></td>
<% } %>
但现在是一个警告。学习这个很好,根据你的生活,你很可能会遇到JSP代码。我已经为那些即使在今天拥有JSP代码的人提供咨询服务。但是@GyroGearless使得JSP不被认为是新项目的最佳实践。最终,他们将业务逻辑与显示逻辑相结合。在具有UI人员和Java人员的大型项目中,它可能使分离工作变得困难。创建JSP标记库是为了尽量减少它,但它确实不是最好的答案。
今天的新项目将显示逻辑与后端逻辑分开。您使用本周的JavaScript库(即AngularJS,ReactJS,Ember等)和后端使用JAX-RS等现代技术编写前端,以创建一个带有后端REST / JSON接口的AJAX前端。