Đối tượng yêu cầu được chuyển như đối số Java cho phương thức servlet được tạo từ JSP của bạn. Tên của đối số là ... đợi cho nó ... request
.
Vì vậy, bạn có thể tham khảo nó trong tập lệnh được nhúng trong JSP của bạn; ví dụ.
<%
InetAddress addr = request.getRemoteAddr();
// blah blah blah
%>
Điều gây tranh cãi là bạn có nên thực hiện loại điều này trong JSP hay không. Nó thường được chấp nhận là "thực hành tốt nhất" mà JSPs nên chỉ được sử dụng để định dạng đầu ra. Logic nghiệp vụ của một webapp phải nằm trong một servlet điều khiển mà cuối cùng chuyển tiếp đến servlet JSP để tạo ra HTML (hoặc bất kỳ thứ gì).
Nếu bạn định đưa logic nghiệp vụ vào JSP, tập lệnh có xu hướng khó duy trì ... mặc dù nếu bạn đang chỉ sẽ hiển thị địa chỉ IP, điều đó không đáng lo ngại. (Cách tiếp cận ưa thích từ góc độ kỹ thuật là sử dụng các thẻ và ngôn ngữ biểu thức JSP.)
Cuối cùng, không có gì đảm bảo rằng địa chỉ IP được trả về bởi getRemoteAddr()
sẽ là địa chỉ IP khách hàng thực tế. Nó có thể là địa chỉ của một proxy, hoặc thậm chí là một chế tạo hoàn chỉnh.
Nguồn
2012-08-24 11:21:19
Thông thường công ty lưu trữ của bạn sẽ cung cấp các tính năng như vậy – adarshr
Vùng chứa servlet mà bạn chọn sẽ ghi lại tất cả các truy cập của khách hàng. Nếu bạn muốn nhận IP theo chương trình, hãy sử dụng [ServletRequest.getRemoteAddr()] (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteAddr%28%29). –
Hey phương pháp API bạn đã nói có vẻ thú vị. Tôi thực sự sử dụng nó trên servlet của tôi mà yêu cầu được gửi từ trang jsp. Nhưng nó vẫn không hiển thị bất kỳ giá trị nào. Tôi có cần sử dụng phương thức request.getParameter() cho mục đích này không, nhưng làm thế nào ??? – Prateek