diff --git a/data/fileupload/bbs/ancmnt/UR-1D9F07B0D8F84938887817B05FC83E90-4 b/data/fileupload/bbs/ancmnt/UR-1D9F07B0D8F84938887817B05FC83E90-4 new file mode 100644 index 00000000..b4f8308f Binary files /dev/null and b/data/fileupload/bbs/ancmnt/UR-1D9F07B0D8F84938887817B05FC83E90-4 differ diff --git a/src/main/java/nlib/bbs/service/ArticleVO.java b/src/main/java/nlib/bbs/service/ArticleVO.java index 2109d092..7110efe5 100644 --- a/src/main/java/nlib/bbs/service/ArticleVO.java +++ b/src/main/java/nlib/bbs/service/ArticleVO.java @@ -1,12 +1,17 @@ package nlib.bbs.service; +import java.util.List; + import nlib.cmm.service.PagingVO; +import nlib.util.StringUtil; public class ArticleVO extends PagingVO { private String articleId; /* 게시글ID */ private String mngOrgCd; /* 관리문화원코드 */ + private String mngOrgNm; /* 관리문화원명 */ private String bdType; /* 게시판유형 */ + private String bdTypeName; /* 게시판유형명 */ private String title; /* 제목 */ private String content; /* 내용 */ @@ -18,12 +23,27 @@ public class ArticleVO extends PagingVO { private int viewCnt; /* 조회수 */ private String bdAttachFileId; /* 첨부파일아이디 */ + private String attachYn; /* 첨부파일존재여부 */ private String regId; /* 등록자아이디 */ + private String regNm; /* 등록자명 */ private String regDd; /* 등록일자 */ private String modId; /* 등록자아이디 */ private String modDd; /* 등록일자 */ + private int rno; /* 글번호 */ + + // 검색관련 + private String searchType; /* 검색대상구분 */ + private String searchKeyword; /* 검색어 */ + + // 첨부파일 + private List attachFiles = null; /* 첨부파일목록 */ + + public int getAttachFileCnt() { + if(attachFiles == null) return 0; + return attachFiles.size(); + } public String getArticleId() { return articleId; @@ -115,6 +135,57 @@ public class ArticleVO extends PagingVO { public void setModDd(String modDd) { this.modDd = modDd; } - + public String getRegNm() { + return regNm; + } + public void setRegNm(String regNm) { + this.regNm = regNm; + } + public int getRno() { + return rno; + } + public void setRno(int rno) { + this.rno = rno; + } + public String getSearchType() { + return searchType; + } + public void setSearchType(String searchType) { + this.searchType = searchType; + } + public String getSearchKeyword() { + return searchKeyword; + } + public String getEscapeSearchKeyword() { + return StringUtil.getSqlSearchKeyword(searchKeyword); + } + public void setSearchKeyword(String searchKeyword) { + this.searchKeyword = searchKeyword; + } + public String getAttachYn() { + return attachYn; + } + public void setAttachYn(String attachYn) { + this.attachYn = attachYn; + } + public String getMngOrgNm() { + return mngOrgNm; + } + public void setMngOrgNm(String mngOrgNm) { + this.mngOrgNm = mngOrgNm; + } + public String getBdTypeName() { + return bdTypeName; + } + public void setBdTypeName(String bdTypeName) { + this.bdTypeName = bdTypeName; + } + public List getAttachFiles() { + return attachFiles; + } + public void setAttachFiles(List attachFiles) { + this.attachFiles = attachFiles; + } + } diff --git a/src/main/java/nlib/bbs/service/AttachFileVO.java b/src/main/java/nlib/bbs/service/AttachFileVO.java new file mode 100644 index 00000000..169d94d9 --- /dev/null +++ b/src/main/java/nlib/bbs/service/AttachFileVO.java @@ -0,0 +1,167 @@ +package nlib.bbs.service; + +/** + *
+ * @Class Name : AttachFileVO.java
+ * 
+ * @Description : 첨부파일 정보 VO 
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 9. 14. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 9. 14. + * @version 1.0 + * + */ +public class AttachFileVO { + + private String subPathKey; /* 첨부파일서브경로 */ + + private String fileMask; /* 첨부파일아이디 */ + private String fileId; /* 업무 아이디 */ + private int fileSeq; /* 파일 번호 */ + private String fileName; /* 파일 이름 */ + private int fileSize; /* 파일 사이즈 */ + private String fileTypeCd; /* 파일 유형(디지털화사용) */ + private int downloadCount; /* 파일 다운로드 횟수 */ + private String downloadExpireDate; /* 파일 만료 날짜 */ + private int downloadLimitCount; /* 파일 다운로드 제한 횟수 */ + + private String deleteYn; /* 삭제 여부 */ + private String streamingUrl; /* 스트리밍URL */ + private String content; /* 내용주기 */ + private String atchTypeCd; /* 첨부파일유형 */ + + private String regDd; /* 등록 날짜 */ + + + public String getFileMask() { + return fileMask; + } + + public void setFileMask(String fileMask) { + this.fileMask = fileMask; + } + + public String getFileId() { + return fileId; + } + + public void setFileId(String fileId) { + this.fileId = fileId; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileTypeCd() { + return fileTypeCd; + } + + public void setFileTypeCd(String fileTypeCd) { + this.fileTypeCd = fileTypeCd; + } + + public String getDownloadExpireDate() { + return downloadExpireDate; + } + + public void setDownloadExpireDate(String downloadExpireDate) { + this.downloadExpireDate = downloadExpireDate; + } + + public String getDeleteYn() { + return deleteYn; + } + + public void setDeleteYn(String deleteYn) { + this.deleteYn = deleteYn; + } + + public String getStreamingUrl() { + return streamingUrl; + } + + public void setStreamingUrl(String streamingUrl) { + this.streamingUrl = streamingUrl; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getAtchTypeCd() { + return atchTypeCd; + } + + public void setAtchTypeCd(String atchTypeCd) { + this.atchTypeCd = atchTypeCd; + } + + public String getRegDd() { + return regDd; + } + + public void setRegDd(String regDd) { + this.regDd = regDd; + } + + public int getFileSeq() { + return fileSeq; + } + + public void setFileSeq(int fileSeq) { + this.fileSeq = fileSeq; + } + + public int getFileSize() { + return fileSize; + } + + public void setFileSize(int fileSize) { + this.fileSize = fileSize; + } + + public int getDownloadCount() { + return downloadCount; + } + + public void setDownloadCount(int downloadCount) { + this.downloadCount = downloadCount; + } + + public int getDownloadLimitCount() { + return downloadLimitCount; + } + + public void setDownloadLimitCount(int downloadLimitCount) { + this.downloadLimitCount = downloadLimitCount; + } + + public String getSubPathKey() { + return subPathKey; + } + + public void setSubPathKey(String subPathKey) { + this.subPathKey = subPathKey; + } + +} diff --git a/src/main/java/nlib/bbs/service/impl/AncmntDAO.java b/src/main/java/nlib/bbs/service/impl/AncmntDAO.java index 721ce74c..cd22f369 100644 --- a/src/main/java/nlib/bbs/service/impl/AncmntDAO.java +++ b/src/main/java/nlib/bbs/service/impl/AncmntDAO.java @@ -37,34 +37,10 @@ import nlib.util.StringUtil; * */ @Mapper("ancmntDAO") -public interface AncmntDAO { +public interface AncmntDAO extends BoardDAO { - /* - * 게시글 목록을 조회한다. + /* + * BoardDAO 상속 내용과 동일 */ - 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 index 077c2952..3e179132 100644 --- a/src/main/java/nlib/bbs/service/impl/AncmntServiceImpl.java +++ b/src/main/java/nlib/bbs/service/impl/AncmntServiceImpl.java @@ -10,54 +10,19 @@ import org.springframework.stereotype.Service; import nlib.bbs.service.ArticleVO; import nlib.bbs.service.BoardService; +import nlib.util.StringUtil; @Service("ancmntService") -public class AncmntServiceImpl implements BoardService +public class AncmntServiceImpl extends BoardServiceImpl { - private static final Logger log = LoggerFactory.getLogger(AncmntServiceImpl.class); + static Logger log = LoggerFactory.getLogger(AncmntServiceImpl.class); @Resource(name="ancmntDAO") - private AncmntDAO ancmntDAO; + AncmntDAO ancmntDAO; - - /* - * 게시글 목록을 조회한다. - */ - public List listArticles(ArticleVO articleVO) throws Exception { - - return ancmntDAO.listArticles(articleVO); + @Override + public BoardDAO getBoardDAO() { + return ancmntDAO; } - - /** - * 게시글 건수를 조회한다. - */ - 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 13b8ee7f..0372bc77 100644 --- a/src/main/java/nlib/bbs/service/impl/BoardDAO.java +++ b/src/main/java/nlib/bbs/service/impl/BoardDAO.java @@ -10,13 +10,14 @@ 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.bbs.service.AttachFileVO; import nlib.cmm.service.NlibProperty; import nlib.user.service.NlibLoginVO; import nlib.util.StringUtil; /** *
- * @Class Name : AncmntDAO.java
+ * @Class Name : BoardDAO.java
  * 
  * @Description : 공지사항 정보 제공 DAO 
  * 
@@ -67,4 +68,15 @@ public interface BoardDAO {
 	 * @throws Exception
 	 */
 	public ArticleVO selectArticle(ArticleVO notiVO) throws Exception;
+	
+
+	/**
+	 * 첨부파일 목록을 조회한다.  
+	 * 
+	 * @param
+	 * @return
+	 * @throws Exception
+	 */
+	public List listAttachFiles(String attachFileId) throws Exception;
+	
 }
diff --git a/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java b/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
index b36d88cb..84b4508b 100644
--- a/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
+++ b/src/main/java/nlib/bbs/service/impl/BoardServiceImpl.java
@@ -1,70 +1,68 @@
-
 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.BoardServiceApi;
-import nlib.restful.service.DataApiReqVO;
-import nlib.restful.service.DataApiResVO;
+import nlib.bbs.service.ArticleVO;
+import nlib.bbs.service.BoardService;
+import nlib.util.StringUtil;
 
-@Service("boardService")
-public class BoardServiceImpl implements BoardServiceApi
+public abstract class BoardServiceImpl implements BoardService
 {
-	private static final Logger log = LoggerFactory.getLogger(BoardServiceImpl.class);
+	static Logger log = LoggerFactory.getLogger(BoardServiceImpl.class);
 	
-	@Resource(name = "boardDAO")
-	private BoardDAOApi boardDAO;
-
-
-	public DataApiResVO listNotices(DataApiReqVO reqVO)  {
-		return boardDAO.listNotices(reqVO);
-	}
-
-	public DataApiResVO selectNotice(DataApiReqVO reqVO)  {
-		return boardDAO.selectNotice(reqVO);
-	}
-
-	public DataApiResVO listFAQs(DataApiReqVO reqVO)  {
-		return boardDAO.listFAQs(reqVO);
-	}
-	
-	public DataApiResVO selectFAQ(DataApiReqVO reqVO) {
-		return boardDAO.selectFAQ(reqVO);
-	}
+	public abstract BoardDAO getBoardDAO();
 
 	/* 
-	 * 묻고답하기 목록 조회한다.
-	 * 
-	 * (non-Javadoc)
-	 * @see nlib.bbs.service.BoardService#listQnAs(nlib.restful.service.DataApiReqVO)
+	 * 게시글 목록을 조회한다. 
 	 */
-	public DataApiResVO listQnAs(DataApiReqVO reqVO)  {
-		return boardDAO.listQnAs(reqVO);
+	public List listArticles(ArticleVO articleVO) throws Exception {
+		
+		return getBoardDAO().listArticles(articleVO);
 	}
-
-	public DataApiResVO selectQnA(DataApiReqVO reqVO)  {
-		return boardDAO.selectQnA(reqVO);
+	
+	/** 
+	 * 게시글 건수를 조회한다.  
+	 */
+	public int countArticles(ArticleVO articleVO) throws Exception {
+		
+		return getBoardDAO().countArticles(articleVO);
 	}
+	
 
-	public DataApiResVO insertQnA(DataApiReqVO reqVO)  {
-		return boardDAO.insertQnA(reqVO);
+	/**
+	 * 조회수를 증가시킨다. 
+	 * 
+	 * @param 
+	 * @return
+	 * @throws Exception
+	 */
+	public int updateRead(ArticleVO articleVO) throws Exception {
+		return getBoardDAO().updateRead(articleVO);
 	}
-
-	public DataApiResVO verifyWriter(DataApiReqVO reqVO)  {
-		return null;
+	
+	/**
+	 * 게시글 상세 내용을 조회한다.  
+	 * 
+	 * @param
+	 * @return
+	 * @throws Exception
+	 */
+	public ArticleVO selectArticle(ArticleVO articleVO) throws Exception {
+		
+		// 게시글 조회 
+		ArticleVO retVO = getBoardDAO().selectArticle(articleVO);
+		// 첨부파일 조회 
+		if(StringUtil.isNotEmpty(retVO.getBdAttachFileId())) retVO.setAttachFiles(getBoardDAO().listAttachFiles(retVO.getBdAttachFileId()));
+		// 조회수 증가 
+		updateRead(articleVO);
+		
+		return retVO;
 	}
-
-	public DataApiResVO updateQnA(DataApiReqVO reqVO)  {
-		return boardDAO.updateQnA(reqVO);
-	}
-
-	public DataApiResVO deleteQnA(DataApiReqVO reqVO)  {
-		return boardDAO.deleteQnA(reqVO);
-	}
-
-
+	
 }
\ No newline at end of file
diff --git a/src/main/java/nlib/bbs/service/impl/BoardServiceImplApi.java b/src/main/java/nlib/bbs/service/impl/BoardServiceImplApi.java
new file mode 100644
index 00000000..058c263d
--- /dev/null
+++ b/src/main/java/nlib/bbs/service/impl/BoardServiceImplApi.java
@@ -0,0 +1,70 @@
+
+package nlib.bbs.service.impl;
+
+import javax.annotation.Resource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import nlib.bbs.service.BoardServiceApi;
+import nlib.restful.service.DataApiReqVO;
+import nlib.restful.service.DataApiResVO;
+
+@Service("boardService")
+public class BoardServiceImplApi implements BoardServiceApi
+{
+	private static final Logger log = LoggerFactory.getLogger(BoardServiceImplApi.class);
+	
+	@Resource(name = "boardDAO")
+	private BoardDAOApi boardDAO;
+
+
+	public DataApiResVO listNotices(DataApiReqVO reqVO)  {
+		return boardDAO.listNotices(reqVO);
+	}
+
+	public DataApiResVO selectNotice(DataApiReqVO reqVO)  {
+		return boardDAO.selectNotice(reqVO);
+	}
+
+	public DataApiResVO listFAQs(DataApiReqVO reqVO)  {
+		return boardDAO.listFAQs(reqVO);
+	}
+	
+	public DataApiResVO selectFAQ(DataApiReqVO reqVO) {
+		return boardDAO.selectFAQ(reqVO);
+	}
+
+	/* 
+	 * 묻고답하기 목록 조회한다.
+	 * 
+	 * (non-Javadoc)
+	 * @see nlib.bbs.service.BoardService#listQnAs(nlib.restful.service.DataApiReqVO)
+	 */
+	public DataApiResVO listQnAs(DataApiReqVO reqVO)  {
+		return boardDAO.listQnAs(reqVO);
+	}
+
+	public DataApiResVO selectQnA(DataApiReqVO reqVO)  {
+		return boardDAO.selectQnA(reqVO);
+	}
+
+	public DataApiResVO insertQnA(DataApiReqVO reqVO)  {
+		return boardDAO.insertQnA(reqVO);
+	}
+
+	public DataApiResVO verifyWriter(DataApiReqVO reqVO)  {
+		return null;
+	}
+
+	public DataApiResVO updateQnA(DataApiReqVO reqVO)  {
+		return boardDAO.updateQnA(reqVO);
+	}
+
+	public DataApiResVO deleteQnA(DataApiReqVO reqVO)  {
+		return boardDAO.deleteQnA(reqVO);
+	}
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/nlib/bbs/web/AncmntController.java b/src/main/java/nlib/bbs/web/AncmntController.java
index fac6d034..7639cdd2 100644
--- a/src/main/java/nlib/bbs/web/AncmntController.java
+++ b/src/main/java/nlib/bbs/web/AncmntController.java
@@ -47,23 +47,11 @@ public class AncmntController extends NlibCommonController
 	public String listAncmnts(
 			HttpServletRequest req, 
 			@RequestParam Map paramMap,
-			ArticleVO articleVO,
+			ArticleVO searchArticleVO,
 			ModelMap model
 			) throws Exception {
 
-		int pageIndex = StringUtil.toNumber(paramMap.get("pageIndex"), 1);
-		int pageSize  = StringUtil.toNumber(paramMap.get("pageSize"), DEFUALT_PAGE_SIZE);
-		
-		log.debug("listAncmnt > pageIndex = " + pageIndex);
-		log.debug("listAncmnt > pageSize = " + pageSize);
-    	
-		ArticleVO searchArticleVO = new ArticleVO();
-		searchArticleVO.setPageIndex(pageIndex);
-		searchArticleVO.setPageSize(pageSize);
-		
-		model.addAttribute("searchArticleVO", searchArticleVO);
-		model.addAttribute("pageSize", pageSize);
-		model.addAttribute("pageIndex", pageIndex);
+		model.addAttribute("searchArticle", searchArticleVO);
     	
     	return "nlib/bbs/listAncmnts";
 	}
@@ -75,22 +63,17 @@ public class AncmntController extends NlibCommonController
 	 * @return
 	 */
 	@RequestMapping(value="/bbs/listAncmntsAjax.do")
-	public ResponseEntity listAncmntsAjax(HttpServletRequest req, 
-			Authentication authentication, @RequestBody Map paramMap) throws Exception {
+	public ResponseEntity listAncmntsAjax(
+			HttpServletRequest req, 
+			Authentication authentication,
+			@RequestBody ArticleVO searchArticleVO) throws Exception {
 
-		int pageIndex = StringUtil.toNumber(paramMap.get("pageIndex"), 1);
-		int pageSize  = StringUtil.toNumber(paramMap.get("pageSize"), DEFUALT_PAGE_SIZE);
+		if(searchArticleVO.getPageIndex() < 1) searchArticleVO.setPageIndex(1);
+		if(searchArticleVO.getPageSize() < 1) searchArticleVO.setPageSize(DEFUALT_PAGE_SIZE);
 		
-		log.debug("listNotificationsAjax > pageIndex = " + pageIndex);
-		log.debug("listNotificationsAjax > pageSize = " + pageSize);
+		List list = ancmntService.listArticles(searchArticleVO);
 		
-
-		ArticleVO searchNotificationtVO = new ArticleVO();
-		searchNotificationtVO.setPageIndex(pageIndex);
-		searchNotificationtVO.setPageSize(pageSize);
-		List list = ancmntService.listArticles(searchNotificationtVO);
-		
-		int totRecordCount = ancmntService.countArticles(searchNotificationtVO);
+		int totRecordCount = ancmntService.countArticles(searchArticleVO);
 		
 		//-------------------------------
 		// JSON변환 응답 처리
@@ -107,41 +90,22 @@ public class AncmntController extends NlibCommonController
 	}
 
 
-//	/**
-//	 * 알림 상세 내용 조회한다.
-//	 * 
-//	 * @param req
-//	 * @return
-//	 */
-//	@RequestMapping("/cmm/selectNotificationAjax.do")
-//	public ResponseEntity selectNotificationAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map paramMap) throws Exception {
-//
-//		String notiId = paramMap.get("notiId"); // 알림ID 
-//		String pageIndex = paramMap.get("pageIndex");
-//		String pageSize = paramMap.get("pageSize");
-//		
-//		log.debug("selectNotificationAjax > notiId = " + notiId);
-//		
-//		ArticleVO paramNotiVO = new ArticleVO();
-//		paramNotiVO.setNotiId(notiId);
-//		paramNotiVO.setRecvUserId(getMbInfoId(req));
-//		paramNotiVO.setPageIndex(pageIndex);
-//		paramNotiVO.setPageSize(pageSize);
-//		
-//		// 읽음처리 및 상세내용 조회 
-//		ArticleVO articleVO = ancmntService.selectNotification(paramNotiVO);
-//
-//		//-------------------------------
-//		// JSON변환 응답 처리
-//		//-------------------------------
-//    	// JS-GRID 페이징 처리를 포함한 응답값 처리
-//    	// {data: [{...}], 
-//    	//  itemsCount: 255
-//    	// }
-//    	HashMap retMap = new HashMap();
-//    	retMap.put("data", articleVO);
-//    	
-//    	return makeResponseEntityJson(retMap);
-//	}
-//	
+	/**
+	 * 알림 상세 내용 조회한다.
+	 * 
+	 * @param req
+	 * @return
+	 */
+	@RequestMapping("/bbs/selectAncmntArticle.do")
+	public String selectAncmntArticle(HttpServletRequest req, Authentication authentication, ArticleVO searchArticleVO, ModelMap model) throws Exception {
+
+		// 읽음처리 및 상세내용 조회 
+		ArticleVO articleVO = ancmntService.selectArticle(searchArticleVO);
+
+		model.addAttribute("searchArticle", searchArticleVO);
+		model.addAttribute("article", articleVO);
+    	
+    	return "nlib/bbs/selectAncmntArticle";
+	}
+	
 }
\ No newline at end of file
diff --git a/src/main/java/nlib/cmm/fileupload/FileUploadController.java b/src/main/java/nlib/cmm/fileupload/FileUploadController.java
index a4e65e58..0bcf8ecb 100644
--- a/src/main/java/nlib/cmm/fileupload/FileUploadController.java
+++ b/src/main/java/nlib/cmm/fileupload/FileUploadController.java
@@ -2,7 +2,6 @@ package nlib.cmm.fileupload;
 
 import java.io.File;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -13,7 +12,6 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -28,8 +26,8 @@ import org.springframework.web.servlet.ModelAndView;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import egovframework.com.cmm.EgovWebUtil;
 import egovframework.com.cmm.service.FileVO;
+import nlib.bbs.service.AttachFileVO;
 import nlib.cmm.exception.ErrorMessage;
 import nlib.cmm.service.NlibProperty;
 import nlib.util.FileUtil;
@@ -63,19 +61,16 @@ public class FileUploadController {
 
 	private static final Logger log = LoggerFactory.getLogger(FileUploadController.class);
 
-	@Resource(name="nlibProperty")
-	NlibProperty nlibProperty;
-	
 	
 	/**
 	 * 첨부파일이 저장되는 최상위 위치 
 	 */
-	private String FILEUPLOAD_BASE_PATH = nlibProperty.getProperty("fileupload.base.path");
+	private String FILEUPLOAD_BASE_PATH = NlibProperty.getProperty("fileupload.base.path");
 	
 	/**
 	 * 첨부파일 임시 저장 위치 
 	 */
-	private String FILEUPLOAD_TEMP_SUBPATH = nlibProperty.getProperty("fileupload.temp.subpath");
+	private String FILEUPLOAD_TEMP_SUBPATH = NlibProperty.getProperty("fileupload.temp.subpath");
 
 	/**
 	 * 경로 부적합 오류 메시지 
@@ -121,7 +116,7 @@ public class FileUploadController {
 				ErrorMessage errorMessage = new ErrorMessage("ERROR", message);
 				return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMessage);
 			}
-			String subPath = nlibProperty.getProperty(subPathKey);
+			String subPath = NlibProperty.getProperty(subPathKey);
 			if(StringUtil.isEmpty(subPath)) {
 				message = "첨부파일이 저장되는 하위 위치정보값을 찾을 수 없습니다.";
 				log.error(message + " : 매개변수 subPathKey의 속성값 부재");
@@ -222,16 +217,16 @@ public class FileUploadController {
 	 * @return
 	 * @throws Exception
 	 */
-	@RequestMapping(value="/fileupload/downloadFiles.do")
-	public ModelAndView download(@RequestParam HashMap params, ModelAndView mv) throws Exception {
+	@RequestMapping(value="/fileupload/downloadAttachFile.do")
+	public ModelAndView downloadAttachFile(AttachFileVO attachFileVO, ModelAndView mv) throws Exception {
 		
 		// TODO 권한 설정 기능 추가 필요 
 		
-		String fid = (String) params.get("fid");
-		String fname = (String) params.get("fname");
-		String subPath = nlibProperty.getProperty((String) params.get("subPathKey"));
+		String subPath = NlibProperty.getProperty(attachFileVO.getSubPathKey());
+		String fullPath = FILEUPLOAD_BASE_PATH + "/" + subPath + "/" + attachFileVO.getFileId() + "-" + attachFileVO.getFileSeq();
+		
+		log.debug("downloadAttachFile > fullPath = " + fullPath);
 		
-		String fullPath = FILEUPLOAD_BASE_PATH + "/" + subPath + "/" + fid;
 		if(FileUtil.isNotValid(fullPath)) {
 			throw new Exception(MSG_NOT_VALID_FILE_PATH);
 		}
@@ -243,7 +238,7 @@ public class FileUploadController {
 		
 		mv.setViewName("downloadView"); // dispatcher-servlet.xml내 BeanNameViewResolver 정의 
 		mv.addObject("downloadFile", file);
-		mv.addObject("fname", fname);
+		mv.addObject("fname", attachFileVO.getFileName());
 		
 		return mv;
 	}
diff --git a/src/main/java/nlib/cmm/fileupload/FileVO.java b/src/main/java/nlib/cmm/fileupload/FileVO.java
new file mode 100644
index 00000000..874e1046
--- /dev/null
+++ b/src/main/java/nlib/cmm/fileupload/FileVO.java
@@ -0,0 +1,64 @@
+package nlib.cmm.fileupload;
+
+/**
+ * 
+ * @Class Name : AttachFileVO.java
+ * 
+ * @Description : 첨부파일 정보 VO 
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 9. 14. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 9. 14. + * @version 1.0 + * + */ +public class FileVO { + + private String subPathKey; /* 첨부파일서브경로 */ + private String fileMask; /* 첨부파일아이디 */ + private String fileId; /* 업무 아이디 */ + private int fileSeq; /* 파일 번호 */ + private String fileName; /* 파일 이름 */ + + public String getSubPathKey() { + return subPathKey; + } + public void setSubPathKey(String subPathKey) { + this.subPathKey = subPathKey; + } + public String getFileMask() { + return fileMask; + } + public void setFileMask(String fileMask) { + this.fileMask = fileMask; + } + public String getFileId() { + return fileId; + } + public void setFileId(String fileId) { + this.fileId = fileId; + } + public int getFileSeq() { + return fileSeq; + } + public void setFileSeq(int fileSeq) { + this.fileSeq = fileSeq; + } + public String getFileName() { + return fileName; + } + public void setFileName(String fileName) { + this.fileName = fileName; + } + +} diff --git a/src/main/java/nlib/cmm/service/NotificationVO.java b/src/main/java/nlib/cmm/service/NotificationVO.java index 4067fef2..57dd86b4 100644 --- a/src/main/java/nlib/cmm/service/NotificationVO.java +++ b/src/main/java/nlib/cmm/service/NotificationVO.java @@ -15,6 +15,7 @@ public class NotificationVO extends PagingVO { private String recvUserId; /* 알림대상자 회원아이디 */ private String readYn; /* 알림확인여부 */ private int totCnt = 0; /* 알림건수(최근1개월) */ + private int rno = 0; /* 행번호 */ public String getNotiId() { return notiId; @@ -88,5 +89,11 @@ public class NotificationVO extends PagingVO { public void setNotiTypeNm(String notiTypeNm) { this.notiTypeNm = notiTypeNm; } + public int getRno() { + return rno; + } + public void setRno(int rno) { + this.rno = rno; + } } diff --git a/src/main/java/nlib/cmm/service/PagingVO.java b/src/main/java/nlib/cmm/service/PagingVO.java index d16e97c5..a14e66ad 100644 --- a/src/main/java/nlib/cmm/service/PagingVO.java +++ b/src/main/java/nlib/cmm/service/PagingVO.java @@ -2,8 +2,10 @@ package nlib.cmm.service; public class PagingVO { + public final int DEFAULT_PAGE_SIZE = NlibProperty.getInt("list.paging.page.size", 10); + int pageIndex = 1; /* 페이지 번호 */ - int pageSize = NlibProperty.getInt("list.paging.page.size", 10); /* 페이지 크기 (1페이지당 보여줄 자료건수) */ + int pageSize = DEFAULT_PAGE_SIZE; /* 페이지 크기 (1페이지당 보여줄 자료건수) */ int totRecordCount; /* 총건수 */ public int getPageIndex() { @@ -11,7 +13,8 @@ public class PagingVO { } public void setPageIndex(int pageIndex) { - this.pageIndex = pageIndex; + if(pageIndex < 1) pageIndex = 1; + else this.pageIndex = pageIndex; } public void setPageIndex(String sPageIndex) { @@ -27,7 +30,8 @@ public class PagingVO { } public void setPageSize(int pageSize) { - this.pageSize = pageSize; + if(pageSize < 1) pageSize = DEFAULT_PAGE_SIZE; + else this.pageSize = pageSize; } public void setPageSize(String sPageSize) { diff --git a/src/main/java/nlib/col/service/impl/CollectionDAO.java b/src/main/java/nlib/col/service/impl/CollectionDAO.java index 3fc9fdc8..b4d9ff11 100644 --- a/src/main/java/nlib/col/service/impl/CollectionDAO.java +++ b/src/main/java/nlib/col/service/impl/CollectionDAO.java @@ -5,7 +5,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Repository; -import nlib.bbs.service.impl.BoardDAO; +import nlib.bbs.service.impl.BoardDAOApi; import nlib.restful.DataApi; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; diff --git a/src/main/java/nlib/col/web/CollectionController.java b/src/main/java/nlib/col/web/CollectionController.java index 0120b648..a9504b53 100644 --- a/src/main/java/nlib/col/web/CollectionController.java +++ b/src/main/java/nlib/col/web/CollectionController.java @@ -79,7 +79,6 @@ public class CollectionController extends NlibCommonController // REQ VO 구성 //------------------------------- DataApiReqVO reqVO = new DataApiReqVO(); - reqVO.setAuthKey(createAuthKey(req, authentication)); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); reqVO.addInfoItem("searchKeyword", searchKeyword); @@ -143,7 +142,6 @@ public class CollectionController extends NlibCommonController // REQ VO 구성 //------------------------------- DataApiReqVO reqVO = new DataApiReqVO(); - reqVO.setAuthKey(createAuthKey(req, authentication)); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); reqVO.addInfoItem("boardNo", "QNA"); // 게시판ID @@ -203,7 +201,6 @@ public class CollectionController extends NlibCommonController // REQ VO 구성 //------------------------------- DataApiReqVO reqVO = new DataApiReqVO(); - reqVO.setAuthKey(createAuthKey(req, authentication)); reqVO.setPageIndex(pageIndex); reqVO.setPageSize(pageSize); reqVO.addInfoItem("searchKeyword", searchKeyword); diff --git a/src/main/java/nlib/util/StringUtil.java b/src/main/java/nlib/util/StringUtil.java index 5882e9bd..a8a921e1 100644 --- a/src/main/java/nlib/util/StringUtil.java +++ b/src/main/java/nlib/util/StringUtil.java @@ -181,4 +181,14 @@ public class StringUtil extends StringUtils { return url + delim + name + "=" + getString(value, ""); } + + public static String getSqlSearchKeyword(String str) { + + if(isNotEmpty(str)) { + String ret = str.replaceAll("\\%", "\\\\%"); + return ret.replaceAll("_", "\\\\_"); + } + + return str; + } } diff --git a/src/main/resources/egovframework/mapper/config/mapper-config.xml b/src/main/resources/egovframework/mapper/config/mapper-config.xml index 51a0648a..e1f3607a 100644 --- a/src/main/resources/egovframework/mapper/config/mapper-config.xml +++ b/src/main/resources/egovframework/mapper/config/mapper-config.xml @@ -18,6 +18,8 @@ + + \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/nlib/bbs/AncmntDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/bbs/AncmntDAO_SQL.xml index 3bb6ae60..24251c6b 100644 --- a/src/main/resources/egovframework/mapper/nlib/bbs/AncmntDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/bbs/AncmntDAO_SQL.xml @@ -3,12 +3,68 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + AND S.TITLE LIKE CONCAT('%', #{escapeSearchKeyword}, '%') + + + + + AND S.CONTENT LIKE CONCAT('%', #{escapeSearchKeyword}, '%') + + + + + + + + + - - - - + SELECT + A.FILE_MASK + , A.FILE_ID + , A.FILE_SEQ + , A.FILE_NAME + , A.FILE_SIZE + , A.FILE_TYPE_CD + , A.DOWNLOAD_COUNT + , A.DOWNLOAD_EXPIRE_DATE + , A.DOWNLOAD_LIMIT_COUNT + , DATE_FORMAT(A.REG_DATE, '%Y-%m-%d') AS REG_DD + , A.DELETE_YN + , A.STREAMING_URL + , A.CONTENT + , A.ATCH_TYPE_CD + FROM J_ATTACHFILE A + WHERE A.FILE_ID = #{attachFileId} + ORDER BY A.FILE_SEQ diff --git a/src/main/resources/egovframework/mapper/nlib/cmm/NotificationDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/cmm/NotificationDAO_SQL.xml index 50d68f5c..830b377f 100644 --- a/src/main/resources/egovframework/mapper/nlib/cmm/NotificationDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/cmm/NotificationDAO_SQL.xml @@ -40,9 +40,11 @@ , IF(A.READ_DD IS NULL, 'N', 'Y') AS READ_YN , DATE_FORMAT(A.REG_DD, '%Y-%M-%D') AS REG_DD , COUNT(A.NOTI_ID) OVER(PARTITION BY 1) AS TOT_CNT + , A2.RNO FROM SM_NOTIFICATION A INNER JOIN ( SELECT S.NOTI_ID + , ROW_NUMBER() OVER() AS RNO FROM SM_NOTIFICATION S WHERE S.RECV_USER_ID = #{recvUserId} AND S.REG_DD > DATE_SUB(NOW(), INTERVAL 1 MONTH) diff --git a/src/main/resources/nlib/nlib.properties b/src/main/resources/nlib/nlib.properties index fd365f3f..3b2d31a0 100644 --- a/src/main/resources/nlib/nlib.properties +++ b/src/main/resources/nlib/nlib.properties @@ -83,6 +83,7 @@ fileupload.temp.subpath = /temp # \ubb3b\uace0\ub2f5\ud558\uae30 \uac8c\uc2dc\ud310 \uc11c\ube0c\uc704\uce58 : \ucca8\ubd80\ud30c\uc77c \ucd5c\uc0c1\uc704 \uc704\uce58 \uc774\ud558\uc758 \uc704\uce58 \uc815\ubcf4\ub97c \uc124\uc815 fileupload.bbs.qna.subpath = /bbs/qna +fileupload.bbs.ancmnt.subpath = /bbs/ancmnt # \uba54\uc77c \uacbd\ub85c mailing.sender.membership.template = C:/iams/workspace/nlib/src/main/webapp/mail/mail_template.html diff --git a/src/main/webapp/WEB-INF/jsp/nlib/bbs/listAncmnts.jsp b/src/main/webapp/WEB-INF/jsp/nlib/bbs/listAncmnts.jsp index 17d04529..bbed5b1a 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/bbs/listAncmnts.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/bbs/listAncmnts.jsp @@ -63,11 +63,19 @@ var pageIndex = ( filter && filter.pageIndex ? filter.pageIndex : $("#pageIndex").val()); var pageSize = ( filter && filter.pageSize ? filter.pageSize : $("#pageSize").val()); + var searchType = $("#searchType").val(); + var searchKeyword = $("#searchKeyword").val(); + + $("#pageIndex").val(pageIndex); + var inputData = { - "pageIndex" : pageIndex - , "pageSize": pageSize}; + "pageIndex" : pageIndex + , "pageSize" : pageSize + , "searchType" : searchType + , "searchKeyword" : searchKeyword + }; //-------------------------------------- @@ -116,12 +124,11 @@ //====================================== fields: [ { title:"ID", name: "articleId" , type: "text", width: 200, align: "left" }, - { title:"알림방법", name: "notiMethod" , type: "text", width: 100, align: "center"}, - { title:"구분코드", name: "notiTypeCd" , type: "text", width: 100, align: "center"}, - { title:"구분", name: "notiTypeNm" , type: "text", width: 100, align: "center"}, + { title:"번호", name: "rno" , type: "text", width: 200, align: "center" }, { title:"제목", name: "title" , type: "text", width: 200, align: "left" }, - { title:"확인여부", name: "readYn" , type: "text", width: 100, align: "center"}, - { title:"날짜", name: "regDd" , type: "text", width: 100, align: "center"} + { title:"등록자", name: "regNm" , type: "text", width: 100, align: "center"}, + { title:"등록일", name: "regDd" , type: "text", width: 100, align: "center"}, + { title:"첨부", name: "bdAttachFileId" , type: "text", width: 100, align: "center"} ] }); @@ -137,47 +144,17 @@ // 선택한 글 상세 보기로 이동 - function fn_viewDetail(articleId, selectedRow) { + function fn_viewDetail(articleId) { - var $selectedRow = $(selectedRow); - var reqUrl = "${pageContext.request.contextPath}/bbs/selectAncmntAjax.do"; - var inputData = { "articleId" : articleId }; - - //-------------------------------------- - // 요청 처리 - //-------------------------------------- - $.ajax({ - type: "post", - contentType: "application/json; charset=utf-8", - url: reqUrl, - dataType: "json", - data: JSON.stringify(inputData), - }).done(function(response){ - var jsonObj = JSON.parse(response); - $("#jsGrid").find('table tr.answer').remove(); - //alert("DDDDDDDD remove = " + $("#jsGrid")[0].scrollHeight); - - $("#jsGrid").jsGrid("rowByItem", $selectedRow).data("JSGridItem")["readYn"] = jsonObj.data.readYn; - $selectedRow.find('td').eq(GRID_INDEX_OF_READYN).text(jsonObj.data.readYn); - - $selectedRow.after("" + jsonObj.data.content - + "
" + jsonObj.data.content - + "
" + jsonObj.data.content - + "
" + jsonObj.data.content - + "
알림확인여부=" + jsonObj.data.readYn - + "
알림일자=" + jsonObj.data.regDd - + ""); - }); - - $("#jsGrid").closest('.ui-jqgrid-bdiv').width($("#jsGrid").closest('.ui-jqgrid-bdiv').width() + 1); - + $("#articleId").val(articleId); + $("#articleForm").submit(); } // 그리드 데이터 조회 호출 function fn_searchArticle(pageSize, pageIndex) { $("#jsGrid").jsGrid("search" - , {'pageSize' : (pageSize ? pageSize : fn_getIntValue("pageSize", ${pageSize}) ), - 'pageIndex' : (pageIndex ? pageIndex : fn_getIntValue("pageIndex", ${pageIndex})) + , {'pageSize' : (pageSize ? pageSize : fn_getIntValue("pageSize", ${searchArticle.pageSize}) ), + 'pageIndex' : (pageIndex ? pageIndex : fn_getIntValue("pageIndex", ${searchArticle.pageIndex})) } ); } @@ -193,15 +170,21 @@  
-
+ - + - - + + + + +
diff --git a/src/main/webapp/WEB-INF/jsp/nlib/bbs/selectAncmntArticle.jsp b/src/main/webapp/WEB-INF/jsp/nlib/bbs/selectAncmntArticle.jsp new file mode 100644 index 00000000..cb35059b --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/bbs/selectAncmntArticle.jsp @@ -0,0 +1,155 @@ +<% +/** + *
+ * @Class Name : selectAncmntArticle.jsp
+ * 
+ * @Description : 공지사항 상세내용을 조회한다.
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 9. 14. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 9. 14. + * @version 1.0 + * + */ + %> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + +공지사항 - 상세조회 + + + + +${pageTitle} + + + + + + + +

${pageTitle }

+ +메시지 : ${message } +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
유형 + 공지 + 일반 + + 작성일${article.regDd }
제목${article.title}
질문내용${article.content}
+ <% + // 파일정보 : 저장파일ID=원파일명 + %> + + ${attachFile.fileName} (${attachFile.fileSize} byte(s))
+
+
첨부파일 없음 +
+ +
+ + + + +
+ +
+ + +
+ + + + +
+ + + diff --git a/src/main/webapp/WEB-INF/tiles/inc/menu.jsp b/src/main/webapp/WEB-INF/tiles/inc/menu.jsp index 20dcb569..139299e3 100644 --- a/src/main/webapp/WEB-INF/tiles/inc/menu.jsp +++ b/src/main/webapp/WEB-INF/tiles/inc/menu.jsp @@ -6,7 +6,7 @@
  • 인사말
  • 이용안내
  • 공지사항
  • -
  • 공지사항(DB)
  • +
  • 공지사항(DB)
  • 자주하는질문
  • 묻고답하기
  • 찾아오시는길
  • diff --git a/src/main/webapp/WEB-INF/tiles/tiles-layout.jsp b/src/main/webapp/WEB-INF/tiles/tiles-layout.jsp index d720d19f..825e1ff8 100644 --- a/src/main/webapp/WEB-INF/tiles/tiles-layout.jsp +++ b/src/main/webapp/WEB-INF/tiles/tiles-layout.jsp @@ -11,7 +11,7 @@ - + diff --git a/src/main/webapp/favicon.ico b/src/main/webapp/favicon.ico new file mode 100644 index 00000000..81800f7f Binary files /dev/null and b/src/main/webapp/favicon.ico differ diff --git a/src/main/webapp/favicon/android-chrome-192x192.png b/src/main/webapp/favicon/android-chrome-192x192.png new file mode 100644 index 00000000..68ecc1b5 Binary files /dev/null and b/src/main/webapp/favicon/android-chrome-192x192.png differ diff --git a/src/main/webapp/favicon/android-chrome-512x512.png b/src/main/webapp/favicon/android-chrome-512x512.png new file mode 100644 index 00000000..1991871f Binary files /dev/null and b/src/main/webapp/favicon/android-chrome-512x512.png differ diff --git a/src/main/webapp/favicon/apple-touch-icon.png b/src/main/webapp/favicon/apple-touch-icon.png new file mode 100644 index 00000000..ae211756 Binary files /dev/null and b/src/main/webapp/favicon/apple-touch-icon.png differ diff --git a/src/main/webapp/favicon/favicon-16x16.png b/src/main/webapp/favicon/favicon-16x16.png new file mode 100644 index 00000000..a1ed4bef Binary files /dev/null and b/src/main/webapp/favicon/favicon-16x16.png differ diff --git a/src/main/webapp/favicon/favicon-32x32.png b/src/main/webapp/favicon/favicon-32x32.png new file mode 100644 index 00000000..06bdee21 Binary files /dev/null and b/src/main/webapp/favicon/favicon-32x32.png differ diff --git a/src/main/webapp/favicon/favicon.ico b/src/main/webapp/favicon/favicon.ico new file mode 100644 index 00000000..81800f7f Binary files /dev/null and b/src/main/webapp/favicon/favicon.ico differ diff --git a/src/main/webapp/favicon/site.webmanifest b/src/main/webapp/favicon/site.webmanifest new file mode 100644 index 00000000..45dc8a20 --- /dev/null +++ b/src/main/webapp/favicon/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/src/main/webapp/temp/date.txt b/src/main/webapp/temp/date.txt new file mode 100644 index 00000000..5aab76d2 --- /dev/null +++ b/src/main/webapp/temp/date.txt @@ -0,0 +1 @@ +Tue Sep 14 2021 08:25:17 GMT+0900 (대한민국 표준시) \ No newline at end of file diff --git a/src/main/webapp/temp/test.html b/src/main/webapp/temp/test.html index b8ff83a1..5b8c364f 100644 --- a/src/main/webapp/temp/test.html +++ b/src/main/webapp/temp/test.html @@ -8,8 +8,10 @@ + diff --git a/src/main/webapp/temp/test.js b/src/main/webapp/temp/test.js new file mode 100644 index 00000000..e69de29b