2017-08-24 81 views
0

我不明白爲什麼doPut方法中無法訪問參數。 只需要在JSP頁面上使用名稱標籤獲取servlet參數值。 我正在使用method =「put」 in JSP page and action =「ReservationServlet」而且也不會有任何異常。爲什麼在doPut servlet方法中無法從JSP中獲取參數

公共類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> 

謝謝!

回答

0

我使用的方法=「放」的形式JSP頁面

上按照HTML standard,你不能把形式方法「放」

如果您確實將它放在窗體的method屬性中,它不會導致PUT,而是會執行GET請求。 (方法屬性的無效使用導致默認的'get')

如果你想使用PUT方法,你必須通過類似AJAX的方法來完成。

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

或者你也可以attach it to the file input stream

看着你的代碼,我不明白你做PUT的原因是什麼?爲什麼不只是使用正常的GET/POST請求,它會容易得多..

+1

謝謝你的好解釋!是的,最後我用POST做了。 @Jonathan Laliberte – NikolaU

相關問題