2013년 8월 5일 월요일

[자바교육,오라클교육,자바프레임워크, 스트럿츠]Struts Action처리 후 다음 View 결정하기, 오라클자바커뮤니티

Action처리 후 다음 View 결정하기 


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의) 
 www.onjprogramming.co.kr 


Action 클래스의 execute() 메소드를 보시면 Return형이 org.apache.struts.action.ActionForward임을 알 수 있습니다. ActionForward 클래스는 execute()메소드가 종료된 후 Controller에서 제어를 넘길 곳을 지정 합니다.

또한 코드 내에서 실제 파일명을 주는 대신 ActionForward 매핑에 JSP페이지(View)를 할당하고 이 ActionForward를 웹 애플리케이션 전체에서 사용 가능 하게 할 수 있습니다.

아래는 struts-config.xml 파일 내의 ActionForward 매핑 예 입니다.

<global-forwards>
        <forward name="success" path="/main.jsp" />
        <forward name="logoff" path="/logoff.do" />
        <forward name="login" path="/login.jsp" />
    </global-forwards>

또는 어떠한 Action에서만 Actionforward를 참조하게 하기 위해서는 다음과 같이 할 수도 있습니다.

<action
        Path=”/LoginSunmit”
        Type=”login2.LoginAction”
        Scope=”request”>
        <forward name=”SUCCESS” path=”/success.jsp” redirect=”true”/>
</action>

위에서 redirect를 true로 했으므로 이 경우엔 forward가 아니라 redirection을 이용합니다.

아래는 로그인 예제의 LogoffAction.java(로그오프 Action 처리) 입니다.

package login2;

import org.apache.struts.action.Action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;

import login2.LoginForm;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class LogoffAction extends Action {       
       
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
               
                //필요한 어트리뷰트를 뽑아 냅니다.
                //LoginAction에서 사용자의 로그온개체를 Consants.USER_KEY라는 이름으로 세션에 저장
                HttpSession session = request.getSession();
                UserInfoVO userinfo = (UserInfoVO)session.getAttribute(Constants.USER_KEY);
               
                if (userinfo != null) {
                        //로그를 남기자
                        StringBuffer buf = new StringBuffer("User Logout : " + userinfo.getId());
                        servlet.log(buf.toString());                                       
                }               
               
                //사용자의 로그인을 삭제, session.invaidate() 의 경우 션의 모든 것을 무효화 시킴.
                session.removeAttribute(Constants.USER_KEY);
               
                //성공적으로 처리 되었음을 알림
                return (mapping.findForward(Constants.SUCCESS));
               
        }

       

댓글 없음:

댓글 쓰기