Tôi có một câu hỏi cơ bản trong struts tại sao chúng ta cần phải có <global-forwards>
và <global-exceptions>
trong struts-config.xml. Nếu chúng ta có thể đạt được những điều tương tự với số <action-mappings>
.Tại sao chúng ta cần các ngoại lệ toàn cầu và ngoại lệ trong thanh chống?
Trả lời
<global-forwards>
Cân nhắc bạn xác nhận mật khẩu tên người dùng cho các url khác nhau như update.do, insert.do delete.do vv Nếu đó là một người dùng hợp lệ bạn cần phải tiến hành các neccesary action.if không mong muốn được đăng nhập page.See ánh xạ dưới đây
<action-mappings>
<action path="/insert" type="controller.Insert">
<forward name="success" path="/insert.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>
<action path="/update" type="controller.Update">
<forward name="success" path="/update.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>
<action path="/delete" type="controller.Delete">
<forward name="success" path="/delete.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>
</action-mappings>
Thay vì lặp lại những <forward name="failure" path="/login.jsp"/>
bạn có thể tuyên bố này trong <global-forwards>
như dưới đây
<global-forwards>
<forward name="failure" path="/login.jsp"/>
</global-forwards>
Bây giờ bạn có thể Remo đã đặt <forward name="failure" path="/login.jsp"/>
trong ánh xạ hành động.
<global-exceptions>
Nếu bạn nhận được java.Io ngoại lệ thay vì xử lý thủ công cho mỗi bạn có thể khai báo trên toàn cầu như dưới đây.
<global-exceptions>
<exception type="java.io.IOException" path="/pages/error.jsp"/>
</global-exceptions>
Tôi hy vọng điều này sẽ làm rõ vấn đề của bạn.
Nếu bạn đang nói về Struts 1, global-exceptions
là ExceptionHandlers
giao dịch với một số Exception
cho tất cả các hành động, vì vậy bạn không phải khai báo mỗi hành động và tránh trùng lặp.
Global-forwards
có cùng ý tưởng. Nếu bạn có tiền đạo với cùng một đường dẫn trong các hành động khác nhau, bạn có thể tránh trùng lặp bằng cách tuyên bố chỉ một global-forward
và tất cả các hành động có thể sử dụng nó. Với global-forwards
, bạn cũng có thể tránh các URL được mã hóa cứng trong jsps của mình, ví dụ: bạn có thể khai báo toàn cục về phía trước như <forward name="loginLink" path="/login" />
và sau đó trong jsp <html:link forward="loginLink">Login</html:link>
.
Cảm ơn lời giải thích của người đàn ông rất tốt nhưng thấy nó rất dài. – user1900662
cảm ơn lời giải thích, – Apache
cảm ơn vì đã giải thích, giả sử nếu có trang lỗi HTTP 500 và cần chuyển tiếp lại trang đăng nhập, action-mappings>, làm thế nào điều này có thể được thực hiện, nhờ –
Apache