簡體   English   中英

為什么在doPut servlet方法中無法從JSP獲取參數

[英]Why can't get parameter from JSP in doPut servlet method

我不明白為什么不能在doPut方法中訪問參數。 只想在JSP頁面上使用名稱標簽獲取servlet參數值。 我在JSP頁面上的表單中使用method =“ put” ,在action =“ ReservationServlet”中使用 而且也沒有任何例外。

公共類ReservationServlet擴展了HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    try {

        List<Doctor> listDoctors = DoctorDao.getInstance().findAll(ResourceManager.getConnection());
        request.setAttribute("listDoctors", listDoctors);
        RequestDispatcher rd = request.getRequestDispatcher("rezervacija.jsp");
        rd.forward(request, response);

    } catch (SQLException ex) {
        Logger.getLogger(ReservationServlet.class.getName()).log(Level.SEVERE, null, ex);
    } catch (DentistException ex) {
        Logger.getLogger(ReservationServlet.class.getName()).log(Level.SEVERE, null, ex);
    }
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    System.out.println("USAOOOOOO U POSTTTTT");
    String vreme = (String) request.getParameter("choose-time");
    System.out.println(vreme);

    RequestDispatcher rd = request.getRequestDispatcher("rezervacija.jsp");
    rd.forward(request, response);

    processRequest(request, response);

}

@Override
protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    System.out.println("USAOOOO OVDEEEEEEEEEEEEE");
    String vreme = (String) request.getParameter("choose-time");
    System.out.println(vreme);

    processRequest(request, response);

}

}

和我在JSP頁面上的表單:

<form action="ReservationServlet" method="POST">

<!-- CALENDAR -->
<label for="datepicker">Datum:</label>
   <div class="form-group">
      <div class="input-group">
         <input type="text" id="datepicker" placeholder="Unesite datum"
              class="form-control" required="true">
              <span class="input-group-addon">
              <span class="fa fa-calendar"
                 id="datepicker"></span></span>
      </div>
   </div>

<!-- SAT -->
<label for="choose-time">Vreme:</label>
   <div class="form-group">
       <div class="input-group clockpicker" data-placement="left"
             data-align="top" data-autoclose="true">
             <input type="text" class="form-control"
                    id="choose-time" name="choose-time" required="true">
             <span class="input-group-addon">
             <span class="glyphicon glyphicon-time"></span>
                                                    </span>
       </div>
   </div>

<!-- VRSTA USLUGE -->
<div class="form-group">
     <div class="input-group" style="width: 100%;">
          <label for="choose-service">Vrsta usluge:</label>
          <select class="form-control" id="choose-service" style="border-
                  radius:3%;" name="choose-service">
          <option id="service1"></option>
          <option id="service2"></option>
          <option id="service3"></option>
          <option id="service4"></option>
          </select>
     </div>
</div>

<!-- DOCTOR -->
<div class="form-group">
     <div class="input-group" style="width: 100%;">
          <label for="choose-doctor">Doktor:</label>
          <select class="form-control" id="choose-doctor" style="border-
                  radius:3%;" name="choose-doctor">
          <c:forEach items="${requestScope.listDoctors}" var="listDoctors" >
               <option><c:out value="${listDoctors.firstName} 
                       ${listDoctors.lastName} "/></option>
          </c:forEach>
          </select>
     </div>
</div>

<button type="submit" class="btn btn-info btn-lg">REZERVIŠI</button>
</form>

謝謝!

我在JSP頁面上的表單中使用method =“ put”

根據HTML標准 ,您不能在表單方法中放入“ put”

如果確實將其放在表單的method屬性中,則不會生成PUT,而是會執行GET請求。 (無效使用方法屬性將導致默認的“獲取”)

如果要使用PUT方法,則必須通過AJAX之類的方法進行。

$.ajax({
  url: '/ReservationServlet',
  type: 'PUT',
  data: "choose-time=10AM&choose-service=sphincterotomy",
  success: function(data) {
    alert('Load was performed.');
  }
});

或者,您也可以將其附加到文件輸入流

查看您的代碼,我不明白您進行PUT的原因是什么? 為什么不只使用普通的GET / POST請求,對您來說會容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM