-1

以下代码段将标题提交到数据库。填写文本后,我单击提交,但令我惊讶的是,表格中总是出现空值。我在下面提到了 servlet 代码和 html 设计:

<form method="post" action="Handler" enctype="multipart/form-data">
        <table>
            <tr>
                <td> <strong> Leave a caption </strong>  </td>
                <td> <input type="text" name="caption box" size="40" /></td>
            </tr>

            <tr colspan="2">
                <td> <input type="submit" value="submit caption"/> </td>
            </tr>
        </table>
    </form>

小服务程序

String caption = request.getParameter("caption box"); // get the caption from the caption field
HandleCaption hc = new HandleCaption(caption,emailOfTheUser,fileName);
hc.SubmitCaptionToTheDatabase(); 

班级

public class HandleCaption {
private String Caption = null;
private String UserEmail = null;
private String NameOfThe = null;

public HandleCaption(String caption,String email,String filename) {
    Caption = caption;
    UserEmail = email;
    NameOfThe = filename;
}

public void SubmitCaptionToTheDatabase() {
    try {
        Context context = new InitialContext();
        DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/DS");
        Connection connection = ds.getConnection();
        String sqlQuery = "insert into CAPTIONS values ('" + UserEmail + "','" + NameOfThe + "','" + Caption + "')";
        PreparedStatement statement = connection.prepareStatement(sqlQuery);
        int x = statement.executeUpdate();
    }catch(Exception exc) {
        exc.printStackTrace();
    }
}

}

我尝试打印 servlet 中返回的文本字段的值,甚至打印的 null。为什么文本字段返回 null ?

4

2 回答 2

2

我不知道为什么会发生这种情况,但发生在我身上一两次..我的标题类处理标题,将其声明为

private String Caption = "";
private String UserEmail = "";
private String NameOfThe = "";

我知道这看起来像是一个愚蠢的答案,因为在构造函数中你实际上指的是传递的值,但我经历过这个,这就是我的解决方案。请尝试回复!

更新:很抱歉由于编码类型而错误地解决了这个问题,将了解它发生的原因..但只需删除编码类型并且它可以工作..在示例代码上尝试过

更新: 3.0 版之前的 Servlet API 默认不支持 multipart/form-data 编码请求。Servlet API 默认使用 application/x-www-form-urlencoded 编码解析参数。当使用不同的编码时,request.getParameter() 调用都将返回 null。

于 2012-04-27T07:12:28.123 回答
1

captionbox的字段名称不应包含空格。

<input type="text" name="captionbox" size="40" />

从中删除空格,也从 servlet 端删除空格。

于 2012-04-27T06:46:55.163 回答