一、只有登錄才能顯示的頁面
這是一個很平常的問題,在訪問某些網頁的時候,只有登錄纔可以訪問,以此保證安全。
實現原理也很簡單,就是將一個屬性設置在session中。在訪問的時候進行判斷即可。
例:request.getSession().setAttribute(“user”, username);
這樣就可以根據session進行判斷了
1.MustLoginAction.java
package com;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class MustLoginAction extends Action {
?@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if(request.getSession().getAttribute("user") == null) {
return mapping.findForward("login");
}
return mapping.findForward("success");
}
}
在轉向時,如果沒有做重定向,瀏覽器地址欄顯示的地址會是“.do”的形式,如果要避免這種情況發生,則需要在struts-config.xml中的forward配置裏做重定向。
例:
?
二、動態ActionForward
如果需要做很多轉向,那麼會在struts-config.xml裏配置很多的forward,這樣就會比較麻煩。爲了防止這種情況的發生,需要使用動態的ActionForward。
1.DynaActionForwardTestAction.java
package com;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class DynaActionForwardTestAction extends Action {
?@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionForward af = new ActionForward();
af.setPath("/page"+request.getParameter("page")+".jsp");
return af;
}
}
這個action在做轉向的時候就使用了動態ActionForward