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