使用href链接传递JSP输入

时间:2012-06-29 18:04:51

标签: arrays jsp parameter-passing href

我想用href而不是按钮传递输入数据。问题是我发送一个数组,我的for循环输入数据正在存储,所以它创建了多个链接。采取什么行动来解决这个问题。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Firstjsp</title>
</head>
<body>
<% String locations[] = {"Loan 1", "33.890542", "151.274856", "Address 1","true", "-35404.34"};
for (int i =0; i<locations.length; i++)
{
%>
<form name="submitForm" method="POST" action="Mapper.jsp">
<Input type = "Hidden" name = "loc" value = "<%= locations[i] %>">
<A HREF="Mapper.jsp">View Map</A>
</form>

<%
}   
%>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

HTTP请求查询字符串采用name1=value1&name2=value2&name3=value3的形式。因此,您只需将String[]转换为String即可。其他要求是使用URLEncoder对名称和值进行编码,以便将任何特殊字符转换为%nn格式,以便在URL中正确使用。

这应该做:

StringBuilder builder = new StringBuilder();

for (String location : locations) {
    if (builder.length() > 0) builder.append("&");
    builder.append("loc=").append(URLEncoder.encode(location, "UTF-8");
}

String locationsQuery = builder.toString();

然后您可以在链接中指定它,如下所示:

<a href="Mapper.jsp?<%=locationsQuery%>">View Map</a>

如何在另一方获取它已在您的previous question中得到解答。


对于具体问题

无关,在JSP中编写原始Java代码是officially discouraged since a decade。您可以使用JSTL <c:url><c:param><c:forEach>以更轻松的方式实现相同目标。这是一个启动示例,假设您在预处理servlet或JSP顶部完成了request.setAttribute("locations", locations)

<c:url value="Mapper.jsp" var="mapperURL">
  <c:forEach items="${locations}" var="loc">
    <c:param name="loc" value="${loc}" />
  </c:forEach>
</c:url>
<a href="${mapperURL}">View Map</a>