Servlet,JSP,JavaBeans和HTML表单

时间:2010-03-04 22:46:42

标签: java html forms jsp servlets

我正在开发一个与数据库建立连接的servlet,获取其中一个表的信息,并将此信息发送到jsp文件。此文件将在信息表的打印机上打印,添加单选按钮,允许我们选择其中一行。

servlet看起来像这样:

List<InfoBean> items = new ArrayList<InfoBean>();
if (!conexion.isClosed()){
  Statement st = (Statement) conexion.createStatement();          
  ResultSet rs = st.executeQuery("select * from lista_audio" );
  while (rs.next())
  {items.add(getRow(rs));}
  conexion.close();}
req.getSession().setAttribute("items", items);

在JSP文件中,我可以打印一个包含信息的表,添加用户将用来选择1行的单选按钮,并使用我可以添加的表单将所选信息发送到servlet:

< form action="administ" method=get enctype=multipart/form-data>    
< table>
 < table border=\"1\">< tr>< th>Title< /th>< th>Author< /th>< th>Album< /th>< /tr>
 < c:forEach items="${items}" var="item">
 < tr>< td><input type="radio" name="SongInfo" value=${item.title}>
 < td>${item.title}< /td>
 < td>${item.author}< /td>
 < td>${item.album}< /td>< /tr>
 < /c:forEach>
< /table>

在字段'value'中,我应该能够将存储在$ {item.title}中的信息发送给servlet。当我设置value = $ {item.title}并且title是例如“bodyguard”时,在servlet中我可以检索的信息就是“The”。它看起来像是发送位于字符串第一个空格之前的字符。我怎么能得到整个字符串?

由于

1 个答案:

答案 0 :(得分:0)

检查生成的HTML输出(在浏览器中右键单击页面,选择“查看源”)。你不想错过什么吗?

<input type="radio" name="SongInfo" value=The bodyguard>

是的,引号(注意突出显示颜色的差异,bodyguard成为属性)。

所以,解决它:

<input type="radio" name="SongInfo" value="${item.title}">

这样它将按如下方式生成:

<input type="radio" name="SongInfo" value="The bodyguard">

简单修复,不是吗? :)


也就是说,您的JDBC代码容易出现资源泄漏。您应该关闭已获取它们的try块的finally块中的所有资源ConnectionStatementResultSet。有关更多提示,请参阅this article。此列表也不一定需要放在会话范围内。此外HTML在语法上是无效的,但这可能只是一个copypaste错误,否则它将无法正常工作。

此外,您的HTML表单被声明为使用GET的请求方法,但也声明它使用multipart/form-data的编码类型。这没有任何意义。每当有<input type="file">时,使用此enctype,如果是这种情况,则请求方法应为POST