2013년 8월 11일 일요일

[Struts, Struts2, Struts Spring, StrutsFramework, Struts MVC, Struts게시판, 스프럿츠게시판, Struts Action, Struts DAO, struts교육, struts강좌, struts2교육, struts2강좌]스트럿츠 멀티 게시판3. 로그인( 2 ) - 김길재

이번 프로젝트는 저번과 다르게 모든 액션에 대한 자바 파일을 만들지 않고

폼과 관련된 액션과 링크와 관련된 액션으로 나누어 만들어 보았습니다.


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



스트럿츠의 응용에 좋은 공부가 되었구요.

전체적으로 자바파일의 수가 줄어든다는 장점이 있구요.

그만큼 액션 파일이 복잡해지는 단점도 있었습니다. ㅡㅡ.

이런 형태는 소규모의 개발에는 맞겠지만 대규모 개발에서는

이런 형태가 되면 상당히 곤란해 질것 같습니다.

개인의 취향에 맞게 기본적인 스트럿츠의 형태를 변환해

사용한다면 효율이 더 좋아질 수 있다고 생각합니다.

저는 가독성 높은 소스를 좋아하기 때문에

담부터는 액션 : 자바 파일을 1:1로 만들어서

자파 파일이 많아지는 대신

액션 파일안의 소스를 간결하게 하는 방향으로 하려고 합니다. ^^

여러분의 취향에 맞게 응용해 보세요.

잘 이해 안되시면 쪽지 날려주시구요.

여러분의 내공 단련에 도움이 되었으면 합니다. ^^

///////// LogFormActin.java ///////////////////////////////////
/*
*                개요                :  로그인 > 폼관련 액션
*                작성일            :        2005-08-05       
*                작성자        :        김길재
*                수정자        :
*                파일명        :        /login.action.LogFormAction
*                버전                :        1.0
*                이력          :        2005-08-05 : 초기 작성
*/

package login.action;



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

import login.model.LoginForm;
import login.model.LoginDAO;
import login.model.MemberVO;
import multiboard.KKJLog;

public class LogFormAction extends Action {
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                                              HttpServletRequest request , HttpServletResponse response )
        {
                  String forward = "";
            boolean result = false;
                           
            String action = ((LoginForm)form).getAction();
           
           
            LoginDAO loginDAO = new LoginDAO();
           
            KKJLog.info( "///////////////////////////////////" );
            KKJLog.info( "///////////////////////////////////" );
            KKJLog.info( "///////////////////////////////////" );
            KKJLog.info( "LogFormAction's info" );
           
            //로그인 처리   
            if( action.equals( "login" ) )
            {
                    KKJLog.info( "action name = " + action );
                                   
                      String member_id = ((LoginForm)form).getMember_id();
                String member_password = ((LoginForm)form).getMember_password();
               
                KKJLog.info( "LogFormAction called authUser( String , String )" );
                MemberVO member = loginDAO.authUser( member_id , member_password );
               
               
                      if ( member != null )
                {
                              HttpSession session = request.getSession();
                    session.setAttribute( "member" , member);

                        forward = "login_success";
                }
                else
                {
                        forward = "login_fail";
                }
               
            }
                     
            KKJLog.info( "forward = " + forward );
            KKJLog.info( "///////////////////////////////////" );
            KKJLog.info( "///////////////////////////////////" );
            KKJLog.info( "///////////////////////////////////" );
           
            return ( mapping.findForward( forward ) );
           
                           
        }
     
}

/////////////// LogLinkAction.java ////////////////////////////////

/*
*                개요                :  로그인 > 링크 관련 액션
*                작성일            :        2005-08-05       
*                작성자        :        김길재
*                수정자        :
*                파일명        :        /login.action.LogLinkAction
*                버전                :        1.0
*                이력          :        2005-08-05 : 초기 작성
*/

package login.action;


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

import login.model.LoginDAO;
import multiboard.KKJLog;

public class LogLinkAction extends Action
{
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                                              HttpServletRequest request , HttpServletResponse response )
    {
               
        String forward = "";
        boolean result = false;
                           
        String action = request.getParameter( "action" );
           
           
        LoginDAO loginDAO = new LoginDAO();
           
        KKJLog.info( "///////////////////////////////////" );
        KKJLog.info( "///////////////////////////////////" );
        KKJLog.info( "///////////////////////////////////" );
        KKJLog.info( "LogLinkAction's info" );
           
        //로그 아웃 처리   
        if( action.equals( "logout" ) )
        {
                  KKJLog.info( "action name = " + action );
                   
                  HttpSession session = request.getSession();
            session.removeAttribute( "member" );
            forward = "logout";
        }
           
           
           
        KKJLog.info( "forward = " + forward );
        KKJLog.info( "///////////////////////////////////" );
        KKJLog.info( "///////////////////////////////////" );
        KKJLog.info( "///////////////////////////////////" );
        return ( mapping.findForward( forward ) );
           
    }
 
}


/////////////// IsAdminLogin.java ////////////////////////////
/*
*                개요                :  로그인 > 관리자 로그인 체크
*                작성일            :        2005-08-10       
*                작성자        :        김길재
*                수정자        :
*                파일명        :        /login.IsAdminLogin
*                버전                :        1.0
*                이력          :        2005-08-10 : 초기 작성
*/

package login;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import login.model.MemberVO;

public class IsAdminLogin extends TagSupport


    public int doEndTag() throws JspException
        {
        // Is there a valid user logged on?
        int member_level = 0;
        HttpSession session = pageContext.getSession();
       
        if(  session.getAttribute("member") != null )
        {
                MemberVO member = (MemberVO)session.getAttribute("member");
       
                member_level = Integer.parseInt( member.getMember_level( ) );
        }
       
        // Forward control based on the results
        if ( member_level == 1 )
            return (EVAL_PAGE);  //JSP 페이지의 다음을 수행
        else
        {
            try
                        {
                pageContext.getOut().println("<script>");
                pageContext.getOut().println("alert('관리자 로그인을 하셔야 합니다.');");
                pageContext.getOut().println("location.href="/multiboard/index.jsp"");
                pageContext.getOut().println("</script>");
               
                session.invalidate();
               
                //pageContext.forward(page);
            } catch (Exception e) {
                throw new JspException(e.toString());
            }
            return (SKIP_PAGE);  //JSP 페이지의 다음을 스킵
        }
    }
}

//////////////// IsLogin.java //////////////////////////////////
/*
*                개요                :  로그인 > 사용자 로그인 체크
*                작성일            :        2005-08-12       
*                작성자        :        김길재
*                수정자        :
*                파일명        :        /login.IsLogin
*                버전                :        1.0
*                이력          :        2005-08-12 : 초기 작성
*/

package login;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class IsLogin extends TagSupport


    public int doEndTag() throws JspException
        {
        // Is there a valid user logged on?
        int member_level = 0;
        HttpSession session = pageContext.getSession();
             
        // Forward control based on the results
        if ( session.getAttribute("member") != null )
            return (EVAL_PAGE);  //JSP 페이지의 다음을 수행
        else
        {
            try
                        {
                pageContext.getOut().println("<script>");
                pageContext.getOut().println("alert('로그인을 하셔야 합니다.');");
                pageContext.getOut().println("location.href="/multiboard/index.jsp"");
                pageContext.getOut().println("</script>");
               
                session.invalidate();
               
                //pageContext.forward(page);
            } catch (Exception e) {
                throw new JspException(e.toString());
            }
            return (SKIP_PAGE);  //JSP 페이지의 다음을 스킵
        }
    }
}

/////////////////////////// login_fail.jsp /////////////
<%
        /*
    *                개요                :  로그인  실패 처리
        *                작성일            :        2005-08-06       
        *                작성자        :        김길재
        *                수정자        :
        *                파일명        :        /login/login_fail.jsp
        *                버전                :        1.0
        *                이력          :        2005-08-06 : 초기 작성
        */
%>
<%@ page contentType="text/html;charset=euc-kr" %>

<script>
        alert( "로그인에 실패하였습니다.\n메인화면에서 다시 로그인 해주세요." );
        location.href="/multiboard/index.jsp";
</script>


//////////////// login_success.jsp ///////////////////////
<%
        /*
    *                개요                :  로그인 성공 처리
        *                작성일            :        2005-08-06       
        *                작성자        :        김길재
        *                수정자        :
        *                파일명        :        /login/login_fail.jsp
        *                버전                :        1.0
        *                이력          :        2005-08-06 : 초기 작성
        */
%>
<%@ page contentType="text/html;charset=euc-kr" %>

<%
        String refer = request.getParameter( "refer" );
%>

<script>
        alert( "로그인되었습니다." );
        location.href="<%=refer%>";
</script>

//////////////////// logout.jsp ////////////////////////
<%
        /*
    *                개요                :  로그아웃 처리
        *                작성일            :        2005-08-06       
        *                작성자        :        김길재
        *                수정자        :
        *                파일명        :        /login/logout.jsp
        *                버전                :        1.0
        *                이력          :        2005-08-06 : 초기 작성
        */
%>
<%@ page contentType="text/html;charset=euc-kr" %>

<script>
        alert( "로그아웃되었습니다." );
        location.href="/multiboard/index.jsp";
</script>



//////////////////// login.tld ////////////////////////

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE taglib  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
  "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>Application Tag Library</shortname>
  <uri>http://jakarta.apache.org/taglibs/struts-example-1.0</uri>
  <info>
    Example Application.
  </info>
  <tag>
    <name>IsAdminLogin</name>
    <tagclass>login.IsAdminLogin</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
            관리자 로그인 체크를 위한 커스텀 태그 용 TLD 파일
    </info>
  </tag>
  <tag>
    <name>IsLogin</name>
    <tagclass>login.IsLogin</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
            로그인 체크를 위한 커스텀 태그 용 TLD 파일
    </info>
  </tag>
</taglib>


댓글 없음:

댓글 쓰기