ActionForward

一、只有登錄才能顯示的頁面

這是一個很平常的問題,在訪問某些網頁的時候,只有登錄纔可以訪問,以此保證安全。

實現原理也很簡單,就是將一個屬性設置在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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章