[英]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.