diff --git a/src/main/java/nlib/bbs/service/ArticleVO.java b/src/main/java/nlib/bbs/service/ArticleVO.java
new file mode 100644
index 00000000..2109d092
--- /dev/null
+++ b/src/main/java/nlib/bbs/service/ArticleVO.java
@@ -0,0 +1,120 @@
+package nlib.bbs.service;
+
+import nlib.cmm.service.PagingVO;
+
+public class ArticleVO extends PagingVO {
+
+ private String articleId; /* 게시글ID */
+ private String mngOrgCd; /* 관리문화원코드 */
+ private String bdType; /* 게시판유형 */
+ private String title; /* 제목 */
+ private String content; /* 내용 */
+
+ // 공지사항관련
+ private String notiYn; /* 공지여부 */
+ private String openYn; /* 공개여부 */
+ private String postStartDate; /* 게시시작일자 */
+ private String postEndDate; /* 게시종료일자 */
+
+ private int viewCnt; /* 조회수 */
+ private String bdAttachFileId; /* 첨부파일아이디 */
+
+ private String regId; /* 등록자아이디 */
+ private String regDd; /* 등록일자 */
+ private String modId; /* 등록자아이디 */
+ private String modDd; /* 등록일자 */
+
+
+ public String getArticleId() {
+ return articleId;
+ }
+ public void setArticleId(String articleId) {
+ this.articleId = articleId;
+ }
+ public String getMngOrgCd() {
+ return mngOrgCd;
+ }
+ public void setMngOrgCd(String mngOrgCd) {
+ this.mngOrgCd = mngOrgCd;
+ }
+ public String getBdType() {
+ return bdType;
+ }
+ public void setBdType(String bdType) {
+ this.bdType = bdType;
+ }
+ public String getTitle() {
+ return title;
+ }
+ public void setTitle(String title) {
+ this.title = title;
+ }
+ public String getContent() {
+ return content;
+ }
+ public void setContent(String content) {
+ this.content = content;
+ }
+ public String getNotiYn() {
+ return notiYn;
+ }
+ public void setNotiYn(String notiYn) {
+ this.notiYn = notiYn;
+ }
+ public String getOpenYn() {
+ return openYn;
+ }
+ public void setOpenYn(String openYn) {
+ this.openYn = openYn;
+ }
+ public String getPostStartDate() {
+ return postStartDate;
+ }
+ public void setPostStartDate(String postStartDate) {
+ this.postStartDate = postStartDate;
+ }
+ public String getPostEndDate() {
+ return postEndDate;
+ }
+ public void setPostEndDate(String postEndDate) {
+ this.postEndDate = postEndDate;
+ }
+ public int getViewCnt() {
+ return viewCnt;
+ }
+ public void setViewCnt(int viewCnt) {
+ this.viewCnt = viewCnt;
+ }
+ public String getBdAttachFileId() {
+ return bdAttachFileId;
+ }
+ public void setBdAttachFileId(String bdAttachFileId) {
+ this.bdAttachFileId = bdAttachFileId;
+ }
+ public String getRegId() {
+ return regId;
+ }
+ public void setRegId(String regId) {
+ this.regId = regId;
+ }
+ public String getRegDd() {
+ return regDd;
+ }
+ public void setRegDd(String regDd) {
+ this.regDd = regDd;
+ }
+ public String getModId() {
+ return modId;
+ }
+ public void setModId(String modId) {
+ this.modId = modId;
+ }
+ public String getModDd() {
+ return modDd;
+ }
+ public void setModDd(String modDd) {
+ this.modDd = modDd;
+ }
+
+
+}
diff --git a/src/main/java/nlib/bbs/service/BoardService.java b/src/main/java/nlib/bbs/service/BoardService.java
index e2b12a13..0c278593 100644
--- a/src/main/java/nlib/bbs/service/BoardService.java
+++ b/src/main/java/nlib/bbs/service/BoardService.java
@@ -1,71 +1,43 @@
package nlib.bbs.service;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nlib.user.service.NlibLoginVO;
-/**
- *
- * @Class Name : BoardService.java
- *
- * @Description : 게시물 관리 클래스
- *
- *
- * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
- *
- *
- *
- * @ ------------ -------- ---------------------------
- * @ 수정일 수정자 수정내용
- * @ ------------ -------- ---------------------------
- * @ 2021. 7. 19. KNKIM 최초 생성
- *
- *
- * @author 이씨플라자 * DIGITALSHIP KNKIM
- * @since 2021. 7. 19.
- * @version 1.0
- *
- */
public interface BoardService
{
- /**
- * 공지사항
- *
- * @param reqVO
- * @return
- */
- public DataApiResVO listNotices(DataApiReqVO reqVO);
- public DataApiResVO selectNotice(DataApiReqVO reqVO);
-
- /**
- * 자주하는질문
- *
- * @param reqVO
- * @return
+ /*
+ * 게시글 목록을 조회한다.
*/
- public DataApiResVO listFAQs(DataApiReqVO reqVO);
-
- public DataApiResVO selectFAQ(DataApiReqVO reqVO);
+ public List listArticles(ArticleVO ArticleVO) throws Exception;
- /**
- * 묻고답하기
- *
- * @param reqVO
- * @return
+ /**
+ * 게시글 건수를 조회한다.
*/
- public DataApiResVO listQnAs(DataApiReqVO reqVO);
+ public int countArticles(ArticleVO articleVO) throws Exception;
+
+ /**
+ * 조회수를 증가시킨다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public int updateRead(ArticleVO notiVO) throws Exception;
+
+ /**
+ * 게시글 상세 내용을 조회한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public ArticleVO selectArticle(ArticleVO notiVO) throws Exception;
- public DataApiResVO selectQnA(DataApiReqVO reqVO);
+}
- public DataApiResVO insertQnA(DataApiReqVO reqVO);
-
- public DataApiResVO verifyWriter(DataApiReqVO reqVO);
-
- public DataApiResVO updateQnA(DataApiReqVO reqVO);
-
- public DataApiResVO deleteQnA(DataApiReqVO reqVO);
-
-
-}
\ No newline at end of file
diff --git a/src/main/java/nlib/bbs/service/BoardServiceApi.java b/src/main/java/nlib/bbs/service/BoardServiceApi.java
new file mode 100644
index 00000000..d47dece8
--- /dev/null
+++ b/src/main/java/nlib/bbs/service/BoardServiceApi.java
@@ -0,0 +1,71 @@
+
+package nlib.bbs.service;
+
+import nlib.restful.service.DataApiReqVO;
+import nlib.restful.service.DataApiResVO;
+
+/**
+ *
+ * @Class Name : BoardService.java
+ *
+ * @Description : 게시물 관리 클래스
+ *
+ *
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ *
+ *
+ * @ ------------ -------- ---------------------------
+ * @ 수정일 수정자 수정내용
+ * @ ------------ -------- ---------------------------
+ * @ 2021. 7. 19. KNKIM 최초 생성
+ *
+ *
+ * @author 이씨플라자 * DIGITALSHIP KNKIM
+ * @since 2021. 7. 19.
+ * @version 1.0
+ *
+ */
+public interface BoardServiceApi
+{
+ /**
+ * 공지사항
+ *
+ * @param reqVO
+ * @return
+ */
+ public DataApiResVO listNotices(DataApiReqVO reqVO);
+
+ public DataApiResVO selectNotice(DataApiReqVO reqVO);
+
+ /**
+ * 자주하는질문
+ *
+ * @param reqVO
+ * @return
+ */
+ public DataApiResVO listFAQs(DataApiReqVO reqVO);
+
+ public DataApiResVO selectFAQ(DataApiReqVO reqVO);
+
+
+ /**
+ * 묻고답하기
+ *
+ * @param reqVO
+ * @return
+ */
+ public DataApiResVO listQnAs(DataApiReqVO reqVO);
+
+ public DataApiResVO selectQnA(DataApiReqVO reqVO);
+
+ public DataApiResVO insertQnA(DataApiReqVO reqVO);
+
+ public DataApiResVO verifyWriter(DataApiReqVO reqVO);
+
+ public DataApiResVO updateQnA(DataApiReqVO reqVO);
+
+ public DataApiResVO deleteQnA(DataApiReqVO reqVO);
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/nlib/bbs/service/impl/AncmntDAO.java b/src/main/java/nlib/bbs/service/impl/AncmntDAO.java
new file mode 100644
index 00000000..721ce74c
--- /dev/null
+++ b/src/main/java/nlib/bbs/service/impl/AncmntDAO.java
@@ -0,0 +1,70 @@
+package nlib.bbs.service.impl;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.stereotype.Repository;
+
+import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
+import egovframework.rte.psl.dataaccess.mapper.Mapper;
+import nlib.cmm.service.NotificationVO;
+import nlib.bbs.service.ArticleVO;
+import nlib.cmm.service.NlibProperty;
+import nlib.user.service.NlibLoginVO;
+import nlib.util.StringUtil;
+
+/**
+ *
+ * @Class Name : AncmntDAO.java
+ *
+ * @Description : 공지사항 정보 제공 DAO
+ *
+ *
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ *
+ *
+ * @ ------------ -------- ---------------------------
+ * @ 수정일 수정자 수정내용
+ * @ ------------ -------- ---------------------------
+ * @ 2021. 9. 13. KNKIM 최초 생성
+ *
+ *
+ * @author 이씨플라자 * DIGITALSHIP KNKIM
+ * @since 2021. 9. 13.
+ * @version 1.0
+ *
+ */
+@Mapper("ancmntDAO")
+public interface AncmntDAO {
+
+ /*
+ * 게시글 목록을 조회한다.
+ */
+ public List listArticles(ArticleVO ArticleVO) throws Exception;
+
+
+ /**
+ * 게시글 건수를 조회한다.
+ */
+ public int countArticles(ArticleVO ArticleVO) throws Exception;
+
+ /**
+ * 조회수를 증가시킨다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public int updateRead(ArticleVO notiVO) throws Exception;
+
+ /**
+ * 게시글 상세 내용을 조회한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public ArticleVO selectArticle(ArticleVO notiVO) throws Exception;
+}
diff --git a/src/main/java/nlib/bbs/service/impl/AncmntServiceImpl.java b/src/main/java/nlib/bbs/service/impl/AncmntServiceImpl.java
new file mode 100644
index 00000000..077c2952
--- /dev/null
+++ b/src/main/java/nlib/bbs/service/impl/AncmntServiceImpl.java
@@ -0,0 +1,63 @@
+package nlib.bbs.service.impl;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import nlib.bbs.service.ArticleVO;
+import nlib.bbs.service.BoardService;
+
+@Service("ancmntService")
+public class AncmntServiceImpl implements BoardService
+{
+ private static final Logger log = LoggerFactory.getLogger(AncmntServiceImpl.class);
+
+ @Resource(name="ancmntDAO")
+ private AncmntDAO ancmntDAO;
+
+
+ /*
+ * 게시글 목록을 조회한다.
+ */
+ public List listArticles(ArticleVO articleVO) throws Exception {
+
+ return ancmntDAO.listArticles(articleVO);
+ }
+
+ /**
+ * 게시글 건수를 조회한다.
+ */
+ public int countArticles(ArticleVO articleVO) throws Exception {
+
+ return ancmntDAO.countArticles(articleVO);
+ }
+
+
+ /**
+ * 조회수를 증가시킨다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public int updateRead(ArticleVO articleVO) throws Exception {
+ return ancmntDAO.updateRead(articleVO);
+ }
+
+ /**
+ * 게시글 상세 내용을 조회한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public ArticleVO selectArticle(ArticleVO articleVO) throws Exception {
+ updateRead(articleVO);
+ return ancmntDAO.selectArticle(articleVO);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/nlib/bbs/service/impl/BoardDAO.java b/src/main/java/nlib/bbs/service/impl/BoardDAO.java
index 6a032b4e..13b8ee7f 100644
--- a/src/main/java/nlib/bbs/service/impl/BoardDAO.java
+++ b/src/main/java/nlib/bbs/service/impl/BoardDAO.java
@@ -1,80 +1,70 @@
-
package nlib.bbs.service.impl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.springframework.stereotype.Repository;
-import nlib.cmm.web.MainController;
-import nlib.restful.DataApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
+import egovframework.rte.psl.dataaccess.mapper.Mapper;
+import nlib.cmm.service.NotificationVO;
+import nlib.bbs.service.ArticleVO;
+import nlib.cmm.service.NlibProperty;
+import nlib.user.service.NlibLoginVO;
+import nlib.util.StringUtil;
-@Repository("boardDAO")
-public class BoardDAO extends DataApi
-{
- private static final Logger log = LoggerFactory.getLogger(BoardDAO.class);
+/**
+ *
+ * @Class Name : AncmntDAO.java
+ *
+ * @Description : 공지사항 정보 제공 DAO
+ *
+ *
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ *
+ *
+ * @ ------------ -------- ---------------------------
+ * @ 수정일 수정자 수정내용
+ * @ ------------ -------- ---------------------------
+ * @ 2021. 9. 13. KNKIM 최초 생성
+ *
+ *
+ * @author 이씨플라자 * DIGITALSHIP KNKIM
+ * @since 2021. 9. 13.
+ * @version 1.0
+ *
+ */
- /**
- * 주 자원의 URI
+public interface BoardDAO {
+
+ /*
+ * 게시글 목록을 조회한다.
*/
- public static final String RESOURCE_URI = "/uac/service/board";
+ public List listArticles(ArticleVO ArticleVO) throws Exception;
- public DataApiResVO listNotices(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/notice/list");
- return get(reqVO);
- }
- public DataApiResVO selectNotice(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/notice");
- return get(reqVO);
- }
-
- public DataApiResVO listFAQs(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/faq/list");
- return get(reqVO);
- }
+ /**
+ * 게시글 건수를 조회한다.
+ */
+ public int countArticles(ArticleVO ArticleVO) throws Exception;
- public DataApiResVO selectFAQ(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/faq");
- return get(reqVO);
- }
-
-
/**
- * 묻고답하기 목록 조회한다.
+ * 조회수를 증가시킨다.
*
- * @param reqVO
+ * @param
* @return
+ * @throws Exception
*/
- public DataApiResVO listQnAs(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/qna/list");
- return get(reqVO);
- }
-
- public DataApiResVO selectQnA(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/qna");
- return get(reqVO);
- }
-
- public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
- return null;
- }
-
- public DataApiResVO updateQnA(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/qna");
- return post(reqVO);
- }
-
- public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/qna");
- return delete(reqVO);
- }
-
- public DataApiResVO insertQnA(DataApiReqVO reqVO) {
- reqVO.setReqUrl(RESOURCE_URI + "/qna");
- return put(reqVO);
- }
-
-
-}
\ No newline at end of file
+ public int updateRead(ArticleVO notiVO) throws Exception;
+
+ /**
+ * 게시글 상세 내용을 조회한다.
+ *
+ * @param
+ * @return
+ * @throws Exception
+ */
+ public ArticleVO selectArticle(ArticleVO notiVO) throws Exception;
+}
diff --git a/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java b/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java
new file mode 100644
index 00000000..fdd89353
--- /dev/null
+++ b/src/main/java/nlib/bbs/service/impl/BoardDAOApi.java
@@ -0,0 +1,80 @@
+
+package nlib.bbs.service.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Repository;
+
+import nlib.cmm.web.MainController;
+import nlib.restful.DataApi;
+import nlib.restful.service.DataApiReqVO;
+import nlib.restful.service.DataApiResVO;
+
+@Repository("boardDAO")
+public class BoardDAOApi extends DataApi
+{
+ private static final Logger log = LoggerFactory.getLogger(BoardDAOApi.class);
+
+ /**
+ * 주 자원의 URI
+ */
+ public static final String RESOURCE_URI = "/uac/service/board";
+
+ public DataApiResVO listNotices(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/notice/list");
+ return get(reqVO);
+ }
+
+ public DataApiResVO selectNotice(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/notice");
+ return get(reqVO);
+ }
+
+ public DataApiResVO listFAQs(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/faq/list");
+ return get(reqVO);
+ }
+
+ public DataApiResVO selectFAQ(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/faq");
+ return get(reqVO);
+ }
+
+
+ /**
+ * 묻고답하기 목록 조회한다.
+ *
+ * @param reqVO
+ * @return
+ */
+ public DataApiResVO listQnAs(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/qna/list");
+ return get(reqVO);
+ }
+
+ public DataApiResVO selectQnA(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/qna");
+ return get(reqVO);
+ }
+
+ public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
+ return null;
+ }
+
+ public DataApiResVO updateQnA(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/qna");
+ return post(reqVO);
+ }
+
+ public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/qna");
+ return delete(reqVO);
+ }
+
+ public DataApiResVO insertQnA(DataApiReqVO reqVO) {
+ reqVO.setReqUrl(RESOURCE_URI + "/qna");
+ return put(reqVO);
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java b/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
index 8631bb40..b36d88cb 100644
--- a/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
+++ b/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
@@ -7,17 +7,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import nlib.bbs.service.BoardService;
+import nlib.bbs.service.BoardServiceApi;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@Service("boardService")
-public class BoardServiceImpl implements BoardService
+public class BoardServiceImpl implements BoardServiceApi
{
private static final Logger log = LoggerFactory.getLogger(BoardServiceImpl.class);
@Resource(name = "boardDAO")
- private BoardDAO boardDAO;
+ private BoardDAOApi boardDAO;
public DataApiResVO listNotices(DataApiReqVO reqVO) {
diff --git a/src/main/java/nlib/bbs/web/AncmntController.java b/src/main/java/nlib/bbs/web/AncmntController.java
index 479cdb35..fac6d034 100644
--- a/src/main/java/nlib/bbs/web/AncmntController.java
+++ b/src/main/java/nlib/bbs/web/AncmntController.java
@@ -10,827 +10,138 @@ import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
-import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-import org.springframework.web.servlet.support.RequestContextUtils;
import nlib.bbs.service.BoardService;
+import nlib.bbs.service.impl.AncmntServiceImpl;
+import nlib.bbs.service.ArticleVO;
import nlib.cmm.NlibCommonController;
-import nlib.cmm.crypto.AriaCrypto;
-import nlib.cmm.crypto.NlibPasswordEncoder;
-import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
-import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
@Controller
public class AncmntController extends NlibCommonController
{
-// private static final Logger log = LoggerFactory.getLogger(AncmntController.class);
-//
-// static final String DEFUALT_PAGE_SIZE = NlibProperty.getProperty("list.paging.page.size");
-//
-// @Resource(name = "boardService")
-// private BoardService boardService;
-//
-// @Resource(name = "nlibPasswordEncoder")
-// private NlibPasswordEncoder nlibPasswordEncoder;
-//
-// @Resource(name = "ariaCrypto")
-// private AriaCrypto ariaCrypto;
-//
-// @Resource(name = "codeService")
-// private CodeService codeService;
-//
-//
-// @Autowired
-// private AuthenticationManager authenticationManager;
-//
-// /**
-// * 공지사항 목록 화면을 표출한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping("/board/listNotices.do")
-// public String listNotices(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception {
-//
-// String searchKeyword = paramMap.get("searchKeyword");
-// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
-// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
-// String articleType = paramMap.get("articleType");
-// String message = paramMap.get("message");
-//
-// log.debug("listNotices > pageIndex = " + pageIndex);
-// log.debug("listNotices > pageSize = " + pageSize);
-// log.debug("listNotices > searchKeyword = " + searchKeyword);
-// log.debug("listNotices > articleType = " + articleType);
-// log.debug("listNotices > message = " + message);
-//
-// // 페이징 사이즈 코드 목록 조회
-// List> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION");
-//
-// // 공지사항 유형 코드 목록 조회
-// List> articleTypeCodes = codeService.listCodes("ARTICLE_TYPE");
-//
-// // 반환 정보
-// model.addAttribute("pageIndex" , pageIndex);
-// model.addAttribute("pageSize" , pageSize);
-// model.addAttribute("searchKeyword", searchKeyword);
-// model.addAttribute("pageSizeCodes", pageSizeCodes);
-// model.addAttribute("articleTypeCodes", articleTypeCodes);
-// model.addAttribute("articleType" , articleType);
-// model.addAttribute("message" , message);
-//
-// return "nlib/board/listNotices";
-// }
-//
-// /**
-// * 공지사항 목록 조회한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping(value="/board/listNoticesAjax.do")
-// public ResponseEntity listNoticesAjax(HttpServletRequest req,
-// Authentication authentication, @RequestBody Map paramMap) throws Exception {
-//
-// String searchKeyword = paramMap.get("searchKeyword");
-// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
-// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
-// String articleType = paramMap.get("articleType");
-//
-// log.debug("listNoticesAjax > pageIndex = " + pageIndex);
-// log.debug("listNoticesAjax > pageSize = " + pageSize);
-// log.debug("listNoticesAjax > searchKeyword = " + searchKeyword);
-// log.debug("listNoticesAjax > articleType = " + articleType);
-//
-// //-------------------------------
-// // REQ VO 구성
-// //-------------------------------
-// DataApiReqVO reqVO = new DataApiReqVO();
-// reqVO.setAuthKey(createAuthKey(req, authentication));
-// reqVO.setPageIndex(pageIndex);
-// reqVO.setPageSize(pageSize);
-// reqVO.addInfoItem("searchKeyword", searchKeyword);
-// reqVO.addInfoItem("articleType", articleType);
-//
-// // 요청
-// DataApiResVO resVO = boardService.listNotices(reqVO);
-//
-// //-------------------------------
-// // JSON변환 응답 처리
-// //-------------------------------
-// // JS-GRID 페이징 처리를 포함한 응답값 처리
-// // {data: [{...}],
-// // itemsCount: 255
-// // }
-// HashMap retMap = new HashMap();
-// retMap.put("data", resVO.getList());
-// retMap.put("itemsCount", resVO.getRecordTotCount());
-//
-// return makeResponseEntityJson(retMap);
-// }
-//
-// /**
-// * 공지사항 상세 내용 조회한다.
-// * @param req
-// * @return
-// */
-// @RequestMapping("/board/selectNotice.do")
-// public String selectNotice(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception {
-//
-// // 목록 이동시 전달할 매개변수
-// String searchKeyword = paramMap.get("searchKeyword");
-// String pageIndex = paramMap.get("pageIndex");
-// String pageSize = paramMap.get("pageSize");
-// String articleType = paramMap.get("articleType");
-// String message = paramMap.get("message");
-//
-// // 게시물 번호
-// String articleNo = paramMap.get("articleNo");
-//
-// log.debug("selectNotice > pageIndex = " + pageIndex);
-// log.debug("selectNotice > pageSize = " + pageSize);
-// log.debug("selectNotice > searchKeyword = " + searchKeyword);
-// log.debug("selectNotice > articleNo = " + articleNo);
-// log.debug("selectNotice > message = " + message);
-// log.debug("selectNotice > articleType = " + articleType);
-//
-// //-------------------------------
-// // REQ VO 구성
-// //-------------------------------
-// DataApiReqVO reqVO = new DataApiReqVO();
-// reqVO.setAuthKey(createAuthKey(req, authentication));
-// reqVO.setPageIndex(pageIndex);
-// reqVO.setPageSize(pageSize);
-// reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
-// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
-//
-// // 요청
-// DataApiResVO resVO = boardService.selectNotice(reqVO);
-//
-// // 반환 정보
-// model.addAttribute("articleNo" , articleNo);
-// model.addAttribute("article" , resVO.getInfo()); // 게시물 상세
-// model.addAttribute("preArticle" , resVO.getList().get(0)); // 이전글 정보
-// model.addAttribute("nextArticle" , resVO.getList().get(1)); // 다음글 정보
-// model.addAttribute("message" , message);
-// model.addAttribute("pageIndex" , pageIndex);
-// model.addAttribute("pageSize" , pageSize);
-// model.addAttribute("searchKeyword", searchKeyword);
-// model.addAttribute("articleType" , articleType);
-//
-// return "nlib/board/selectNotice";
-// }
-//
-// /**
-// * FAQ 목록 화면을 표출한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping("/board/listFAQs.do")
-// public String listFAQs(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception {
-//
-// String searchKeyword = paramMap.get("searchKeyword");
-// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
-// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
-// String message = paramMap.get("message");
-// String faqType = paramMap.get("faqType");
-//
-// log.debug("listFAQs > pageIndex = " + pageIndex);
-// log.debug("listFAQs > pageSize = " + pageSize);
-// log.debug("listFAQs > searchKeyword = " + searchKeyword);
-// log.debug("listFAQs > message = " + message);
-// log.debug("listFAQs > faqType = " + faqType);
-//
-// DataApiReqVO reqVOforCode = new DataApiReqVO();
-// reqVOforCode.setAuthKey(createAuthKey(req, authentication));
-// reqVOforCode.setPageIndex(0);
-// reqVOforCode.setPageSize(0);
-//
-//
-// // 페이징 사이즈 코드 목록 조회
-// List> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION");
-//
-// // 유형 코드 목록 조회
-// List> articleTypeCodes = codeService.listCodes("FAQ_TYPE");
-//
-// // 반환 정보
-// model.addAttribute("pageIndex" , pageIndex);
-// model.addAttribute("pageSize" , pageSize);
-// model.addAttribute("searchKeyword", searchKeyword);
-// model.addAttribute("pageSizeCodes", pageSizeCodes);
-// model.addAttribute("faqTypeCodes" , articleTypeCodes);
-// model.addAttribute("message" , message);
-// model.addAttribute("faqType" , faqType);
-// model.addAttribute("faqType" , faqType);
-//
-// return "nlib/board/listFAQs";
-// }
-//
-//
-// /**
-// * FAQ 목록 조회한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping(value="/board/listFAQsAjax.do")
-// public ResponseEntity listFAQsAjax(HttpServletRequest req,
-// Authentication authentication, @RequestBody Map paramMap) throws Exception {
-//
-// String searchKeyword = paramMap.get("searchKeyword");
-// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
-// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
-// String faqType = paramMap.get("faqType");
-//
-// log.debug("listFAQsAjax > pageIndex = " + pageIndex);
-// log.debug("listFAQsAjax > pageSize = " + pageSize);
-// log.debug("listFAQsAjax > searchKeyword = " + searchKeyword);
-// log.debug("listFAQsAjax > faqType = " + faqType);
-//
-// //-------------------------------
-// // REQ VO 구성
-// //-------------------------------
-// DataApiReqVO reqVO = new DataApiReqVO();
-// reqVO.setAuthKey(createAuthKey(req, authentication));
-// reqVO.setPageIndex(pageIndex);
-// reqVO.setPageSize(pageSize);
-// reqVO.addInfoItem("searchKeyword", searchKeyword);
-// reqVO.addInfoItem("faqType", faqType);
-//
-// // 요청
-// DataApiResVO resVO = boardService.listFAQs(reqVO);
-//
-// //-------------------------------
-// // JSON변환 응답 처리
-// //-------------------------------
-// // JS-GRID 페이징 처리를 포함한 응답값 처리
-// // {data: [{...}],
-// // itemsCount: 255
-// // }
-// HashMap retMap = new HashMap();
-// retMap.put("data", resVO.getList());
-// retMap.put("itemsCount", resVO.getRecordTotCount());
-//
-// return makeResponseEntityJson(retMap);
-// }
-//
-//
-// /**
-// * 묻고답하기 상세 내용 조회한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping("/board/selectFAQAjax.do")
-// public ResponseEntity selectFAQAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map paramMap) throws Exception {
-//
-// // 게시물 번호
-// String articleNo = paramMap.get("articleNo");
-//
-// log.debug("selectQnA > articleNo = " + articleNo);
-//
-// //-------------------------------
-// // REQ VO 구성
-// //-------------------------------
-// DataApiReqVO reqVO = new DataApiReqVO();
-// reqVO.setAuthKey(createAuthKey(req, authentication));
-// reqVO.addInfoItem("boardNo", "FAQ"); // 게시판ID
-// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
-//
-// // 요청
-// DataApiResVO resVO = boardService.selectFAQ(reqVO);
-//
-// // 반환 정보
-// return makeResponseEntityJson(resVO.getInfo());
-// }
-//
-// /**
-// * 묻고답하기 목록 화면을 표출한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping("/board/listQnAs.do")
-// public String listQnAs(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception {
-//
-// String searchKeyword = paramMap.get("searchKeyword");
-// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
-// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
-// String message = paramMap.get("message");
-//
-// log.debug("listQnAs > pageIndex = " + pageIndex);
-// log.debug("listQnAs > pageSize = " + pageSize);
-// log.debug("listQnAs > searchKeyword = " + searchKeyword);
-// log.debug("listQnAs > message = " + message);
-//
-// // 페이징 사이즈 코드 목록 조회
-// List> pageSizeCodes = codeService.listCodes("PAGE_SIZE_OPTION");
-//
-// // 반환 정보
-// model.addAttribute("pageIndex" , pageIndex);
-// model.addAttribute("pageSize" , pageSize);
-// model.addAttribute("searchKeyword", searchKeyword);
-// model.addAttribute("pageSizeCodes", pageSizeCodes);
-// model.addAttribute("message" , message);
-//
-// return "nlib/board/listQnAs";
-// }
-//
-// /**
-// * 묻고답하기 목록 조회한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping(value="/board/listQnAsAjax.do")
-// public ResponseEntity listQnAsAjax(HttpServletRequest req,
-// Authentication authentication, @RequestBody Map paramMap) throws Exception {
-//
-// String searchKeyword = paramMap.get("searchKeyword");
-// String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1");
-// String pageSize = StringUtil.getString(paramMap.get("pageSize") , DEFUALT_PAGE_SIZE);
-//
-// log.debug("listQnAsAjax > pageIndex = " + pageIndex);
-// log.debug("listQnAsAjax > pageSize = " + pageSize);
-// log.debug("listQnAsAjax > searchKeyword = " + searchKeyword);
-//
-// //-------------------------------
-// // REQ VO 구성
-// //-------------------------------
-// DataApiReqVO reqVO = new DataApiReqVO();
-// reqVO.setAuthKey(createAuthKey(req, authentication));
-// reqVO.setPageIndex(pageIndex);
-// reqVO.setPageSize(pageSize);
-// reqVO.addInfoItem("searchKeyword", searchKeyword);
-//
-// // 요청
-// DataApiResVO resVO = boardService.listQnAs(reqVO);
-//
-// //-------------------------------
-// // JSON변환 응답 처리
-// //-------------------------------
-// // JS-GRID 페이징 처리를 포함한 응답값 처리
-// // {data: [{...}],
-// // itemsCount: 255
-// // }
-// HashMap retMap = new HashMap();
-// retMap.put("data", resVO.getList());
-// retMap.put("itemsCount", resVO.getRecordTotCount());
-//
-// return makeResponseEntityJson(retMap);
-// }
-//
-//
-// /**
-// * 묻고답하기 상세 내용 조회한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping("/board/selectQnA.do")
-// public String selectQnA(HttpServletRequest req
-// , Authentication authentication
-// , @RequestParam Map paramMap
-// , ModelMap model) throws Exception {
-//
-// addParamFromInputFlash(paramMap, req);
-//
-// // 목록 이동시 전달할 매개변수
-// String searchKeyword = paramMap.get("searchKeyword");
-// String pageIndex = paramMap.get("pageIndex");
-// String pageSize = paramMap.get("pageSize");
-// String message = paramMap.get("message");
-//
-// // 게시물 번호
-// String articleNo = paramMap.get("articleNo");
-//
-// log.debug("selectQnA > pageIndex = " + pageIndex);
-// log.debug("selectQnA > pageSize = " + pageSize);
-// log.debug("selectQnA > searchKeyword = " + searchKeyword);
-// log.debug("selectQnA > articleNo = " + articleNo);
-// log.debug("selectQnA > message = " + message);
-//
-// //-------------------------------
-// // REQ VO 구성
-// //-------------------------------
-// DataApiReqVO reqVO = new DataApiReqVO();
-// reqVO.setAuthKey(createAuthKey(req, authentication));
-// reqVO.setPageIndex(pageIndex);
-// reqVO.setPageSize(pageSize);
-// reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID
-// reqVO.addInfoItem("articleNo", articleNo); // 게시물번호
-//
-// // 요청
-// DataApiResVO resVO = boardService.selectQnA(reqVO);
-//
-// // 반환 정보
-// model.addAttribute("articleNo" , articleNo);
-// model.addAttribute("article" , resVO.getInfo()); // 게시물 상세
-// model.addAttribute("preArticle" , resVO.getList().get(0)); // 이전글 정보
-// model.addAttribute("nextArticle" , resVO.getList().get(1)); // 다음글 정보
-// model.addAttribute("message" , message);
-// model.addAttribute("pageIndex" , pageIndex);
-// model.addAttribute("pageSize" , pageSize);
-// model.addAttribute("searchKeyword", searchKeyword);
-//
-// return "nlib/board/selectQnA";
-// }
-//
-// /**
-// * 묻고답하기 글작성화면을 표출한다.
-// *
-// * @param req
-// * @return
-// */
-// @RequestMapping("/board/insertQnAForm.do")
-// public String insertQnAForm(HttpServletRequest req, Authentication authentication
-// , @RequestParam Map paramMap
-// , ModelMap model) throws Exception {
-//
-// // 입력 매개변수 출력 설정
-// addParamsToModel(paramMap, model);
-//
-// NlibLoginVO loginVO = getNlibLoginVO(authentication);
-// if(StringUtil.isEmpty(paramMap.get("regUserName"))) model.addAttribute("regUserName", loginVO.getName());
-// if(StringUtil.isEmpty(paramMap.get("email"))) model.addAttribute("regUserName", loginVO.getEmail());
-//
-// return "nlib/board/insertQnAForm";
-// }
-//
-// /**
-// * 묻고답하기 등록 처리한다.
-// *
-// * @param req
-// * @param authentication
-// * @param paramMap
-// * @param model
-// * @return
-// */
-// @RequestMapping("/board/insertQnA.do")
-// public String insertQnA(HttpServletRequest req
-// , Authentication authentication
-// , @RequestParam Map paramMap
-// , RedirectAttributes redirectAttrs
-// , ModelMap model) throws Exception {
-//
-// NlibLoginVO loginVO = getNlibLoginVO(authentication);
-//
-// log.debug("paramMap > " + paramMap);
-//
-// String message = null;
-// String authKey = createAuthKey(req, authentication);
-//
-// //-------------------------------
-// // REQ VO 구성
-// //-------------------------------
-// DataApiReqVO reqVO = new DataApiReqVO();
-// reqVO.setAuthKey(authKey);
-// reqVO.addInfoItem("boardNo" , "QNA");
-// reqVO.addInfoItem("title" , paramMap.get("title"));
-// reqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
-// reqVO.addInfoItem("email" , paramMap.get("email"));
-// reqVO.addInfoItem("contentQeust", paramMap.get("contentQeust"));
-//
-// String fileListJsonStr = paramMap.get("fileList");
-// if(fileListJsonStr.startsWith("\"")) fileListJsonStr = fileListJsonStr.substring(1);
-// if(fileListJsonStr.endsWith("\"")) fileListJsonStr = fileListJsonStr.substring(0, fileListJsonStr.length()-1);
-// fileListJsonStr = fileListJsonStr.replaceAll("\\\\", "");
-//
-// log.debug("fileList : " + fileListJsonStr);
-//
-// /*
-// ObjectMapper mapper = new ObjectMapper();
-// List