如何将html页面(JSP)中的选定信息发送到servlet?

时间:2013-07-01 16:43:30

标签: java html jsp servlets

我正在尝试使用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。我怎么能这样做才能起作用?还有为什么我目前的工作方式不正常?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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-pattern。你可以区分GET(显示表单)和POST(接收结果。