Trong ASP, có các thuộc tính request.form
và request.queryString
, nhưng trong Java. Nó có vẻ như chúng ta chỉ có một bộ sưu tập, có thể được truy cập thông qua request.getParamaterMap
, getParametersNames
, getParameterValues
, vvLàm thế nào để xác định xem một tham số đã được "đăng" hoặc "lấy" từ Java?
Có một số cách nào để cho các giá trị đã được đăng lên và những người thân đã được quy định trong URL?
PS:
Những gì tôi đang cố gắng để đạt được là để tạo ra một trang có thể xử lý các tình huống sau đây
- Đọc biến đến từ các chuỗi truy vấn (được)
- Đọc một bài đăng với một tên nhất định (ví dụ: "xml").
- Nếu bài đăng đó bị thiếu, hãy đọc toàn bộ phần thân (với số
request.getReader()
).
Tôi đang sử dụng tomcat 6.
Theo những gì tôi đã nhìn thấy cho đến nay, nếu tôi ra request.getReader()
, giá trị đăng tải không còn xuất hiện trong bộ sưu tập getParamater
, tuy nhiên chuỗi truy vấn các thông số vẫn còn ở đó.
Mặt khác, nếu tôi phát hành bất kỳ phương thức getParameters
nào, thì getReader
sẽ trả về chuỗi trống.
Có vẻ như tôi không thể ăn bánh và ăn nó.
như vậy, tôi nghĩ giải pháp là folowwing:
- Đọc cơ thể với
getReader
. - Xem nếu bài xml là có (nhược điểm, tôi phải tự phân tích cơ thể.
- Nếu có, có được nội dung thư http và thoát khỏi những "xml =" phần.
- Nếu nó không phải , tốt, chỉ nhận được cơ thể
- đọc các thông số chuỗi truy vấn thông qua
request.getParameter
Bất kỳ ý tưởng tốt hơn
- PS:.? có ai biết làm thế nào để phân tích cú pháp cơ thể sử dụng cùng phương pháp được sử dụng bởi
HttpServlet
? - PS: Here là hàm ASP giải mã. Tôi có nên viết lại nó trong Java không?
- PS: Cũng found (không có máy để thử nghiệm nó ngay bây giờ)
Chỉ cần làm rõ điều này.Vấn đề có vẻ là rằng với getParameter
bạn nhận được giá trị cũng như giá trị được truyền với URL được đăng, xem xét ví dụ sau:
<%@page import="java.util.*"%>
<%
Integer i;
String name;
String [] values;
for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
name = (String) e.nextElement();
values = request.getParameterValues(name);
for (i=0; i < values.length; i ++) {
out.println(name + ":" + values[i] + "<br/>");
}
}
%>
<html>
<head><title>param test</title>
</head>
<body>
<form method="post" action="http://localhost:8080/jsp_debug/param_test.jsp?data=from_get">
<input type="text" name="data" value="from_post">
<input type="submit" value="ok">
</form>
</body>
</html>
đầu ra của mã này là
data:from_get
data:from_post
...
Có vẻ như để để tìm thông số đến từ đâu, tôi phải kiểm tra request.getQueryString
.
máy chủ gì bạn đang sử dụng? mặt trời HttpServer? – gubby
Bạn sẽ nhận được toàn bộ URL và deserialize các tham số. nếu tham số mong muốn của bạn ở đó, đó là GET. Nếu nó không có nhưng tồn tại, thì đó là tham số POST. – PSyLoCKe