728x90

첫 화면은 index.do 이다.

첫화면을 변경하기 위해서는 index.do 를 adminIndex.do 로 변경한 뒤에

index.do를 만들어 원하는 디자인을 입히면 될 것 같음.


--> 안된다 ㅜ.ㅜ

index.do를 다시 만들었는데... 자꾸 intercepter인가가 가로채서...

원래는 로그인 없이 사용할 수 있는 서비스로 보내려고 한건데.. 쩝.

일단 아래는 참고용으로 놔둠.

-----



EgovComIndexController.java

 @RequestMapping("/index.do")
    public String index(ModelMap model) {
        return "egovframework/com/cmm/EgovUnitMain";
    }

 EgovLoginSesionCheck.jsp

 <%
     // 세션 정보를 가져온다. LoginVO
     egovframework.com.cmm.LoginVO user = (egovframework.com.cmm.LoginVO)egovframework.com.cmm.util.EgovUserDetailsHelper.getAuthenticatedUser();
     String contextPath = request.getContextPath();
     if(user.getUrl() == null || user.getUrl().equals("")) user.setUrl(contextPath+"/index.do");
 %>

 egovDevIndex.jsp

 <jsp:forward page="/index.do"/>

 index.jsp

 <jsp:forward page="/index.do"/>

 

 


여기에서 일단 관리자는 adminIndex.do로 변경하면

1. adminIndex.jsp 생성(index.jsp 복사)

    index.do 를 adminIndex.do 로 변경


2. EgovLoginSesionCheck는 세션이 없으면 기본으로 index.do 로 보내는 것이므로 그대로 둠.


3. EgovComIndexController 에는 adminIndex 추가

   @RequestMapping("/adminIndex.do")
    public String adminIndex(ModelMap model) {
        return "egovframework/com/cmm/EgovUnitMain";
    }


728x90
728x90

뉴스관리라는 것이 있음.

근데 공지사항이랑 다른 용도겠지?

게시판이랑은 뭐가 다른건가...



조회

SELECT NEWS_ID, NEWS_SJ, NEWS_CN, NEWS_ORIGIN, NTCE_DE, ATCH_FILE_ID, FRST_REGIST_PNTTM, FRST_REGISTER_ID,
LAST_UPDT_PNTTM LAST_UPDUSR_PNTTM, LAST_UPDUSR_ID FROM COMTNNEWSINFO WHERE 1=1 ORDER BY NEWS_ID
DESC LIMIT 10 OFFSET 0


저장버튼 눌렀을 때

INSERT INTO COMTNNEWSINFO (NEWS_ID , NEWS_SJ , NEWS_CN , NEWS_ORIGIN , NTCE_DE , ATCH_FILE_ID
, FRST_REGIST_PNTTM , FRST_REGISTER_ID , LAST_UPDT_PNTTM , LAST_UPDUSR_ID) VALUES ( 'NEWS_000000000000001'
, '첫번째 뉴스' , '첫번째 뉴스입니다.' , 'http://nobang.tistory.com' , '20181012' , NULL , sysdate() , 'USRCNFRM_00000000000'
, sysdate() , 'USRCNFRM_00000000000' )


내용보기

SELECT NEWS_ID, NEWS_SJ, NEWS_CN, NEWS_ORIGIN, NTCE_DE, ATCH_FILE_ID , DATE_FORMAT(FRST_REGIST_PNTTM,'%Y-%m-%d')
FRST_REGIST_PNTTM , FRST_REGISTER_ID, DATE_FORMAT(LAST_UPDT_PNTTM,'%Y-%m-%d') LAST_UPDT_PNTTM
, LAST_UPDUSR_ID FROM COMTNNEWSINFO WHERE NEWS_ID='NEWS_000000000000001'

728x90
728x90

행정용어 사전이라는게 있어서

단어장을 만들 수 있다.


이것을 활용하면 단어장 만들기 쉽겠다. ㅋ


단어 목록조회

SELECT A.ADMINIST_WORD_ID, A.ADMINIST_WORD_NM, A.ADMINIST_WORD_ENG_NM, A.ADMINIST_WORD_ABRV_NM
ADMINIST_WORD_ABRV, A.THEMA_RELM, A.WORD_SE WORD_DOMN, A.RELATE_STD_WORD, A.ADMINIST_WORD_DFN,
A.ADMINIST_WORD_DC, A.FRST_REGISTER_ID, DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d') FRST_REGISTER_PNTTM,
(SELECT USER_NM FROM COMTNEMPLYRINFO WHERE ESNTL_ID = A.FRST_REGISTER_ID) FRST_REGISTER_NM
FROM COMTNADMINISTRATIONWORD A WHERE 1=1 ORDER BY A.FRST_REGIST_PNTTM DESC LIMIT 10 OFFSET
0


등록버튼 눌렀을 때

SELECT A.CNTC_ID, A.TEST_CLASS_NM, A.MNGR_NM, A.MNGR_EMAIL_ADRES, A.MNTRNG_STTUS, DATE_FORMAT(A.LAST_UPDT_PNTTM,
'%Y-%m-%d %H:%i:%S') AS LAST_UPDT_PNTTM, A.LAST_UPDUSR_ID, A.FRST_REGISTER_ID, DATE_FORMAT(A.FRST_REGIST_PNTTM,
'%Y-%m-%d %H:%i:%S') AS FRST_REGIST_PNTTM, DATE_FORMAT(A.CREAT_DT, '%Y-%m-%d %H:%i:%S') AS
CREAT_DT, B.CODE_NM MNTRNG_STTUS_NM, C.CNTC_NM, D.INSTT_NM PROVD_INSTT_NM, E.SYS_NM PROVD_SYS_NM,
F.SVC_NM PROVD_SVC_NM, G.INSTT_NM REQUST_INSTT_NM, H.SYS_NM REQUST_SYS_NM FROM COMTNTRSMRCVMNTRNG
A, COMTCCMMNDETAILCODE B, COMTNSYSTEMCNTC C, COMTNCNTCINSTT D, COMTNCNTCSYSTEM E, COMTNCNTCSERVICE
F, COMTNCNTCINSTT G, COMTNCNTCSYSTEM H WHERE B.CODE_ID = 'COM046' AND A.MNTRNG_STTUS = B.CODE
AND A.CNTC_ID = C.CNTC_ID AND D.INSTT_ID = C.PROVD_INSTT_ID AND E.INSTT_ID = C.PROVD_INSTT_ID
AND E.SYS_ID = C.PROVD_SYS_ID AND F.INSTT_ID = C.PROVD_INSTT_ID AND F.SYS_ID = C.PROVD_SYS_ID
AND F.SVC_ID = C.PROVD_SVC_ID AND G.INSTT_ID = C.REQUST_INSTT_ID AND H.INSTT_ID = C.REQUST_INSTT_ID
AND H.SYS_ID = C.REQUST_SYS_ID AND A.CNTC_ID = C.CNTC_ID ORDER BY A.CNTC_ID ASC LIMIT 10000
OFFSET 0


저장 버튼 눌렀을 때


[IDGeneration Service] key_table에 대한 10 ID의 새로운 블록을 할당 ADMINIST_WORD_ID.

SELECT next_id FROM COMTECOPSEQ WHERE table_name = ?
2018-09-30 12:51:08,783  INFO [jdbc.sqltiming] SELECT next_id FROM COMTECOPSEQ WHERE table_name = 'ADMINIST_WORD_ID'


UPDATE COMTECOPSEQ SET next_id = 11 WHERE table_name = 'ADMINIST_WORD_ID'


INSERT INTO COMTNADMINISTRATIONWORD ( ADMINIST_WORD_ID, ADMINIST_WORD_NM, ADMINIST_WORD_ENG_NM,
ADMINIST_WORD_ABRV_NM, THEMA_RELM, WORD_SE, RELATE_STD_WORD, ADMINIST_WORD_DFN, ADMINIST_WORD_DC,
FRST_REGIST_PNTTM, FRST_REGISTER_ID, LAST_UPDT_PNTTM, LAST_UPDUSR_ID )VALUES( 'ADMINIST_00000000001',
'사무실', 'Office', 'office', '장소', '1', '사무실', '행정전문용어정의', '행정전문용어설명', sysdate(), 'USRCNFRM_00000000000',
sysdate(), 'USRCNFRM_00000000000' )


-- 목록조회


SELECT A.ADMINIST_WORD_ID, A.ADMINIST_WORD_NM, A.ADMINIST_WORD_ENG_NM, A.ADMINIST_WORD_ABRV_NM
ADMINIST_WORD_ABRV, A.THEMA_RELM, A.WORD_SE WORD_DOMN, A.RELATE_STD_WORD, A.ADMINIST_WORD_DFN,
A.ADMINIST_WORD_DC, A.FRST_REGISTER_ID, DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d') FRST_REGISTER_PNTTM,
(SELECT USER_NM FROM COMTNEMPLYRINFO WHERE ESNTL_ID = A.FRST_REGISTER_ID) FRST_REGISTER_NM
FROM COMTNADMINISTRATIONWORD A WHERE 1=1 ORDER BY A.FRST_REGIST_PNTTM DESC LIMIT 10 OFFSET
0

728x90
728x90

게시판을 추가해 보자


http://localhost:8080/egovframework-all-in-one/ 에서


업무사용자

로그인 : TEST1

PW : 공통12


로그인 한 뒤에

협업 > 게시판 속성관리 에서 '등록'을 누른다.


공지사항 게시판 부터 만들자

- 게시판 유형 '공지게시판' 선택


공지사항 게시판이 생성되었다.

게시판 명 : 공지사항을 클릭하면 게시판 수정화면이 나옴


----

게시판 사용등록


추가한 게시판을 사용하도록 선택해야 하므로

등록 버튼을 누른다.


게시판명 옆에 돋보기 아이콘을 누르면 게시판 목록이 나온다.

'공지사항'게시판 끝에 선택버튼을 누른다.

사용할 대상선택

일단은 뭔지 모르니까 '시스템'을 선택하고 등록버튼 클릭

등록 목록에 나옴

게시판 명 '공지사항'을 클릭하면

게시판의 사용정보가 나온다.

제공 URL이 해당 게시판 접속정보다.

제공 URL을 클릭하면

공지사항 게시판이 나온다.

게시물이 없으므로 등록 버튼을 누르면

게시물 등록화면이 나온다.

-- firefox 에서 에디터에 글쓰기가 안된다. 커서가 에디터 안으로 안들어가짐. ㅜ.ㅜ chrome에서는 됨.


공지사항을 등록한 결과

제목을 클릭하여 내용을 보면

게시판 생성할 때 댓글기능을 넣어서

댓글목록과 달기 기능이 있는데

그렇게 이쁘지는 않군...

글 내용도 짧으니 최소영역없이 한줄만 나오는것도...

템플릿 파일을 만들어 템플릿 변경을 하면 좀 낫겠지...


-----

게시판 추가시 발생하는 내용

쿼리는 대략 이렇다..

로그 파일에 쭉~ 나오는 결과임.


[IDGeneration Service] key_table에 대한 10 ID의 새로운 블록을 할당 BBS_ID.

SELECT next_id FROM COMTECOPSEQ WHERE table_name = 'BBS_ID'


UPDATE COMTECOPSEQ SET next_id = 11 WHERE table_name = 'BBS_ID'


INSERT INTO COMTNBBSMASTER (BBS_ID, BBS_TY_CODE, BBS_ATTRB_CODE, BBS_NM, BBS_INTRCN, REPLY_POSBL_AT,
FILE_ATCH_POSBL_AT, ATCH_POSBL_FILE_NUMBER, ATCH_POSBL_FILE_SIZE, TMPLAT_ID, USE_AT, FRST_REGISTER_ID,
FRST_REGIST_PNTTM ) VALUES ( 'BBSMSTR_000000000001', 'BBST03', 'BBSA01', '공지사항', '공지사항 게시판',
'N', 'Y', 3, NULL, 'TMPLAT_BOARD_DEFAULT', 'Y', 'USRCNFRM_00000000000', SYSDATE() )


INSERT INTO COMTNBBSMASTEROPTN (BBS_ID, ANSWER_AT, STSFDG_AT, FRST_REGISTER_ID, FRST_REGIST_PNTTM
) VALUES ( 'BBSMSTR_000000000001', 'Y', 'N', 'USRCNFRM_00000000000', SYSDATE() ) 


SELECT a.BBS_ID, a.BBS_TY_CODE, b.CODE_NM as BBS_TY_CODE_NM, a.BBS_ATTRB_CODE, c.CODE_NM as
BBS_ATTRB_CODE_NM, a.BBS_NM, a.TMPLAT_ID, a.USE_AT, DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d')
as FRST_REGIST_PNTTM FROM COMTNBBSMASTER a LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM
COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM004' AND USE_AT='Y') b ON a.BBS_TY_CODE = b.CODE LEFT
OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM009'
AND USE_AT='Y') c ON a.BBS_ATTRB_CODE = c.CODE WHERE 1=1 ORDER BY a.FRST_REGIST_PNTTM DESC
LIMIT 10 OFFSET 0


SELECT COUNT(a.BBS_ID) FROM COMTNBBSMASTER a LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM
FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM004' AND USE_AT='Y') b ON a.BBS_TY_CODE = b.CODE
LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM009'
AND USE_AT='Y') c ON a.BBS_ATTRB_CODE = c.CODE WHERE 1=1


게시판 사용등록

SELECT a.BBS_ID, e.BBS_NM, a.TRGET_ID, a.REGIST_SE_CODE, b.CODE_NM as REGIST_SE_CODE_NM, a.USE_AT,
a.FRST_REGISTER_ID, a.FRST_REGIST_PNTTM, c.CMMNTY_ID, c.CMMNTY_NM, d.CLB_ID, d.CLB_NM, e.BBS_TY_CODE
FROM COMTNBBSUSE a LEFT OUTER JOIN COMTNBBSMASTER e ON a.BBS_ID = e.BBS_ID LEFT OUTER JOIN
COMTCCMMNDETAILCODE b ON b.CODE = a.REGIST_SE_CODE LEFT OUTER JOIN COMTNCMMNTY c ON a.TRGET_ID
= c.CMMNTY_ID LEFT OUTER JOIN COMTNCLUB d ON a.TRGET_ID = d.CLB_ID WHERE b.CODE_ID = 'COM001'
AND a.REGIST_SE_CODE != 'REGC07' ORDER BY a.FRST_REGIST_PNTTM DESC LIMIT 10 OFFSET 0


SELECT COUNT(a.BBS_ID) FROM COMTNBBSUSE a LEFT OUTER JOIN COMTNBBSMASTER e ON a.BBS_ID = e.BBS_ID
LEFT OUTER JOIN COMTCCMMNDETAILCODE b ON b.CODE = a.REGIST_SE_CODE WHERE b.CODE_ID = 'COM001'
AND a.REGIST_SE_CODE != 'REGC07'


게시글 목록

SELECT a.BBS_ID, e.BBS_NM, a.TRGET_ID, a.REGIST_SE_CODE, b.CODE_NM as REGIST_SE_CODE_NM, a.USE_AT,
a.FRST_REGISTER_ID, a.FRST_REGIST_PNTTM, c.CMMNTY_ID, c.CMMNTY_NM, d.CLB_ID, d.CLB_NM, e.BBS_TY_CODE
FROM COMTNBBSUSE a LEFT OUTER JOIN COMTNBBSMASTER e ON a.BBS_ID = e.BBS_ID LEFT OUTER JOIN
COMTCCMMNDETAILCODE b ON b.CODE = a.REGIST_SE_CODE LEFT OUTER JOIN COMTNCMMNTY c ON a.TRGET_ID
= c.CMMNTY_ID LEFT OUTER JOIN COMTNCLUB d ON a.TRGET_ID = d.CLB_ID WHERE b.CODE_ID = 'COM001'
AND a.BBS_ID = 'BBSMSTR_000000000001' AND a.TRGET_ID = 'SYSTEM_DEFAULT_BOARD'


SELECT a.BBS_ID, a.BBS_TY_CODE, b.CODE_NM as BBS_TY_CODE_NM, a.BBS_INTRCN, a.BBS_ATTRB_CODE,
c.CODE_NM as BBS_ATTRB_CODE_NM, a.BBS_NM, a.TMPLAT_ID, d.TMPLAT_NM, d.TMPLAT_COURS, a.FILE_ATCH_POSBL_AT,
a.ATCH_POSBL_FILE_NUMBER, a.ATCH_POSBL_FILE_SIZE, a.REPLY_POSBL_AT, a.FRST_REGISTER_ID, e.USER_NM
as FRST_REGISTER_NM, a.USE_AT, DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM
,(SELECT IFNULL(USE_AT,'N') FROM COMTNBBSUSE WHERE BBS_ID = 'BBSMSTR_000000000001' AND TRGET_ID
IN ('USRCNFRM_00000000000', 'SYSTEM_DEFAULT_BOARD') ) as AUTH_FLAG FROM COMTNBBSMASTER a LEFT
OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM004'
AND USE_AT='Y') b ON a.BBS_TY_CODE = b.CODE LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM
FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM009' AND USE_AT='Y') c ON a.BBS_ATTRB_CODE = c.CODE
LEFT OUTER JOIN COMTNTMPLATINFO d ON a.TMPLAT_ID = d.TMPLAT_ID LEFT OUTER JOIN COMVNUSERMASTER
e ON a.FRST_REGISTER_ID = e.ESNTL_ID WHERE a.BBS_ID = 'BBSMSTR_000000000001'


SELECT a.BBS_ID, a.ANSWER_AT, a.STSFDG_AT, a.FRST_REGISTER_ID, b.USER_NM as FRST_REGISTER_NM,
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM FROM COMTNBBSMASTEROPTN a
LEFT OUTER JOIN COMVNUSERMASTER b ON a.FRST_REGISTER_ID = b.ESNTL_ID WHERE a.BBS_ID = 'BBSMSTR_000000000001'


SELECT a.NTT_ID, a.NTT_SJ, a.FRST_REGISTER_ID, IFNULL(b.USER_NM, a.NTCR_NM) as FRST_REGISTER_NM,
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM, a.RDCNT, a.PARNTSCTT_NO,
a.ANSWER_AT, a.ANSWER_LC, a.USE_AT, a.ATCH_FILE_ID, a.BBS_ID, a.NTCE_BGNDE, a.NTCE_ENDDE FROM
COMTNBBS a LEFT OUTER JOIN COMVNUSERMASTER b ON a.FRST_REGISTER_ID = b.ESNTL_ID WHERE a.BBS_ID
= 'BBSMSTR_000000000001' ORDER BY a.SORT_ORDR DESC, NTT_NO ASC LIMIT 10 OFFSET 0


SELECT COUNT(a.NTT_ID) FROM COMTNBBS a LEFT OUTER JOIN COMVNUSERMASTER b ON a.FRST_REGISTER_ID
= b.ESNTL_ID WHERE a.BBS_ID = 'BBSMSTR_000000000001'


SELECT a.BBS_ID, a.BBS_TY_CODE, b.CODE_NM as BBS_TY_CODE_NM, a.BBS_INTRCN, a.BBS_ATTRB_CODE,
c.CODE_NM as BBS_ATTRB_CODE_NM, a.BBS_NM, a.TMPLAT_ID, d.TMPLAT_NM, d.TMPLAT_COURS, a.FILE_ATCH_POSBL_AT,
a.ATCH_POSBL_FILE_NUMBER, a.ATCH_POSBL_FILE_SIZE, a.REPLY_POSBL_AT, a.FRST_REGISTER_ID, e.USER_NM
as FRST_REGISTER_NM, a.USE_AT, DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM
,(SELECT IFNULL(USE_AT,'N') FROM COMTNBBSUSE WHERE BBS_ID = 'BBSMSTR_000000000001' AND TRGET_ID
IN ('USRCNFRM_00000000000', 'SYSTEM_DEFAULT_BOARD') ) as AUTH_FLAG FROM COMTNBBSMASTER a LEFT
OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM004'
AND USE_AT='Y') b ON a.BBS_TY_CODE = b.CODE LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM
FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM009' AND USE_AT='Y') c ON a.BBS_ATTRB_CODE = c.CODE
LEFT OUTER JOIN COMTNTMPLATINFO d ON a.TMPLAT_ID = d.TMPLAT_ID LEFT OUTER JOIN COMVNUSERMASTER
e ON a.FRST_REGISTER_ID = e.ESNTL_ID WHERE a.BBS_ID = 'BBSMSTR_000000000001'


SELECT IFNULL(MAX(SORT_ORDR),0)+1 AS NTT_NO FROM COMTNBBS WHERE BBS_ID = 'BBSMSTR_000000000001'

INSERT INTO COMTNBBS (NTT_ID, BBS_ID, NTT_SJ, NTT_CN, SORT_ORDR, NTCR_ID, NTCR_NM, PASSWORD,
RDCNT, NTCE_BGNDE, NTCE_ENDDE, ANSWER_AT, PARNTSCTT_NO, NTT_NO, ANSWER_LC, ATCH_FILE_ID, FRST_REGISTER_ID,
FRST_REGIST_PNTTM, USE_AT ) VALUES ( 1, 'BBSMSTR_000000000001', '첫번째 공지사항', '첫번째 공지사항입니다.',
1, 'TEST1', '테스트1', '', 0, '20180930', '20190331', 'N', '0', 1, '0', NULL, 'USRCNFRM_00000000000',
SYSDATE(), 'Y' )


SELECT a.NTT_ID, a.NTT_SJ, a.FRST_REGISTER_ID, IFNULL(b.USER_NM, a.NTCR_NM) as FRST_REGISTER_NM,
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM, a.RDCNT, a.PARNTSCTT_NO,
a.ANSWER_AT, a.ANSWER_LC, a.USE_AT, a.ATCH_FILE_ID, a.BBS_ID, a.NTCE_BGNDE, a.NTCE_ENDDE FROM
COMTNBBS a LEFT OUTER JOIN COMVNUSERMASTER b ON a.FRST_REGISTER_ID = b.ESNTL_ID WHERE a.BBS_ID
= 'BBSMSTR_000000000001' ORDER BY a.SORT_ORDR DESC, NTT_NO ASC LIMIT 10 OFFSET 0


SELECT IFNULL(MAX(RDCNT),0)+1 AS RDCNT FROM COMTNBBS WHERE BBS_ID = 'BBSMSTR_000000000001'
AND NTT_ID = 1


UPDATE COMTNBBS SET RDCNT = 1, LAST_UPDUSR_ID = 'USRCNFRM_00000000000', LAST_UPDT_PNTTM = SYSDATE()
WHERE BBS_ID = 'BBSMSTR_000000000001' AND NTT_ID = 1


SELECT a.NTT_SJ, a.NTCR_ID, a.NTCR_NM, a.NTT_NO, a.NTT_CN, a.PASSWORD, a.FRST_REGISTER_ID,
b.USER_NM as FRST_REGISTER_NM, DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM,
a.NTCE_BGNDE, a.NTCE_ENDDE, a.RDCNT, a.USE_AT, a.ATCH_FILE_ID, a.BBS_ID, a.NTT_ID, a.PARNTSCTT_NO,
a.ANSWER_AT, a.ANSWER_LC, a.SORT_ORDR, c.BBS_TY_CODE, c.BBS_ATTRB_CODE, c.REPLY_POSBL_AT, c.FILE_ATCH_POSBL_AT,
c.ATCH_POSBL_FILE_NUMBER, c.BBS_NM FROM COMTNBBS a LEFT OUTER JOIN COMVNUSERMASTER b ON a.FRST_REGISTER_ID
= b.ESNTL_ID LEFT OUTER JOIN COMTNBBSMASTER c ON a.BBS_ID = c.BBS_ID WHERE a.BBS_ID = 'BBSMSTR_000000000001'
AND a.NTT_ID = 1


SELECT a.BBS_ID, a.BBS_TY_CODE, b.CODE_NM as BBS_TY_CODE_NM, a.BBS_INTRCN, a.BBS_ATTRB_CODE,
c.CODE_NM as BBS_ATTRB_CODE_NM, a.BBS_NM, a.TMPLAT_ID, d.TMPLAT_NM, d.TMPLAT_COURS, a.FILE_ATCH_POSBL_AT,
a.ATCH_POSBL_FILE_NUMBER, a.ATCH_POSBL_FILE_SIZE, a.REPLY_POSBL_AT, a.FRST_REGISTER_ID, e.USER_NM
as FRST_REGISTER_NM, a.USE_AT, DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM
,(SELECT IFNULL(USE_AT,'N') FROM COMTNBBSUSE WHERE BBS_ID = 'BBSMSTR_000000000001' AND TRGET_ID
IN ('USRCNFRM_00000000000', 'SYSTEM_DEFAULT_BOARD') ) as AUTH_FLAG FROM COMTNBBSMASTER a LEFT
OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM004'
AND USE_AT='Y') b ON a.BBS_TY_CODE = b.CODE LEFT OUTER JOIN (SELECT CODE_ID, CODE, CODE_NM
FROM COMTCCMMNDETAILCODE WHERE CODE_ID = 'COM009' AND USE_AT='Y') c ON a.BBS_ATTRB_CODE = c.CODE
LEFT OUTER JOIN COMTNTMPLATINFO d ON a.TMPLAT_ID = d.TMPLAT_ID LEFT OUTER JOIN COMVNUSERMASTER
e ON a.FRST_REGISTER_ID = e.ESNTL_ID WHERE a.BBS_ID = 'BBSMSTR_000000000001'


SELECT a.BBS_ID, a.ANSWER_AT, a.STSFDG_AT, a.FRST_REGISTER_ID, b.USER_NM as FRST_REGISTER_NM,
DATE_FORMAT(a.FRST_REGIST_PNTTM, '%Y-%m-%d') as FRST_REGIST_PNTTM FROM COMTNBBSMASTEROPTN a
LEFT OUTER JOIN COMVNUSERMASTER b ON a.FRST_REGISTER_ID = b.ESNTL_ID WHERE a.BBS_ID = 'BBSMSTR_000000000001'



728x90
728x90

전자정부 프레임워크의 Simple homepage는

default로 hsql로 되어있다.

이것을 mysql로 바꾸려면


기존 hsql로 되어있는 설정을 mysql로 바꾸면 된다.

(hsql의 GlobalsDriverClassName, Blobals.Url 은 지우거나 주석처리)

# DB서버 타입(mysql,oracle,altibase,tibero) - datasource 및 sqlMap 파일 지정에 사용됨
Globals.DbType = mysql
Globals.UserName=접속할 아이디(root)
Globals.Password=비밀번호

# mysql
Globals.DriverClassName=net.sf.log4jdbc.DriverSpy
Globals.Url=jdbc:mysql://127.0.0.1:3306/sht
 



저 파일만 바꾸고 RUN as Server 로 실행시키면 net.sf.log4jdbc.DriverSpy 가 없다고 에러가 난다.

aused by: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'net.sf.log4jdbc.DriverSpy'
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429) ~[commons-dbcp-1.4.jar:1.4]
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371) ~[commons-dbcp-1.4.jar:1.4]
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[commons-dbcp-1.4.jar:1.4]
    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:204) ~[spring-jdbc-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    ... 54 more
Caused by: java.lang.ClassNotFoundException: net.sf.log4jdbc.DriverSpy 


pom.xml 파일에서도 해당 설정을 바꿔줘야 한다.

hsql 은 주석또는 제거하고

        <!--
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>2.3.2</version>
        </dependency>
        -->
        <!-- mysql driver -->
       
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.31</version>
        </dependency> 


주석처리되어있는 log dependency도 주석 제거한다.

        <!-- log4jdbc driver -->
        <dependency>
            <groupId>com.googlecode.log4jdbc</groupId>
            <artifactId>log4jdbc</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency> 


그다음 RUN as Server 했을 때 no bean named 에러가 나면

src/main/resources/egovframework/spring/com/context-properties.xml

파일에 공백을 넣든 뭐든 해서 수정한 다음 저장한다.

ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'EgovFileMngUtil': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'propertiesService' is defined

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'propertiesService' is defined 


그러면 될 줄 알고 가동하면 db명을 모르겠다는 에러가 난다.


Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Unknown database 'sht') 

말그대로 sht라는 database가 없다는 에러다.

기본설정으로 sht로 설정되어있으므로

mysql에 생성한 db명을 써야한다. (나의경우 egov_simplehome)로 해서 바꿔주었다.
src/main/resources/egovframework/egovProps/globals.properties

# mysql
Globals.DriverClassName=net.sf.log4jdbc.DriverSpy
Globals.Url=jdbc:mysql://127.0.0.1:3306/egov_3_7 


그리고 가동을 하면...

Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'egov_simplehome.lettnbbs' doesn't exist 


테이블이 없다고 하네...

프로젝트 아래 DATABASE 폴더에 XXX_mysql.sql 파일이 두 개 있다.

ddl 먼서 import 한뒤에

data를 import 하면

다음과 같이 붐~~


로그인을 해 보자

( 암호화 되기 때문에 찾기 힘들었음 ㅜㅜ, egov, admin 등등 해 봤으나 ...결국 찾아 냄)

(data insert 할 때 admin이 추가되었다.)

id : admin

pw : 1



크롬에서는 근데 깨지네..


이거야 뭐 차차 해결해 나가면 되는거고

어쨌거나... 그냥 옮기기도 어렵네 그랴..

728x90
728x90


전자정부 프레임워크에서

암호화가 바로 동작하지 않는다...


다음과 같은 두 개의 에러다

Class 'egovframework.rte.fdl.cryptography.EgovPasswordEncoder' not found

Class 'egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl' not found


정의 된 xml 에 가보니 빨간색 에러표시가 있네..

src/main/resources/egovframework/spring/com/context-crypto.xml



그래서 일단 pom.xml 에 depencency 추가

        <!-- 암호화 -->
        <dependency>
            <groupId>egovframework.rte</groupId>
            <artifactId>egovframework.rte.fdl.crypto</artifactId>
            <version>${egovframework.rte.version}</version>
        </dependency>
 


저장을 하면

maven lib에 있는데도 에러가 사라지지 않는다.


정말 이상하다.. 소스는 다른게 없는데 뭐가 에러지?

문제는 해당 xml 파일이 refresh 되어야 하는데 안된게 문제인 듯 하다..(왜?)

어쩄거나

src/main/resources/egovframework/spring/com/context-crypto.xml

파일에서 우연찮게

    <bean id="egovARIACryptoService" class="egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl">
        <property name="passwordEncoder" ref="egovPasswordEncoder" />
        <property name="blockSize" value="1024" />
    </bean> 

다음과 같이 바꾼 뒤 저장을 했더니 에러가 사라졌다.

    <bean id="egovARIACryptoService" class="egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl">
        <property name="passwordEncoder" ref="egovPasswordEncoder" />
        <property name="blockSize" value="1025" /><!-- default : 1024 -->
    </bean> 



1. property 파일에 추가

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

#암호화
#default (SHA-256)
Globals.crypto.password.algorithm=SHA-256
#password = egovframe
Globals.crypto.hashed.password=gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ=


2. context-crypto 파일에 해당 값으로 변경

src/main/resources/egovframework/spring/com/context-crypto.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    
    <bean id="egovPasswordEncoder" class="egovframework.rte.fdl.cryptography.EgovPasswordEncoder">
        <property name="algorithm" value="${Globals.crypto.password.algorithm}" /><!-- default : SHA-256 -->
        <property name="hashedPassword" value="${Globals.crypto.hashed.password}" />
    </bean>
   
   
    <bean id="egovARIACryptoService" class="egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl">
        <property name="passwordEncoder" ref="egovPasswordEncoder" />
        <property name="blockSize" value="1025" /><!-- default : 1024 -->
    </bean>

</beans>  


참고 : 전자정부 프레임워크에서는 암호화 관련


https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:encryption_decryption#%EA%B0%80%EC%9D%B4%EB%93%9C%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_guide_program





728x90
728x90

EgovClntInfo 에서 getProperty method가 없거나 인자가 맞지 않을 때 나는 에러다.


The method getProperty(String) in the type EgovProperties is not applicable for the arguments (String, String)


String 인자를 2개 받아야 하는데 1개만 있는게 정의되어 있음.

src/main/java/egovframework/com/cmm/service/EgovProperties.java

해당 method의 주석 풀기.

다른데에서도 호출할 수 있도록 다른 method들도 다 푼다.

if (Globals.OS_TYPE.equals("UNIX")) {
    String[] command = { EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".getDrctryByOwner"),
                            fullpath.substring(0, fullpath.lastIndexOf("/")), fullpath.substring(fullpath.lastIndexOf("/"), fullpath.length()), owner };
   p = Runtime.getRuntime().exec(command);
   p.waitFor();
} else if (Globals.OS_TYPE.equals("WINDOWS")) {
   String command = EgovProperties.getProperty(Globals.SHELL_FILE_PATH, "SHELL." + Globals.OS_TYPE + ".getDrctryByOwner");
   p = Runtime.getRuntime().exec(command);
   p.waitFor();
                } 


728x90
728x90

Globals.java는 시스템 구동 시 프로퍼티를 통해 사용될 전역변수를 정의한다.


소스상에서 없는 상수들은 여기에 추가한 뒤에

환경설정파일을 생성하고

생성한 환경설정 파일에 내용입력


src/main/java/egovframework/com/cmm/service/Globals.java

//프로퍼티 파일 위치

    public static final String CONF_PATH = EgovProperties.getPathProperty("Globals.ConfPath");


Globals.java

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

# 환경파일 위치
Globals.ShellFilePath     = globals.properties
Globals.ServerConfPath    = conf/server.properties
Globals.ClientConfPath    = conf/client.properties
Globals.FileFormatPath    = conf/format.properties
Globals.GPKIConfPath      = conf/gpki.properties
Globals.ConfPath          = conf
Globals.MailRequestPath   = mail/request/
Globals.MailRResponsePath = mail/response/
Globals.SMEConfigPath     = conf/SMEConfig.properties


해당 경로가 없으면 만든다.

파일이 없으면 만든다.

기준 : src/main/resources/egovframework/egovProps/conf




728x90
728x90

EgovBasicLogger cannot be resolved    EgovFtpTool.java

원래 EgovBasicLogger.java가 있어야 하는데 없어서 나는 에러이다.



src/main/java/egovframework/com/cmm/util/EgovBasicLogger.java 파일 추가


EgovBasicLogger.java

첨부파일 참조.


에러 해결!


728x90
728x90

DocumentConverter cannot be resolved to a type 라고 EgovPdfCnvr 에서 오류가 난다.

src/main/java/egovframework/com/utl/sim/service/EgovPdfCnvr.java

lib에서 jodconverter를 찾지 못해 발생하는 에러다.



Dependency를 추가하면 된다.

pom.xml 에 추가


         <!-- PDF변환용 라이브러리 -->
        <dependency>
            <groupId>com.artofsolving</groupId>
            <artifactId>jodconverter</artifactId>
            <version>2.2.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>commons-io</artifactId>
                    <groupId>commons-io</groupId>
                </exclusion>
            </exclusions>
        </dependency>
       


저장하면 자동으로 빌드가 되면서 lib에 추가 됨.

자동 빌드가 아니면

RUN > maven install 을 시켜볼 것.


---------------------

EgovPdfCnvr 에 있는 오류를 더 잡아 볼까?

EgovWebUtil 이 없다는 오류는 파일을 추가한다.

src/main/java/egovframework/com/cmm/EgovWebUtil.java

EgovWebUtil.java


첨부파일 참조


또하나 EgovResourceCloseHelper cannot be resolved 역시

해당 파일을 추가한다.

src/main/java/egovframework/com/cmm/util/EgovResourceCloseHelper.java


EgovResourceCloseHelper.java



EgovPdfCnvr.java의 오류는 모두 해결 됨.


-----------------

FTP cannot be resolved to a variable    EgovFtpTool.java

pom.xml에 depencency 추가

        <!-- FTP용 3rd party 라이브러리 -->
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.3</version>
        </dependency> 



        <!-- Email -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>egovframework.com.ems</groupId>
            <artifactId>sndng-mail</artifactId>
            <version>1.0</version>
        </dependency> 


        <!-- XML스키마를 자바클래스로 생성하는 라이브러리 -->
        <dependency>
            <groupId>xmlbeans</groupId>
            <artifactId>xbean</artifactId>
            <version>2.2.0</version>
        </dependency> 


728x90
BLOG main image
"그게 뭐 어쨌다는 거냐?" 늘 누가 나에게 나에대한 말을할 때면 이말을 기억해라. by nobang

카테고리

nobang이야기 (1951)
Life With Gopro (7)
Life With Mini (79)
Diary (971)
너 그거 아니(do you know) (179)
난 그래 (159)
Study (290)
속지말자 (10)
Project (34)
Poem (15)
Song (0)
Photo (113)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :