전자정부프레임워크

전자 정부프레임워크 로그인정리

멋진꿈 2011. 9. 8. 19:53

전자정부프레임워크

1.   기능별분석

      로그인 진행과정

n  egovframework 로그인 동작과정

1. /src/main/webapp/index.jsp 호출

2. /index.jsp 에있는 forward 이용하여 컨투럴러 이동 egovLoinUsr.do

3. egovLoginUsr.do

à  A.       /java/egovframework/com/uat.uia/ 해당하는 Controller 이라고 명시된파일을 찾는다.

à  B.       /java/egovframework/com/uat.uia/EgovLoginController.java 열어보면은 @RequestMapping value값이 egovLoginUsr이라는 것을 찾는다. 아래에있는 메서드를 실행하게됩니다. 로그인 관련되어서는 loginUsrView() 실행됩니다.

à  C.해당 return 값을 통해서 /WEB-INF/jsp/egovframework/comm/uat/uia/EgovLoginUsr.jsp 호출하여 출력해준다.

4. 해당 id/pw 입력하고 action 값을 통해 정의된 do 호출한다. 여기에서는 /uat/uia/actionLogin.do  부른다.

à  A.       actionLogin.do 역시 Controller 에서 @RequestMapping value 값을 찾아서실행시켜준다.

à  B.       loginService 해당하는 EgovLoginService 찾는다.

à  C.여기서 실행하고자하는 loginService.actionLogin(loginVO) 해당하는 메소드를 찾아서 실행한다.

à  D.       EgovLoginServiceImple 에있는 actionLogin 실행한다.

i.  이곳에서 .loginDAO.actionLogin(vo) 싱행하게되는데 이곳에서

ii. /src/uat/uia/service/impl/EgovLoginServiceImpl.java 찾아서 actionLogin 을실행시킨다.

iii.             loginDAO.actionLogin 실행하게되면은 LoginDAO.java 에있는 actionLogin 실행하게된다. 이곳에서 selectByPk 통해서 ibatis /resources/egovframework/sqlmap/com/uat.uia/EgovLoginUsr_SQL_Mysql.xml loginDAO.actionLogin 실행한다.

iv.              각값들이 모두 리턴되고 EgovLoginontroller 반환된다. 이값에서 resultVO 담기게 되고 이값들이

5. 정상적인 아이디라고 판단된다면?

à  A.      if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) {  Ð= TRUE

à  B.       redirect:/j_spring_security_check?j_username= 이부분실행

i.  spring security 연동 부분을 실행하게 된다. 위의 부분은 이부분에 대한정보는 /src/main/resources/egovframework/spring/content-security.xml 에서 j_spring_security_check 부분을 찾아서 실행하게되고 이부분에서 /uat/uia/actionMain.do 부분이 실행하게 된다.

ii. 이부분은 EgovLoginontroller 찾게되고 이부분이 각종 권한 처리를 하게되고

1.        EgovUserDetailsHelper.isAuthenticated 이부분을 통해서 인증된 사용자인지 체크를 하게 되고 이부분은  /sec/ram/security/userdetails/util/EgovUserDetailHelper.java에서 isAuthenticated 부분이 실행하게 되고 이부분에서 true / false 리턴하게된다.

2.        그후 각종 로그를 찍어주고 (LOG.debug Ð consol  로그찍는 기능입니다.)

3.        이부분은 cmm/EgovUnitMain 찾게됩니다. 이부분은 jsp 찾게되고

4.        WEB-INF/jsp\egovframework/cmm/EgovUnitMain.jsp 을찾아서 실행하게 됩니다.

      게시판 진행과정

2.   로그인디렉토리 구조

      iktb

n  java

egovframework.com

à  cmm

à  ems

à  sec

à  sym

à  uat.uia

service

impl

EgovLoginPolicyServiceImpl.java

EgovLoginServiceImpl.java

LoginDAO.java

LoginPolicyDAO.java

EgovLoginPolicyService.java

EgovLoginService.java

LoginPolicy.java

LoginPolicyVO.java

LoginVO.java

SessionVO.java

web

EgovLoginController.java

EgovLoginPolicyController.java

à  uss.umt

à  utl

n  resources

egovframework

à  egovProps

à  message

à  spring

context-aspect.xml

context-common.xml

context-datasource.xml

context-excel.xml

context-idgen.xml

context-properties.xml

context-security.xml

context-sqlMap.xml

context-transaction.xml

context-validator.xml

à  sqlmap

com

uat.uia

EgovLoginUsr_SQL_Mysql.xml

à  validator

log4.xml

n  src

main

à  webapp

WEB-INF

jsp

egovframework

cmm

uat

uia

EgovLoginUsr.jsp

index.jsp

3.   어노테이션 설명

      계층형 Controller들을 사용하면 여러 정보들(요청과 Controller 매핑 설정 ) XML 설정 파일에 명시 해줘야 하는데, 복잡할 아니라 설정 파일과 코드 사이를 빈번히 이동 해야하는 부담과 번거로움이 있다. @MVC Controller 코드안에 어노테이션으로 설정함으로써 편리하게 MVC 프로그래밍을 있도록 했다. @MVC에서 사용하는 주요 어노테이션은 아래와 같다.

n  @Controller

해당 클래스가 Controller임을 나타내기 위한 어노테이션

n  @RequestMapping

요청에 대해 어떤 Controller, 어떤 메소드가 처리할지를 맵핑하기 위한 어노테이션

n  @RequestParam

Controller 메소드의 파라미터와 웹요청 파라미터와 맵핑하기 위한 어노테이션

n  @ModelAttibute

Controller 메소드의 파라미터나 리턴값을 Model 객체와 바인딩하기 위한 어노테이션

n  @SessionAttributes

Model 객체를 세션에 저장하고 사용하기 위한 어노테이션

      참고사이트

n  http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:ptl:annotation-based_controller

4.   VO(value Object)?

      -     Model, View 간의 데이터 전달용도

      -     멤버변수와 getter, setter 메소드로 구성

      -     기본 jsp bean 동일

      -     파라미터가 길어질 경우 VO 이용하는 것이 효율적

      -     Entity Vo custom vo 두종류

      -     Entity vo : entity(ejb 또는 db 정보와 동일)

      -     Custom vo 사용자 필요에 의해 만든 vo

      -     자동화 도구를 사용하여 만드는 것이 편리함

5.   SPRING

      resource

n  context-aspect.xml

관점정의

à  예외 처리를 위한 Spring 설정 파일(resources/egovframework.spring/context-aspect.xml) 내에 관점(Aspect) 클래스를 빈으로 정의한 , 해당 관점(Aspect) 대한 포인트컷과 충고(Advice) 정의한다

n  context-common.xml

n  context-datasource.xml

n  context-excel.xml

n  context-idgen.xml

n  context-properties.xml

n  context-security.xml

n  context-sqlMap.xml

n  context-transaction.xml

트랜젝션 처리

n  context-validator.xml

6.   log4j

      log4j.xml

n  appender : 콘솔에 로그를 기록하

7.   jstl

      jstl 가장 핵심적인 기능을 제공하는 lib

n  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

변수 설정   삭제 태그

à  <c:set>

<c:set var="변수명" value="설정값" target="객체" property="" scope="범위">

지정된 변수에 값을 저장하는 태그

특정 property 값을 지정할 경우 target 객체표시 property 지정

à  <c:remove>

<c:remove var="변수명" scope="범위">

설정된 속성(변수, 객체) 제거

조건처리

à  <c:if>

<c:if test="조건" var="변수명" scope="범위">

à  <c:choose>

<c:choose> <c:hwen test="조건"></when><cLotherwise></otherwise></c:choose>

자바의 switch 같은 역활을 합니다.

반복처리

à  <c:foreach>

<cLforeach itmes="객체명" begin="시작인덱스" end="끝인덱스">

à  <c:fortakens>

<c:fortokens items="객체명" delims="구분자" begin="시작인덱스" end="끝인덱스" step="변수명" varStatus="상태변수">

예외처리

à  <c:catch>

<c:catch var="변수명">

예외가 발생할 경우 예외사항을 변수에 저장

예외사하응ㄹ 출력 변수 message

      jstl 가지고 할수있는일

n  간단한 프로그램 로직을 구사

n  다른 jsp 페이지 호출

n  날짜 , 시간 , 숫자의 포멧

n  jsp 페이지 하나를 가지고 여러 가지 언어의 웹페이지 생성

n  데이터베이스의 입력, 수정 삭제 조회

n  xml 문서의 처리

n  문자열을 처리하는 함수

n  각기능

코어

à  일반 프로그램이 언어에서 제공하는 것과 유사한 변수선ㅇ, 실행 흐름을 제어 기능ㅇ르 제공하고, 다른 JSP 페이지로 제어를 이동하는 기능을 제공

à  접두어 : C

포매팅

à  숫자, 날짜, 시간을 포매팅하는 기능과 국제화, 다국어 지원 기능을 제공

à  접두어: fmt

데이터베이스

à  데이터베이스의 데이터를 입력, 수정, 삭제 , 조회하는 기능을 제공

à  접두어 : sql

xml처리

à  xml 문서를 철이할 필요한 기능을 제공합니다.

à  접두어 : x

함수

à  문자열을 처리하는 함수를 제공합니다.

à  접두어 : Fn