3

ねえ、私はサーブレット環境にまったく慣れていません。ここでは、次のようなフォームをサーブレットに投稿しようとしています。

<form action="OnlineExam?q=saveQuestion" method="post" enctype="multipart/form-data">
        <fieldset>
        <legend>Question</legend>
        <textarea class="questionArea" id="question" name="question">Enter Question.</textarea>
        <br class="clearFormatting"/>
        Attach File<input type="file" name="file" />

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

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

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

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

        <input type="submit" value="Save" />
        <input type="reset" value="Cancel" />
        <button style="display: none" onclick="return deleteQuestion()" >Delete</button>
        </fieldset>
        </form>

サーブレットは次のようなものです。

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

protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

public void saveQuestion(HttpServletRequest request){
                 Enumeration enum = request.getParameterNames();
                 while (enum.hasMoreElements()) {
                   String pName = (String) enum.nextElement();
                   String[] pValues = request.getParameterValues(pName);
                   System.out.print("<b>"+pName + "</b>: ");
                   for (int i=0;i<pValues.length;i++) {
                      System.out.print(pValues[i]);
                   }
                   out.print("<br>");
                 }
}

ただし、他のフォームフィールドではなく、qパラメーターのみを出力しています。

でそれらを取得しようとしましたrequest.getParameter("question")が、これも機能しませんでした。だから私が間違っているところ。実際、私はPHPのバックグラウンドを持っており、最近Javaでコーディングを始めたので、助けてください。

前もって感謝します

4

2 に答える 2

4

使用するenctype="multipart/form-data"場合、通常のようにリクエストパラメータにアクセスすることはできません[つまりrequest.getParameter("question")]。MultipartRequestオブジェクトを使用する必要があります。

また、POSTでフォームを送信してから、サーブレットでそれをdoGetにリダイレクトします。なぜそうなのか?フォーム送信のメソッドとしてGETを直接使用しないのはなぜですか。


MultipartRequestを使用するデモ:

String ph="images\\";
MultipartRequest req=new MultipartRequest(request, ph);
String question=req.getParameter("question");
System.out.println("Question: "+question);
于 2011-05-02T13:20:51.627 に答える
0

フォーム タイプが POST であるのに、フォーム アクションが ?q=saveQuestion を使用した GET リクエストのように見えるのはなぜですか? おそらく、この呼び出しでは GET パラメータは無視されます。

于 2011-05-02T13:22:36.500 に答える