Tôi đã sử dụng khung công tác Struts 2 và tôi đã tạo một ứng dụng web có Trang Đăng nhập. Tôi có ba lớp khác nhau Action
có tên là Action1
, Action2
, Action3
và các chế độ xem khác nhau cho các trang JSP được hiển thị bằng cách chạy một số logic nghiệp vụ trong các lớp học Action
.struts2 thêm các trình chặn trong struts.xml cho tất cả các lớp hành động
Bây giờ, tôi muốn kiểm tra xem một người dùng đã đăng nhập trước khi lớp học Action
tiến hành xử lý. Vì vậy, tôi tạo ra một kẻ đánh chặn dưới đây hoạt động tốt.
public String intercept(ActionInvocation invocation) throws Exception
{
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
if(session.isNew())
{
response.sendRedirect("Login.action");
}
System.out.println("Interceptor Fired");
String result = invocation.invoke();
return result;
}
Những gì tôi muốn ở struts.xml
là thay vì thêm một đánh chặn cho tất cả các hành động như hình dưới đây
<interceptor-ref name="newStack"/>
tập tin struts.xml
tôi có
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="printMsgInterceptor" class="LoginInterceptor"></interceptor>
<interceptor-stack name="newStack">
<interceptor-ref name="printMsgInterceptor"/>
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<action name="actone" class="Action1">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
<action name="acttwo" class="Action2">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
<action name="actthree" class="Action3">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
</package>
Đối với mỗi hành động tôi muốn có một số định nghĩa được viết trong struts.xml
chạy trình chặn chặn thay vì tự thêm
<interceptor-ref name="newStack"/>
Cảm ơn bạn đã trả lời Nó hoạt động gr8 Tôi không muốn máy đánh chặn này chỉ có một trang là Trang đăng nhập vì nó là kết quả của vòng lặp chuyển hướng. Có cách nào để tránh kẻ đánh chặn cho một lớp hành động cụ thể –
Hoặc bạn có thể xác định đánh chặn ngăn xếp cho một gói cụ thể và mỗi gói mở rộng nó sẽ sử dụng ngăn xếp mặc định của nó.Các hành động khác không nên bị chặn (chẳng hạn như Đăng nhập) có thể được định nghĩa trong các gói khác không mở rộng gói mà bạn đã xác định ngăn xếp mặc định chặn –