2012-03-17 41 views
8

Tôi có một EditEvent tên Servlet và một JSP chứa hai biểu mẫu. Một để thêm sự kiện mới, Một sự kiện khác là xóa sự kiện.Servlet xử lý nhiều yêu cầu đăng bài

Có được coi là thực hành tốt để sử dụng hai servlet riêng biệt để xử lý một JSP không? Nếu không, bạn sẽ xử lý hai yêu cầu bài đăng từ một servlet như thế nào? tức là Thêm sự kiện và xóa yêu cầu sự kiện.

cổ vũ

Trả lời

10

Để xử lý nhiều yêu cầu bởi cùng một servlet bạn phải ký hợp đồng có tham số yêu cầu như 'ACTION'. Sau đó, trong biểu mẫu của bạn, hãy thêm trường này dưới dạng trường ẩn với các giá trị như 'ADD' và 'REMOVE'. Vì vậy, trong doPost() bạn có thể kiểm tra giá trị tham số này và có thể gọi các phương thức xử lý tương ứng trong cùng một servlet.

class YourServlet extends HttpServlet{ 

     public void doPost(HttpReq req, HttpResp resp){ 
       String action = reg.getParameter('ACTION'); 
       if('ADD'.equals(action)){ 
        addEvent(); 
       } 
       if('REMOVE'.equals(action)){ 
        removeEvent() 
       } else { 
        defaultAction(); 
       } 
     } 

} 
+0

Ý tưởng thông minh về việc sử dụng trường ẩn. –

+2

Trường ẩn là không cần thiết. Chỉ cần sử dụng tên của nút nhấn. Tôi nghĩ rằng nó là hiển nhiên/tầm thường, nhưng dường như không, vì vậy tôi đã chỉnh sửa câu trả lời của mình bằng một ví dụ về HTML. – BalusC

9

Đó là tất cả sự lựa chọn của bạn. Nó phụ thuộc vào tất cả các yêu cầu chức năng hiện tại và tương lai. Một sự thay thế đơn giản là chỉ cần giới thiệu một hoặc hai if khối trong servlet trong đó bạn kiểm tra nút mà là được ép:

if (request.getParameter("add") != null) { 
    // Perform add. 
} 
else if (request.getParameter("remove") != null) { 
    // Perform remove. 
} 

giả định rằng các nút giống như thế này:

<input type="submit" name="add" value="Add" /> 
<input type="submit" name="remove" value="Remove" /> 

Một lựa chọn phức tạp là để chuyển sang một khung MVC bình thường, nơi bạn chỉ cần xác định các phương thức hành động cụ thể. Ví dụ: JSF:

<h:commandButton value="Add" action="#{bean.add}" /> 
<h:commandButton value="Remove" action="#{bean.remove}" /> 
Các vấn đề liên quan