2012-11-23 32 views
0

我想知道是否有可能从jsp发送字符串数组到servlet类。实际上,这种情况是我从servlet发送一个字符串数组到jsp,然后我想把这个字符串数组发送到另一个servlet类。例如,如何发送从jsp到servlet类的字符串数组

<table border="1"> 
    <tr> 
     <th>Target Names</th> 
    </tr> 
     <c:forEach items="${targetarray}" var="drugtarget"> 
     <tr> 
     <td>${fn:escapeXml(drugtarget)}</td> 
     </tr> 
     </c:forEach> 
</table> 

这里,targetarray是我的字符串数组。我现在需要将它发送到另一个servlet类。还是有另一种方法来做到这一点?谢谢。

+1

我认为你的基础知识是错误的,JSP是在服务器端进行评估的。这种问题已被问及几次,可能重复http://stackoverflow.com/questions/4253660/passing-object-from-jsp-to-servlet – ch4nd4n

+0

其实,我打算通过使用隐藏输入发送数据,我只是想知道是否有另一种方式,但确定。谢谢 –

+1

@AhmetTanakol是的,还有其他方法。曾经听说过session.setAttribute()和session.getAttribute()?请求对象中也有相同的功能 –

回答

1

HTML只能包含字符序列。 HTTP请求参数只能表示字符序列。你绝对不能绕过Java对象。您需要将它们转换为一个字符序列,该字符序列首先根据指定的格式唯一地表示Java对象,以便在将其返回到服务器端后转换回Java对象。字符序列用String类表示的Java表示。

因此,基本上,您需要先将String[]转换为String,然后再将其打印在HTML中。您可以使用HTML <input type="hidden">来表示隐藏的请求参数。您需要将提交的String值作为HTTP请求参数转换回String[]。最简单的你可以选择逗号分隔值(CSV)格式作为String表示,或者可以是XML或JSON。

一个完全不同的选择,当然,如果Java对象相当复杂(例如,Javabean,可能具有更多嵌套的Javabean属性等),则将该对象沿着唯一且自动生成的键(例如java.util.UUID)存储在会话。然后,您只需将请求参数中的唯一密钥传递给它,以便随后可以根据密钥从会话中获取(删除)该密钥。