일모도원(日暮途遠) 개발자
[표준프레임워크 맥] 공통컴포넌트 본문
표준프레임워크에는 로그인, 게시판등 공통으로 사용되는 기능들을 공통컴포넌트로 만들어두었다.
난 혼자 여기저기 소스들 덕지덕지 붙여가면서 만들었는데, 공통컴포넌트공부해서 이걸로 내서버를 업데이트 해야겠다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.10:init
공통컴포넌트 시작하기(Getting Started)
일단 공통컴포넌트를 다운받아보자.
다운로드 - 공통컴포넌트 - 다운로드 - 공통컴포넌트 3.10.0 all-in-one 배포파일을 선택하자.
https://www.egovframe.go.kr/home/sub.do?menuNo=49
zip 파일을 다운로드 받는다.
다운받은 후 압축을 풀어보자. (이클립스 프로젝트와 같은 포맷이다)
공통컴포넌트를 사용할 샘플 웹프로젝트를 만들어보자
Project name을 all-in-one으로 하고 Group Id를 적는다.
근데 여기서는 Target Runtime과 Dynamic web module도 3.1을 선택하고 version도 3.10.0으로 하라고 하네.
난 Apache Tomcat v8.5만 설치했기 때문에 8.5로 선택했다.
샘플 프로젝트를 파인더로 열어보자.
위에서 다운받아 압축을 푼 폴더와 파일들을 샘플 프로젝트에 덮어 씌우자.
프로젝트를 리프레쉬 해보자.
그럼 왼쪽처럼 빈 프로젝트가 오른쪽 처럼 갱신되면서 파일들이 추가된걸 볼수 있다.
이제 maven install을 해보자.
(근데 정확히 뭘 하는거지? 공통컴포넌트를 어떤 방법으로 인스톨한다는건가?)
우측 하단을 보면 이런씩으로 install하는 진행현황을 볼수 있다.
Run on Server를 할때 아래와 같은 에러가 나면 mysql세팅을 해주자. (이건 각자의 mysql세팅에 따라 다르다)
.factory.BeanCreationException:~~~~~(Access denied for user 'com'@'localhost' (using password: YES))
src/main/resources > egovframework > egovProps > globals.properties
<globals.properties 이전>
# DB서버 타입(mysql, oracle, altibase, tibero, cubrid, maria, postgres) - datasource 및 sqlMap 파일 지정에 사용됨
Globals.DbType = mysql
# KISA 검증 (2019년 11월) - 중요정보 암호화
# Globals.mysql.Password 는 com01 을 암호화한 것으로 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:crypto_simplify_v3_8 참조할 것
# Globals.mysql.Password = com01 처럼 평문을 사용하려면 context-crypto.xml 에서 initial="false" crypto="false" 로 설정하고,
# context-datasource.xml 에서 <property name="password" value="${Globals.mysql.Password}"/> 로 바꾸어 주어야 함
#mysql
Globals.mysql.DriverClassName=net.sf.log4jdbc.DriverSpy
Globals.mysql.Url=jdbc:log4jdbc:mysql://127.0.0.1:3306/com
Globals.mysql.UserName = com
Globals.mysql.Password = xz4fmrSdr1vGGl6UtwPLwA%3D%3D
자세히 보면 비밀번호를 암호화해서 넣었다고 나온다. (xz4fmrSdr1vGGl6UtwPLwA%3D%3D)
context-datasource.xml을 보자.
username은 globals.properties파일의 ${Globals.mysql.UserName} 에서 값을 가져오지만
password는 #{egovEnvCryptoService.getPassword() 에서 값을 가져온다. 즉 암호화된 값을 가져온다는 것이다.
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${Globals.mysql.DriverClassName}"/>
<property name="url" value="${Globals.mysql.Url}" />
<property name="username" value="${Globals.mysql.UserName}"/>
<!-- 암호화(Crypto) 관련 서비스 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:crypto_simplify_v3_8 참조 -->
<property name="password" value="#{egovEnvCryptoService.getPassword()}"/>
</bean>
context-crypto.xml을 보자.
initial="true"
crypto="true"
위 두 옵션이 암호화를 사용하겠다고 하는것이다.
<egov-crypto:config id="egovCryptoConfig"
initial="true"
crypto="true"
algorithm="SHA-256"
algorithmKey="egovframe"
algorithmKeyHash="gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ="
cryptoBlockSize="1024"
cryptoPropertyLocation="classpath:/egovframework/egovProps/globals.properties"
/>
나는 아직 공부가 덜 되었으므로 일단은 암호화를 안하고 사용해보자.
# Globals.mysql.Password = com01 처럼 평문을 사용하려면 context-crypto.xml 에서 initial="false" crypto="false" 로 설정하고,
<egov-crypto:config id="egovCryptoConfig"
initial="false"
crypto="false"
algorithm="SHA-256"
algorithmKey="egovframe"
algorithmKeyHash="gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ="
cryptoBlockSize="1024"
cryptoPropertyLocation="classpath:/egovframework/egovProps/globals.properties"
/>
# context-datasource.xml 에서 <property name="password" value="${Globals.mysql.Password}"/> 로 바꾸어 주어야 함
<!-- MySQL -->
<beans profile="mysql">
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${Globals.mysql.DriverClassName}"/>
<property name="url" value="${Globals.mysql.Url}" />
<property name="username" value="${Globals.mysql.UserName}"/>
<!-- 암호화(Crypto) 관련 서비스 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:crypto_simplify_v3_8 참조 -->
<!-- <property name="password" value="#{egovEnvCryptoService.getPassword()}"/> -->
<property name="password" value="${Globals.mysql.Password}"/>
</bean>
</beans>
<globals.properties 이후> 이는 본인의 mysql설정에 따라서 다르다.
Globals.mysql.DriverClassName=com.mysql.jdbc.Driver
Globals.mysql.Url=jdbc:mysql://localhost:3306/egov1
Globals.mysql.UserName =본인의 계정
Globals.mysql.Password =본인의 암호화 되지 않은 암호)
그리고 관련 테이블과 데이타를 mysql에 생성하는것도 잊지 말자.
com_DDL_mysql.sql
com_DML_mysql.sql
maven 인스톨을 안하고 Run on Server를 하면 아래처럼 나오지만
maven install하고 mysql설정을 제대로 해주면 아래처럼 화면이 나온다.
환경설정 부분은 여기를 참고하자.
'스프링 > 표준프레임워크' 카테고리의 다른 글
[표준프레임워크 맥 3.10] 공통컴포넌트 환경설정 (0) | 2022.06.05 |
---|---|
[표준프레임워크 맥] 샘플 웹싸이트 (경량환경 템플릿) (0) | 2022.06.04 |
[표준프레임워크 맥] 표준프레임워크용 이클립스 설치하기 (0) | 2022.06.04 |