考虑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方法的解决方案。
答案 0 :(得分: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 Framework:http://www.springsource.org/spring-framework