Java JSP:从Servlet到JSP再到Servlet:无参数

时间:2018-11-07 07:43:19

标签: java jsp servlets

我有以下问题: 我调用一个servlet,将其转发到doGet上的JSP页面 JSP有一个FORM,我在其中设置值,然后我想通过POST将这些值提交回同一servlet 但参数始终为空

编辑:好吧,事情是:我发布了代码,但是只有当我在表单操作中调用另一个servlet时。

例如:帖子“上传” servlet如下所示。我也有一个使用相同的doPost方法称为fileupload的serlvet,如果我使用“ action =” fileupload“一切正常,则getParameter返回值,get getPart返回文件,但是如果我使用相同servlet的Post方法( “ upload”)它总是给我“ null”,问题是“ why”?我尝试了没有文件上传和“ multipart / form-data”的操作,但得到了参数,但是为什么它可以在另一个servlet中工作,但是不一样?

Servlet“上传”:

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    getServletContext().getRequestDispatcher(thisJSP).forward(req, resp);   
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String type = req.getParameter("type");
    Part filePart = req.getPart("file");
    .
    .
    .
}

JSP:

`           <form action="upload" method="post" enctype="multipart/form-data">
            <div class="form-group">
                <div class="col-md-10">
                    <h4>Select Type:</h4>
                    <select class="form-control" id="sel1" name="type">
                        <option value="blank"></option>
                        <option value="csvImport">CSV Import</option>
                        <option value="xmlAriba">XML Ariba</option>
                    </select>
                    <h4>Select File:</h4>
                    <label class="btn btn-default btn-file text-white btn-block"> Browse <input type="file" name="file"
                        style="display: none;">
                    </label>
                </div>
            </div>
            <div class="form-group">
                <div class="col-md-10">
                <input type="hidden" name="test" value="testValue" />
                    <input class="btn btn-default btn-file text-white btn-block" type="submit" value="Upload" />
                </div>
            </div>
        </form>`

问题是,如果我使用相同的代码调用不同的servlet,它就起作用了……我在这里做错了吗?还是根本不可能?

0 个答案:

没有答案