0

我正在尝试使用 servlet(ExportDB.java) 向数据库发送查询。我正在尝试将下拉列表中的数据发送到 servlet。这是包含列表的表单。

<form>
    <select name="day">
        <option value=""></option>
        <option value="01">01</option>
        <option value="02">02</option>
        ...
        <option value="30">30</option>
        <option value="31">31</option>
    </select>
    <select name="month">
        <option value=""></option>
        <option value="01">01</option>
        <option value="02">02</option>
        ...
        <option value="11">11</option>
        <option value="12">12</option>
    </select>
    <select name="year">
        <option value=""></option>
        <option value="2013">2013</option>
        ...
        <option value="2029">2029</option>
        <option value="2030">2030</option>
    </select>
    <input type="submit" value="Export" onclick="exportDB()"/>
    <script type="text/javascript">
        function exportDB() {
        window.open('ExportDB');
        }
    </script>
</form>

这是导致问题的 ExportDB.java 中的代码行 (NullPointerException)

sqlite4java.export(Integer.parseInt(request.getParameter("day")), Integer.parseInt(request.getParameter("month")), Integer.parseInt(request.getParameter("year")));

这就是我认为我的错误所在。我无法弄清楚如何将信息链接到 servlet。我该怎么做才能使它起作用?还有为什么我现在的工作方式不行?

4

2 回答 2

1

你试过这个吗?

<form action="ExportDB" target="_blank">
<select name="day">
    <option value=""></option>
    <option value="01">01</option>
    <option value="02">02</option>
    ...
    <option value="30">30</option>
    <option value="31">31</option>
</select>
<select name="month">
    <option value=""></option>
    <option value="01">01</option>
    <option value="02">02</option>
    ...
    <option value="11">11</option>
    <option value="12">12</option>
</select>
<select name="year">
    <option value=""></option>
    <option value="2013">2013</option>
    ...
    <option value="2029">2029</option>
    <option value="2030">2030</option>
</select>
<input type="submit" value="Export" />
</form>

您还应该在 ExportDB servlet 中添加您正在使用的方法。如果您使用的是 post 方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
int year = Integer.parseInt(request.getParameter("year"));
...
}

您应该在表单中添加 method="post"

<form action="ExportDB" target="_blank" method="POST">

GET 也是一样

于 2013-07-01T16:50:17.197 回答
0
<form action="..." method="POST">

if (request.getMethod().equals("POST")) {
    String dayParam = request.getParameter("day");
    ...

    try {
        int day = Integer.parseInt(dayParam, 10);
        ...
    } catch (NumberFormatException e) {
        log.error(...); ...
    }
    if (form data okay) {
       response.sendRedirect(...);
       return;
    }
}

我看不出有多少错误,缺少行动和方法;必须有(使用 web.xml)捕获操作 URL 的 url 模式。您可以区分 GET(显示表单)和 POST(接收结果。

于 2013-07-01T16:56:27.610 回答