的Servlet,JSP,JavaBeans和HTML表单(Servlet, JSP, JavaBe

2019-10-20 04:13发布

我工作的一个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>

在现场的“价值”,我应该能够发送到servlet存储在$ {} item.title的信息。 当我设置值= $ {} item.title和标题,例如“保镖”,在servlet我可以检索的信息只是“该”。 它看起来像它发送位于字符串的第一个空格前的字符。 我怎么能得到整个字符串?

谢谢

Answer 1:

检查生成的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代码很容易出现资源泄漏。 你应该关闭所有资源ConnectionStatementResultSet你已经获得他们try块的finally块。 更多的提示看这篇文章 。 也在名单并不一定需要被放入会话范围。 另外,HTML在语法上是无效的,但是这也许只是一个copypaste错误,否则它将不会管用。

此外上,HTML表单被声明使用的请求方法GET ,但它也宣告使用的编码类型multipart/form-data 。 这是没有绝对的意义。 使用该加密类型,只要你有一个<input type="file">并且如果是这种情况,则该请求方法应该是POST



文章来源: Servlet, JSP, JavaBeans and HTML form