Không giống như trong doGet()
và doPost()
phương pháp, chúng tôi không thể nhận được các thông số yêu cầu sử dụng phương pháp getParameter()
trong doPut()
và doDelete()
phương pháp. Chúng tôi cần truy xuất chúng theo cách thủ công từ luồng đầu vào.
Các phương pháp sau đây lấy thông số yêu cầu và trả cho họ trong một bản đồ:
public static Map<String, String> getParameterMap(HttpServletRequest request) {
BufferedReader br = null;
Map<String, String> dataMap = null;
try {
InputStreamReader reader = new InputStreamReader(
request.getInputStream());
br = new BufferedReader(reader);
String data = br.readLine();
dataMap = Splitter.on('&')
.trimResults()
.withKeyValueSeparator(
Splitter.on('=')
.limit(2)
.trimResults())
.split(data);
return dataMap;
} catch (IOException ex) {
Logger.getLogger(Utils.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (br != null) {
try {
br.close();
} catch (IOException ex) {
Logger.getLogger(Utils.class.getName()).log(Level.WARNING, null, ex);
}
}
}
return dataMap;
}
Ví dụ sử dụng thư viện ổi của Google để phân tích các thông số. Để có ví dụ hoàn chỉnh chứa các phương thức doGet()
, doPost()
, doPut()
và doDelete()
, bạn có thể đọc Using jsGrid tutorial của mình.
Nguồn
2016-09-26 15:19:28
Tại sao bạn đang cố gắng sử dụng nó theo cách nó không có ý nghĩa? Tuy nhiên bạn có thể chơi xung quanh với những điều như bạn vui lòng. –
Tôi đang chạy vào cùng một vấn đề: Tôi đang cố gắng triển khai một dịch vụ hoàn toàn, PUT có nghĩa là thay thế tài nguyên. Jetty làm cho tất cả dữ liệu có sẵn trong bản đồ tham số yêu cầu, tuy nhiên, tomcat không .. – Andrej
Theo Java Web Services: Up and Running, doPost và doPut khác nhau đáng kể vì thời gian chạy servlet container không tạo ra một bản đồ tham số có thể sử dụng được. là trường hợp trong cả Tomcat và Jetty) " – Jason