1

考虑一个 Servlet 和一个简单的 JSP 页面。

我想尽可能减少我的演示文稿和我的应用程序之间的耦合,并且我希望尽可能减少我的 JSP 页面中的 Java 代码。

我的 JSP 页面中有一个用 Java 填充的简单 HTML 列表。

  <%
  String[] myList = (String[])request.getAttribute("myList");
  %>

  <form name="selection" action="foo.jsp">
       <select name="myList">
           <option value=""> </option>
           <% for (int i = 0; i < myList.length; i++){%>
               <option value="<%=i%>"><%=myList[i]%></option>
           <%}%>
       </select>
       <input type="submit" />
   </form>

在演示文稿中尽可能减少 Java 代码(循环)的最佳方式/模式是什么?通过直接在 servlet 中生成 html 问题不会更好。

编辑:我正在寻找 doGet() servlet 方法中的解决方案。

4

1 回答 1

1

您可以使用 JSTL 来清理 JSP 页面中的逻辑。你可以使用像 MVC 这样的模式来使你的后端设计更好。

事实上,对于当前的代码,您只需 JSTL 就足够了,但随着复杂性的增加,您可能希望探索 Spring、Struts 或 EJB 等框架,以实现更健壮、更清晰的关注点分离和长期可维护性。

例如,在您的情况下,等效的 JSTL 将类似于:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

  <form name="selection" action="foo.jsp">
       <select name="myList">
           <option value=""> </option>
       <c:forEach var="item" items="${myList}"  varStatus="status">
          <option value='<c:out value="${status.index}"/>'><c:out value="${item}" /></option>
           </c:forEach>           
       </select>
       <input type="submit" />
   </form>

Some Notes:

在某种程度上,您已经遵循 MVC 模式的一部分,因为您没有在视图(JSP)中添加任何业务逻辑,而只是利用模型(myItems)来绘制视图。模型的构建方式以及执行的业务逻辑与视图分开。

为了减少 Java 代码,视图函数可以简单地利用模型向用户呈现演示文稿。它有助于利用视图框架/库来呈现模型,而不是代码。许多人通过在 JSP 中使用 JSTL、使用 Velocity 等替代模板框架,甚至是下划线等完全前端 javascript 模板来完成此操作。

Some Links:

JSTL 教程:http ://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

JSTL@Java.net:https ://jstl.java.net/

MVC 模式:http ://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

Spring框架:http ://www.springsource.org/spring-framework

于 2013-06-13T19:05:52.690 回答