我想要了解的是以下内容:
在JSP x中,我有一个3个下拉列表和一个名为edit的按钮,当用户单击此按钮时,应该显示动态表。现在修改此表以对应这3个下拉列表中的值。所以它可以是3 cols或4 cols甚至6 cols,它取决于所选的值。所以我尝试的是使用servlet来getParameter
做if
子句构造html然后转发响应。您对JSP中可以使用的结构有什么建议吗?谢谢。
答案 0 :(得分:1)
您不应该在servlet中构造HTML。在JSP中执行此操作。您可以使用JSTL来控制JSP页面中的页面流。只需在/WEB-INF/lib
中删除jstl-1.2.jar,然后根据上述TLD文档声明taglib。
您可以使用<c:if>
或<c:choose>
标记在页面流中引入条件。您可以使用<c:forEach>
标记迭代JSP中的数组或集合。您的功能要求非常模糊,但这是一个启动示例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!doctype html>
<html lang="en">
<head>
<title>SO question 2690671</title>
</head>
<body>
<form>
Cols:
<select name="cols">
<option>3</option><option>4</option><option>6</option>
</select><br>
Rows:
<select name="rows">
<option>3</option><option>4</option><option>6</option>
</select><br>
<input type="submit">
</form>
<c:if test="${param.cols > 0 && param.rows > 0}">
<p>Here is a table with ${param.cols} cols and ${param.rows} rows.
<table>
<c:forEach begin="1" end="${param.rows}">
<tr>
<c:forEach begin="1" end="${param.cols}">
<td>cell</td>
</c:forEach>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
非常简单,不是吗?实际上你不需要这里的servlet,除非你想预处理行/列并实现一些验证/业务逻辑。只需将表单操作更改为servlet URL,然后让servlet使用requestdispatcher将请求转发给JSP,而requestdispatcher之前已在几个答案中向您解释过。不要在Servlet中处理HTML。没有必要这样做。
毕竟,你真的需要先通过一些基本的JSP / Servlet教程/书籍而不是在黑暗中刺伤。您可以找到优秀的在线JSP / Servlet教程here,您可以找到好书here和here。把你的项目放在一边,集中精力学习这些东西。