表单将空查询字符串发送到Servlet

时间:2015-11-20 07:08:57

标签: java jsp servlets

我有一个JSP,其表单如下所示:

<form method="GET" action="ManagerLogicServlet?action=salesreport" >
                <select name="monthList">
                    <option value="1">January</option>
                    <option value="2">February</option>
                    <option value="3">March</option>
                    <option value="4">April</option>
                    <option value="5">May</option>
                    <option value="6">June</option>
                    <option value="7">July</option>
                    <option value="8">August</option>
                    <option value="9">September</option>
                    <option value="10">October</option>
                    <option value="11">November</option>
                    <option value="12">December</option>
                </select>
                <input type="submit" value="Submit">
    </form>

我正在尝试发送一个带有属性action = salesreport的查询字符串,这将是一个返回所选月份的销售报告的条件(不要忘记缺少的默认值)。我将表单提交给具有以下代码片段的ManagerLogicServlet:

..String action = request.getParameter("action");

    if (action.equalsIgnoreCase("salesreport")){

        forward = SALES_REPORT;
        int month = Integer.parseInt(request.getParameter("monthList"));
        String monthString = new DateFormatSymbols().getMonths()[month-1];
        request.setAttribute("monthString", monthString);
        request.setAttribute("salesReport", salesDAO.getSalesReport(month));

    } else if..

但是action属性设置为null。这是为什么?

2 个答案:

答案 0 :(得分:2)

由于您的表单使用GET方法,因此action属性中的参数将被丢弃。如果您坚持使用GET,那么您可以包含一个<input>标记,其中包含您希望传递给servlet的参数。试着这样做:

<form method="GET" action="ManagerLogicServlet?action=salesreport" >
    <input type="hidden" name="action" value="salesreport">
    <select name="monthList">
        <option value="1">January</option>
        ...
    </select>
    <input type="submit" value="Submit">
</form>

替代方法是让您保留代码,但将表单的方法更改为POST

答案 1 :(得分:0)

工作正常。 我试过这个

<强> HTML

    <form action="AnyServlet?action=salesreport" method="post">
        <input type="submit" value="Submit Data" />
    </form>

AnyServlet.java

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");
        System.out.println("action=="+action);


        }

输出

action==salesreport

<强>更新

当我改变了&#34; post&#34; to&#34; get&#34;我也遇到了问题。如果你想和&#34;得到&#34;你可以使用隐藏的输入字段。