2009-09-10 31 views
7

Tôi đang cố gắng sử dụng một RequestDispatcher để gửi các tham số từ một servlet.Cách gửi tham số từ một servlet

Đây là mã servlet của tôi:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

String station = request.getParameter("station"); 
String insDate = request.getParameter("insDate"); 

//test line 
String test = "/response2.jsp?myStation=5"; 

RequestDispatcher rd; 
if (station.isEmpty()) { 
    rd = getServletContext().getRequestDispatcher("/response1.jsp"); 

} else { 
    rd = getServletContext().getRequestDispatcher(test); 
} 

rd.forward(request, response); 

} 

Đây là jsp của tôi, với mã để đọc các giá trị - tuy nhiên nó cho thấy null.

<h1>response 2</h1> 
    <p> 
     <%=request.getAttribute("myStation") %> 
    </p> 

Cảm ơn mọi đề xuất. Xanh hơn

+0

RequestDispatcher không được sử dụng để đọc các tham số. Do đó tôi đã chỉnh sửa bài đăng của bạn. –

Trả lời

11

Trong việc bạn sử dụng servlet request.setAttribute theo cách thức sau đây

request.setAttribute("myStation", value); 

nơi giá trị sẽ xảy ra là đối tượng bạn muốn đọc sau.

và giải nén nó sau này trong một servlet khác nhau/jsp sử dụng request.getAttribute như

String value = (String)request.getAttribute("myStation") 

hoặc

<%= request.getAttribute("myStation")> 

Do lưu ý rằng phạm vi sử dụng get/setAttribute được giới hạn trong tự nhiên - thuộc tính đặt lại giữa các yêu cầu. Nếu bạn có ý định lưu trữ các giá trị lâu hơn, bạn nên sử dụng ngữ cảnh phiên hoặc ứng dụng hoặc cơ sở dữ liệu tốt hơn.

Thuộc tính khác với tham số, trong đó khách hàng không bao giờ đặt thuộc tính. Các thuộc tính được nhiều nhà phát triển sử dụng để chuyển trạng thái từ một servlet/JSP sang một servlet/JSP khác. Vì vậy, bạn nên sử dụng getParameter (không có setParameter) để trích xuất dữ liệu từ một yêu cầu, đặt thuộc tính nếu cần bằng cách sử dụng setAttribute, chuyển tiếp yêu cầu nội bộ bằng cách sử dụng RequestDispatcher và trích xuất các thuộc tính bằng cách sử dụng getAttribute.

+0

Cảm ơn các ý kiến ​​đóng góp. Tôi thực sự đánh giá cao. Giá trị được truyền có phạm vi trang, vì vậy tôi nghĩ phương pháp bạn đã cho tôi xem là đủ. – Greener

+0

Bạn được chào đón :) –

2

Sử dụng getParameter(). Một thuộc tính được thiết lập và đọc nội bộ trong ứng dụng.

1

Trong mã của bạn, Kiểm tra chuỗi = "/response2.jsp?myStation=5";

Bạn đang thêm myStation = 5 làm chuỗi truy vấn. Tham số chuỗi truy vấn được lưu trữ làm tham số yêu cầu trong Đối tượng yêu cầu.

Vì vậy, bạn có thể sử dụng,

Nó hoạt động fine.Thanks.

Các vấn đề liên quan