在servlet中读取表单数据。使用post方法和servlet发布的数据用?q = test1调用

时间:2011-05-03 11:25:37

标签: java servlets post

嘿我试图在用post方法发送的servlet中读取表单数据。 servlet被称为OnlineExam?q=saveQuestion。现在servlet正在工作:

public class OnlineExam extends HttpServlet {
protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
if(request.getParameter("q").equals("saveQuestion")){
                /*
                 * Save the question provided with the form as well as save the uploaded file if any.
                 */
                saveQuestion(request);
            }
}

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
//      doGet(request, response);
        saveQuestion(request);
    }
public String saveQuestion(HttpServletRequest request){         
        System.out.println(request.getParameter("question"));

        return "";

    }       
}

HTML表单:

<form action="OnlineExam?q=saveQuestion" method="post">
        <fieldset>
        <legend>Question</legend>
        <textarea class="questionArea" id="question" name="question">Enter Question.</textarea>
        <br class="clearFormatting"/>               
        <input class="optionsInput" value="optionA" name="optionA" onfocus = "clearValues('optionA')" onblur = "setValues('optionA')"/>
        <br class="clearFormatting"/>

        <input class="optionsInput" value="optionB" name="optionB" onfocus = "clearValues('optionB')" onblur = "setValues('optionB')"/>
        <br class="clearFormatting"/>

        <input class="optionsInput" value="optionC" name="optionC" onfocus = "clearValues('optionC')" onblur = "setValues('optionC')"/>
        <br class="clearFormatting"/>

        <input class="optionsInput" value="optionD" name="optionD" onfocus = "clearValues('optionD')" onblur = "setValues('optionD')"/>
        <br/>
        <input class="optionsInput" value="answer" name="answer" onfocus="clearValues('answer')" onblur="setValues('answer')"/>     
        <input type="submit" value="Save" />
        <input type="reset" value="Cancel" />
        <button style="display: none" onclick="return deleteQuestion()" >Delete</button>
        </fieldset>
        </form>

所以任何人都可以说明如何实际调用servlet。我的意思是什么是控制流,即这个servlet中的工作原理。

我怎么能在servlet中读取param1。

ps:我不想用get方法发布表单。

7 个答案:

答案 0 :(得分:6)

您的qdoPost的价值应该不在doGet中。因为您使用method="post"然后在servlet中doPost是不调用doGet的那个。删除doGet中的代码,然后将其插入doPost。你doPost必须像下面的代码一样。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    if(request.getParameter("q").equals("saveQuestion")){
        saveQuestion(request);
    }
}

答案 1 :(得分:4)

如果您将数据POST到servlet。 <{1}}将被调用。

doPost内,您可以访问请求参数

doPost()

答案 2 :(得分:4)

这解决了吗?

我面临同样的问题。 我试过了

Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
    System.out.println((String)paramNames.nextElement());
}

它显示0个元素,因此servlet不会读取表单数据。

我在其他帖子中得到了答案。 enctype=multipart/form-data造成了这种情况。从表单中删除后,能够读取数据。

答案 3 :(得分:1)

单击表单上的“提交”按钮时,将调用servlet的doPost方法 - 这取决于您在HTML页面中放置“表单”的方法。 URL参数(q = saveQuestion)仍可供doPost方法中的代码使用。您似乎认为URL参数将由doGet方法处理,而表单参数将由doPost方法处理。事实并非如此。

答案 4 :(得分:1)

我知道这是一个旧帖子,但是当我搜索时无法找到答案,所以我发布了我的解决方案,可能会遇到同样的问题,因为他们的servlet的dopost函数中的表单参数获取null。 / p>

使用request.getParameters(“param1”)时,我遇到类似的问题,获取空值;功能。经过几个小时的游戏,我意识到我使用的param1是我请求的输入标签的ID。那是错的。我必须使用输入标记的NAME属性来获取输入框的正确值。就是这样。我只需要添加一个名称并使用此名称获取参数,这就解决了问题。

希望这有助于某人。

答案 5 :(得分:0)

Vinit尝试下面的代码 request.getParameter("param1");

答案 6 :(得分:0)

doPost() {
  processRequest(request, response);
  //to do
}

删除/评论processRequest(request, response)然后重试。现在你不应该得到空值。