출처 : http://blog.naver.com/skywood1/220330131740


전자정부 프레임워크 3.2 공통 콤포넌트

URL : http://www.egovframe.go.kr/ (전자정부프레임워크)


​전자정부프레임워크를 이해하려면 예제를 한번 돌려보는 것이 중요하다. 위의 사이트에서 공통 콤포넌트를 다운받아서 설치해보자.

필요한 것은 포기하지 않는 근성이다.


0. 설치 관련


- new -> eGovFrame Web Project로 이름과 group id를 입력하고 finish를 한다.
- import의 Archive File을 선택하여 해당 zip파일을 선택해주면 자동으로 등록이 된다.

- DB script는 (/src/script/) 해당 DB에 ddl, dml을 사용하여 테이블과 기본 정보들을 생성한다.
- 해당 전자정부 공통프레임워크에 설정정보를 참고하여 인증과 sms관련 설정을 pom.xml파일에 해준다.



인증서 로그인 컴포넌트는 행정전자서명 인증관리센터에서 제공하는 표준보안 API를 사용합니다.


1. GPKI 라이브러리를 사용하실 경우

 - 행정전자서명 인증관리센터에 공무원이 직접 신청하여 라이브러리를 제공받아야 합니다.

   (GPKI서비스관련 URL : http://www.gpki.go.kr)

 - 제공받은 라이브러리를 다음 경로에(\src\main\webapp\WEB-INF\lib) GPKI 라이브러리를 넣으시면 오류없이 사용이 가능합니다.

 

2. GPKI 라이브러리를 사용하지 않으실 경우


 - 아래의 안내에 따라 조치하시면 오류를 제거하실 수 있습니다.


============================================================================================

2-1.pom.xml 파일에 주석처리(pom.xml 파일 참조 : GPKI 관련 dependency 2종)


**************** pom.xml ****************

 <!-- GPKI인증서 로그인처리 라이브러리 -->

 <dependency>

  <groupId>kr.go.gpki</groupId>

  <artifactId>gpkisecureweb</artifactId>

  <version>1.0.4.9</version>

  <scope>system</scope>

  <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/gpkisecureweb-1.0.4.9.jar</systemPath>

 </dependency>

 <dependency>

  <groupId>kr.go.gpki</groupId>

  <artifactId>libgpkiapi_jni</artifactId>

  <version>1.4.0.0</version>

  <scope>system</scope>

  <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/libgpkiapi_jni-1.4.0.0.jar</systemPath>

 </dependency>

*****************************************


2-2. 관련 파일 삭제

* GPKI 인증서

src/main/java/egovframework/com/sec/pki/service/impl/EgovGPKIServiceImpl.java

src/main/java/egovframework/com/utl/sec/service/EgovCertInfoUtil.java

src/main/java/egovframework/com/utl/sec/web/EgovCertLoginController.java


3. SMS 라이브러리를 사용하실 경우

- 모바일 전자정부 M-gov(http://www.mgov.go.kr)에서 공무원이 직접 신청하여 라이브러리를 제공받아야 합니다.

- 제공받은 라이브러리를 다음 경로에(\src\main\webapp\WEB-INF\lib) SMSI 라이브러리를 넣으시면 오류없이 사용이 가능합니다.


4. SMS 라이브러리를 사용하지 않으실 경우

 - 아래의 안내에 따라 조치하시면 오류를 제거하실 수 있습니다.

============================================================================================

4-1.pom.xml 파일에 주석처리(pom.xml 파일 참조 : SMSI 관련 dependency 1종)

        <!--  M-Gov (SMS Service API) -->

        <dependency>

            <groupId>kr.go.mgov</groupId>

            <artifactId>smeapi</artifactId>

            <version>2.7</version>

            <scope>system</scope>

            <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/smeapi_2_7.jar</systemPath>

        </dependency>

*****************************************

4-2. 관련 파일 삭제

* SMS 컴포넌트

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsBasicReceiver.java

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsBasicServiceImpl.java

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsInfoReceiver.java

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsInfoSender.java

src/main/java/egovframework/com/cop/sms/service/impl/EgovSmsInfoServiceImpl.java

src/main/java/egovframework/com/cop/sms/web/EgovSmsInfoController.java

src/main/resources/egovframework/spring/com/context-scheduling-cop-sms.xml

* 서버자원모니터링 컴포넌트

src/main/java/egovframework/com/utl/sys/srm/service/EgovServerResrceMntrngScheduling.java

src/main/resources/egovframework/spring/com/context-scheduling-utl-sys-srm.xml


- DB 정보를 설정해준다. (JDBC)

  pom.xml의 DB 설정

        <!-- oracle 10g driver -->
        <dependency>
            <groupId>ojdbc</groupId>
            <artifactId>ojdbc</artifactId>
            <version>14</version>
            <scope>system</scope>
            <systemPath>D:\oracle\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar</systemPath>
        </dependency>


* 많은 에러를 보더라도 절대 굴복하지 말고 Google을 참고해서 해결하세요.


공통 컴포넌트는 데이터베이스 설정을 하는 spring context xml(dataSources)파일을 외부 properties파일에서 로드합니다.

/src/main/resources/egovframework/egovProps/globals.properties


Globals.DbType = oracle

Globals.DriverClassName=oracle.jdbc.driver.OracleDriver
Globals.Url=jdbc:oracle:thin:@127.0.0.1:1521:orcl

Globals.UserName = userid
Globals.Password = pass

* 설정시 필요사항


run-jetty-run 설치​

help->eclipse market place에서 jetty로 검색하여 install한다.

tomcat native library 설치

doc : http://tomcat.apache.org/tomcat-7.0-doc/apr.html 

login 정보

- 공통 콤포넌트 사용시

분류/id/pass : 업무/TEST1/공통12 ( 설치가 완료하여 웹페이지가 뜰 경우의 기본 로그인 정보이다 )


- simple homepage 사용시

* DB생성 및 데이터 생성은 DATABASE/all_sht_data_oracle.sql, DATABASE/all_sht_ddl_oracle로 생성하자.

id/pass : admin / 1

2. 포함된 라이브러리


- 기본
oauth : spring-social-facebook-web 1.1.1, spring-social-twitter 1.1.0, httpclient 4.3.4, commons-logging, h2 1.4.180
WYSIWYG Editor : ckeditor-java-core 3.5.3
fileupload : commons-fileupload 1.3.1


- DB

mysql : mysql-connector-java 5.1.31
ojdbc : ojdbc 14
altibase
tibero
cubrid


- WEB 개발시 필요
게시판 생성시 사용 TokenStream : antlr 3.5
우편번호를 위한 라이브러리 : oro 2.0.8
요소기술 달력을 위한 라이브러리 : icu4j 53.1


- PROTOCOL
FTP용 3rd party 라이브러리 : commons-net 3.3
Email : commons-email 1.3.2, sndng-mail 1.0


- 서비스 연동
WebSocket Messenger : javax.websocket-api 1.0, javax.json 1.0.4
facebook 연동시 추가 : spring-social-security 1.1.0, spring-security-web
Twitter : twitter4j-core 4.0.2


- 문서
PDF변환용 라이브러리 : jodconverter 2.2.1, slf4j-api, commons-io


- 기타
xmlParserAPI : batik-ext 1.7
XML스키마를 자바클래스로 생성하는 라이브러리 : xbean 2.2.0
Cross-Site Scripting : ldapsdk 4.1
LDAP조직도관리 관련 라이브러리 : spring-ldap-core 2.0.2
M-Gov (SMS Service API) : smeapi 2.7
GPKI인증서 로그인처리 라이브러리 : gpkisecureweb 1.0.4.9, libgpkiapi_jni 1.4.0.0
Ajax : ajaxtags-resources 1.5.7


3. 공통콤포넌트에서 구현된 서비스 기능


포털(예제) 메인화면
 
1. 포털(예제) 메인화면 


사용자디렉토리/통합인증
 
10. 로그인 
30. 로그인정책관리 


보안
 
60. 권한관리 
70. 권한그룹관리 
80. 그룹관리 
90. 롤관리 
100. 부서권한관리 


통계/리포팅
 
120. 게시물통계 
130. 사용자통계 
140. 접속통계 
150. 화면통계 
160. 보고서통계 
161. 자료이용현황통계 


협업
 
180. 게시판속성관리 
190. 게시판사용정보 
200. 템플릿관리 
250. 스크랩 목록 
270. 커뮤니티관리 
320. 부서일정관리 
330. 일정관리 
340. 일지관리 
350. 전체일정관리 
360. 메일발송 
361. 발송메일내역 
370. 명함관리 
371. 내명함목록 
380. 주소록관리 
390. 간부일정관리 
400. 부서업무함관리 
401. 부서업무정보 
410. 주간/월간보고관리 
420. 메모할일관리 
430. 메모보고 


사용자지원
 
450. 기업회원관리 
460. 업무사용자관리 
461. 부서관리 
470. 일반회원관리 
480. 마이페이지관리 
490. 약관관리 
500. 저작권보호정책 
510. 개인정보보호정책확인 
520. 도움말 
530. 용어사전 
540. FAQ관리 
550. Q&A관리 
551. Q&A답변관리 
560. 행정전문용어사전 
561. 행정전문용어사전관리 
570. 온라인매뉴얼 
571. 사용자온라인매뉴얼 
580. 상담관리 
581. 상담답변관리 
590. 설문관리 
600. 설문조사 
610. 설문템플릿관리 
620. 응답자관리 
630. 질문관리 
640. 항목관리 
650. 회의관리 
660. 온라인poll관리 
661. 온라인poll참여 
670. 뉴스관리 
680. 사이트관리 
700. 추천사이트관리 
710. 행사/이벤트/캠페인 
711. 외부인사정보 
720. 팝업창관리 
730. 정보알림이 
740. 배너관리 
741. MYPAGE배너관리 
750. 로그인화면이미지관리 
760. 최근검색어 조회 
770. 메인이미지관리 
771. 메인이미지 반영결과보기 
780. 통합링크관리 
790. 사용자부재관리 
800. 인터넷서비스안내및관리 
810. Wiki기능 
820. RSS태그관리 
822. RSS태그서비스 
830. Twitter연동 
831. Facebook 연동 
840. 쪽지관리 
850. 받은쪽지함관리 
860. 보낸쪽지함관리 
870. 회의실관리 
871. 회의실예약관리 
890. 직원경조사관리 
891. 직원경조사승인관리 
900. 휴가관리 
901. 휴가승인관리 
902. 개인연차관리 
910. 당직관리 
911. 당직체크관리 
920. 포상관리 
921. 포상승인관리 
930. 기념일관리 
931. 기념일목록(메인화면용) 
940. 행사신청관리 
941. 행사접수관리 
942. 행사접수승인관리 
943. 약도 관리 
950. 출퇴근관리 


시스템관리
 
960. 공통분류코드 
970. 공통상세코드 
980. 공통코드 
1000. 우편번호관리 
1010. 행정코드관리 
1020. 기관코드수신 
1030. 로그관리 
1040. 사용로그관리 
1050. 송/수신로그관리 
1060. 시스템이력관리 
1070. 웹로그관리 
1080. 접속로그관리 
1085. 개인정보조회로그관리 
1090. 메뉴리스트관리 
1091. 메뉴관리리스트 
1100. 메뉴생성관리 
1101. 사이트맵 
1110. 바로가기메뉴관리 
1111. 프로그램관리 
1112. 프로그램변경요청관리 
1113. 프로그램변경요청처리 
1114. 프로그램변경이력 
1120. 배치작업관리 
1130. 배치결과관리 
1140. 스케줄처리 
1150. 백업관리 
1151. 백업결과관리 
1160. 네트워크관리 
1170. 서버정보관리 
1171. 서버(S/W)목록 
1180. 장애신청관리 
1190. 장애처리결과관리 


시스템/서비스연계
 
1210. 시스템연계관리 
1220. 연계현황관리 
1230. 연계메시지관리 
1240. 연계기관관리 


디지털 자산 관리
 
1250. 개인지식관리 
1260. 지식맵관리(유형) 
1261. 지식맵관리(조직) 
1270. 지식전문가관리 
1280. 지식정보관리 
1290. 지식평가관리 
1291. 지식정보제공 


요소기술
 
1300. 공휴일관리(달력) 
2080. 송수신모니터링 
2090. DB서비스모니터링 
2100. HTTP서비스모니터링 
2110. 프로세스모니터링 
2120. 네트워크서비스모니터링 
2130. 파일시스템모니터링 
2140. 프록시서비스 
2150. 파일동기화(대상서버) 
2160. 로그인세션정보체크 
2170. 서버자원모니터링-대상목록 
2180. 주소정보연계 


외부 추가 컴포넌트
 
3000. JFile 가이드 
3010. JFile 파일 업로드 
3020. JFile 파일 다운로드 
3100. LDAP 조직도 트리 
3110. LDAP 조직도 그래프 
3200. 웹소켓 메신저 


출처 : http://blog.naver.com/skywood1/220330131740

'프로그래밍 > JAVA' 카테고리의 다른 글

자바 정규식 표현 정리  (0) 2012.08.31
indexOf와 startwith 의 차이  (0) 2012.08.13
HashMap, HashTable의 비교  (0) 2012.08.13
정규식을 위한 특수문자 예약어 및 의미
^ : 문자열 처음 ex) ^a : 문자열 처음이 a로 시작함 $ : 문자열 끝 ex) a$ : 문자열 끝이 a로 끝남 + : 앞 글자가 1개 이상 존재함 ex) a+ : a라는 글자가 1개 이상이다. * : 앞 글자가 0개 이상 존재함 ex) a* : a라는 글자가 없거나 반복된다. ? : 앞 글자가 없거나 1개 존재 ex) a? : a라는 글자가 없거나 1개만 있다. . : 모든 글자 {} : 반복횟수 ex) a{3} : a라는 글자가 3번 반복됨. a{3,5} : a가 3번 이상 5번 이하 반복된 경우를 나타낸다.

a{3,}이면 a가 3번 이상 반복인 경우를 말한다. [] : 문자열 그룹 ex) [abc] : a or b or c 문자 , 범위는 [a-zA-Z0-9] 와 같이 -기호로 표시

[^abc] : 해당 문자들을 제외함(not)
( ) : 소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 인식. 

ex)  ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면  ‘guggggle' 문자열이 문자열에 포함되어 있어야 한다. | : (쉬프트 역슬래시) 패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' 는 hi 나 hello 가 포함      있는 문자열을 의미
\w : 알파벳이나 숫자 \W : 알파벳이나 숫자를 제외한 문자 \d : 숫자 [0-9]와 동일 \D : 숫자를 제외한 모든 문자 \: 위의 각 기능에서 벗어난다(escape). (?i): 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이))

예제

1. 문자열에서 [ , ] 문자들을 찾아 제거하라

'[' , ']' 는 예약어이므로 예약어가 아닌 문자라는 의미로 '\[' 로 표기해야 한다.

하지만, 문자열내의 '\'는 다시 특수문자 예약어이기에 '\\[' 로 적어줘야 정상적이 표시가 이루어진다.

String value = "[test]";

String result = value.replaceAll( "[\\[\\]]", "");

2. < > 으로 쌓여진 문자열이 포함되는지 확인하라

<,> 는 별도의 정규식 예약어가 아니다. < 로 시작하고, >로 끊나는 문자열 들을 찾으면 된다.

<+ : < 문자가 1개 이상이어야 함.

>+ : > 문자가 1개 이상이어야 함.

[a-zA-Z]* : 알파벳(대/소)만을 가지며 그 수는 제한없음.

if( value.matches("<+[a-zA-Z]*>+") ) {


}
기본적인 문자열 검증 정규식 ^[0-9]*$ : 숫자만 ^[a-zA-Z]*$ : 영문자만 ^[가-힣]*$ : 한글만 ^[a-zA-Z0-9]*$ : 영어/숫자만 .+ : 한문자 이상의 전체문자를 표시한다. 

정규식 표현 예제 이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$ or ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$ 휴대폰 : ^01(?:01[6-9]) - (?:\d{3}\d{4}) - \d{4}$ 일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$ 주민등록번호 : \d{6} \- [1-4]\d{6} IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) 파일확장자: ([^\s]+(\.(?i)(jpg|png|gif|bmp))$)
클래스 사용 예. A typical invocation sequence is thus Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); boolean b = Pattern.matches("a*b", "aaaaab");
참고 사이트 자바, javascript, oracle 정규식: http://litlhope.springnote.com/pages/1786498 자바 정규식 간단 설명: http://twinstarbox.tistory.com/entry/Java-%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80 URL 정규식으로 분리하기: http://goodidea.tistory.com/86

[출처] http://blog.naver.com/beabeak?Redirect=Log&logNo=50126941465 에서 수정 및 추가함

- 회사에 적용한 방법 <o:*> 로 시작하는 태그들  삭제(내용은 살려둠)

final Pattern HTML_VOS = Pattern.compile("\\<O:.*?\\>", Pattern.CASE_INSENSITIVE);

final Pattern HTML_VOS = Pattern.compile("\\</O:.*?\\>", Pattern.CASE_INSENSITIVE);


'프로그래밍 > JAVA' 카테고리의 다른 글

전자정부 프레임워크 3.2 공통 콤포넌트  (2) 2016.11.21
indexOf와 startwith 의 차이  (0) 2012.08.13
HashMap, HashTable의 비교  (0) 2012.08.13

indexOf는 문자열을 포함하는지 여부를 확인하여

있으면 위치를 int형으로 반환하고,

없으면 -1을 반환합니다.

   String[] sArry = new String[]{"a","b","c"};

   for(int i = 0 ; i < sArry.length ; i++){

      if(sArry[i].indexOf("a") == -1) 

      // sArry[i]에 a라는 값이 존재하지 않는다면

   }

 

startsWith는 문자열로 시작하는 지의 여부를

boolean형으로 반환합니다.

   String a = "aaa";
   System.out.println( a.startsWith("a") );

라고 하면 아마도 true가 리턴..(a로 시작이 되지 않는다면 false가 리턴.)

'프로그래밍 > JAVA' 카테고리의 다른 글

전자정부 프레임워크 3.2 공통 콤포넌트  (2) 2016.11.21
자바 정규식 표현 정리  (0) 2012.08.31
HashMap, HashTable의 비교  (0) 2012.08.13

1. HashMap 

        1) Map interface를 implements 한 클래스로 중복 허용 안함.

        2) key, value 쌍으로 이루어지며 null 허용

        3) 가장 처음 넣은 데이터가 index 0 (FIFO : First in First out)

 

import  java.util.HashMap;

import  java.util.Iterator;

 

HashMap  hashmap = new HashMap();

 

hashmap.put("a", "2");

hashmap.put("b", "3");

 

//방법1

Iterator  iter =  hashmap.keySet().iterator();

while( iter.hasNext()) {

        String  key = (String) iter.next();

        Object value = hashmap.get(key);

}

 

//방법2

java.util.Set  keySet = hashmap.keySet();

Object[] hashKeys = keyset.toArray();

 

for int i = 0; i < hashKeys.length; i++) {

         String key = (String)hashKeys[i];

         Object value = hashmap.get(key);

}

 

 

 

 

2. HashTable

         1) Map interface를 implements 한 클래스로 중복 허용 안함.

         2) key, value 쌍으로 이루어지며 null 허용 안함.

         3) 가장 마지막에 넣은 데이터가 index 0 (FILO : Fitst in Last out)

 

import  java.util.Hashtable;

 

Hashtable  hashTable  =  new Hashtable();

 

hashTable.put("a", "2");

hashTable.put("c". "5");

 

//방법1

Iterator  iter =  hashTable.keySet().iterator();

while( iter.hasNext()) {

        String  key = (String) iter.next();

        Object value = hashTable.get(key);

}

 

//방법2

java.util.Set  keySet = hashTable.keySet();

Object[] hashKeys = keyset.toArray();

 

for int i = 0; i < hashKeys.length; i++) {

         String key = (String)hashKeys[i];

         Object value = hashTable.get(key);

}

'프로그래밍 > JAVA' 카테고리의 다른 글

전자정부 프레임워크 3.2 공통 콤포넌트  (2) 2016.11.21
자바 정규식 표현 정리  (0) 2012.08.31
indexOf와 startwith 의 차이  (0) 2012.08.13

+ Recent posts