앞에 글에서는

menuNo = 3000000,

link = forward:/​cop/​bbs/​selectBoardList.do?bbsId=BBSMSTR_AAAAAAAAAAAA

위의 정보로 

/EgovPageLink.do의 URL를 요청까지 진행을 하였다.


EgovPageLink.do URL를 요청하면 spring에서 request mapping을 이용하여 요청  URL에 해당하는 요청을 처리한다.


서블릿 매핑에 의해 *.do 요청이 오면 spring에서 요청을 처리한다.


[그림 url 패턴 설정]



그럼 자바 파일의 Annotation으로 미리 설정한 URL 매핑을 받아줄 함수를 찾아 호출한다.

@RequestMapping에 value안의 값으로 요청 URL이 오면 함수를 호출한다.

함수는 movotoPage이며 파라미터로는 앞에 설정한 link(변수 linkPage), menuNo(변수 menuNo)로 값이 들어오게 된다.


[그림 JAVA Request Mapping된 파일]



위에 moveToPage함수를 실행하고 link의 값을 리턴한다. 아무런 문제가 없다면 들어온 link의 값을 그대로 반환한다.


[그림 - link의 디버깅모드로 inspect한 변수의 값]


위 그림에서는 link의 값이 forward:/cop/bbs/selectBoardList.do?bbsId=BBSMSTR_AAAAAAAAAAAA 인것을 확인 할 수 있다.


*.do인 것을 보니 다시 request mapping 된 자바 파일을 찾을 것이라고 예측 해볼 수 있다.


포탈 사이트에 페이지가 어떻게 구성되어 있는지 확인 해보기로 했다.


포탈 사이트의 메인 화면이다.

알림마당의 공지사항에 화면이 어떻게 구성되는지. 어떠한 순서로 불리게 되는지 알아보자.



[그림 - 포탈 메인화면]


사이트 소개, 민원광장 등 각 메뉴에 마우스를 위치시키면 같은 URL에 요청하는것을 볼수 있다.


개발자 도구를 이용하여 링크가 어떻게 걸려있는지 확인 해 보았다.


[그림 - 메뉴 A 링크 개발자 도구]


각각의 메뉴는 클릭시 goMenuPage라는 자바스크립트로 연결된다. 숫자는 메뉴의 번호를 의미한다.(DB 테이블 참고)



goMenuPage 자바스크립트의 소스는 아래와 같다.


function goMenuPage(menuNo){

        document.getElementById("menuNo").value=menuNo;

        document.getElementById("link").value="forward:"+getLastLink(menuNo);

        document.menuListForm.action = "/EgovPageLink.do";

        document.menuListForm.submit();

  } 



function getLastLink(menuNo){

        var tNode = new Array;

        for (var i = 0; i < document.menuListForm.tmp_menuNm.length; i++) {

            tNode[i] = document.menuListForm.tmp_menuNm[i].value;

            var nValue = tNode[i].split("|");

            //선택된 메뉴(menuNo)의 하위 메뉴중 첫번재 메뉴의 링크정보를 리턴한다.

            if (nValue[1]==menuNo) {

                if(nValue[5]!="dir" && nValue[5]!="" && nValue[5]!="/"){

                    //링크정보가 있으면 링크정보를 리턴한다.

                    return nValue[5];

                }else{

                    //링크정보가 없으면 하위 메뉴중 첫번째 메뉴의 링크정보를 리턴한다.

                    return getLastLink(nValue[0]);

                }

            }

        }

    }




코드 설명 

 : menuNo는 전달받은 숫자('100000') 의미

 : forward라는 문자열 뒤에 getLastLink에 menuNo를 만들어 이동할 URL를 만들어온다.


참고로 Hidden으로 아래와 같이 메뉴리스트가 숫겨져 있다.



[

<input type=​"hidden" name=​"tmp_menuNm" value=​"1010000|1000000|사이트 소개|/​|/​|/​EgovPageLink.do?link=main/​sample_menu/​EgovAboutSite|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"3010000|3000000|공지사항|/​|/​|/​cop/​bbs/​selectBoardList.do?bbsId=BBSMSTR_AAAAAAAAAAAA|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"1000000|0|사이트소개|/​|/​||">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"0|0|root|/​|/​||">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"2010000|2000000|민원신청|/​|/​|/​EgovPageLink.do?link=main/​sample_menu/​EgovServiceManage|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"4010000|4000000|FAQ|/​|/​|/​uss/​olh/​faq/​FaqListInqire.do|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"1020000|1000000|연혁|/​|/​|/​EgovPageLink.do?link=main/​sample_menu/​EgovAboutSite|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"3040000|3000000|자유게시판|/​|/​|/​cop/​bbs/​selectBoardList.do?bbsId=BBSMSTR_BBBBBBBBBBBB|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"2020000|2000000|민원결과확인|/​|/​|/​EgovPageLink.do?link=main/​sample_menu/​EgovServiceResult|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"2000000|0|민원광장|/​|/​||">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"4020000|4000000|QnA|/​|/​|/​uss/​olh/​qna/​QnaListInqire.do|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"3000000|0|알림마당|/​|/​||">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"4030000|4000000|설문조사|/​|/​|/​uss/​olp/​qnn/​EgovQustnrRespondInfoManageList.do|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"1030000|1000000|조직소개|/​|/​|/​EgovPageLink.do?link=main/​sample_menu/​EgovAboutSite|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"1040000|1000000|찾아오시는 길|/​|/​|/​EgovPageLink.do?link=main/​sample_menu/​EgovAboutSite|">​

<input type=​"hidden" name=​"tmp_menuNm" value=​"4000000|0|정보마당|/​|/​||">​

] 



이후 숨겨져있는 input tag menuNo와, link에 값을 변경 설정하고 form.action에 요청할 URL까지 설정하고 submit을 통해 해당 URL를 요청한다.


예를 들어 알림마당을 클릭하면

알림마당의 menuNo : 3000000으로 goMenuPage('goMenuPage') 자바스크립트가 호출되고

3000000 의 첫번째 하위 링크인 3010000(공지사항)의 값이 설정된다.


menuNo = 3000000,

link = forward:/​cop/​bbs/​selectBoardList.do?bbsId=BBSMSTR_AAAAAAAAAAAA

위의 정보로 


/EgovPageLink.do의 URL를 요청한다.

+ Recent posts