소스정리 커밋
This commit is contained in:
parent
bc2f6ebe0c
commit
0078c89323
@ -44,7 +44,8 @@ public class BoardDAO extends DataApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
|
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
|
||||||
return null;
|
reqVO.setReqUrl(RESOURCE_URI);
|
||||||
|
return get(reqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
|
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
|
||||||
@ -52,7 +53,8 @@ public class BoardDAO extends DataApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
|
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
|
||||||
return null;
|
reqVO.setReqUrl(RESOURCE_URI);
|
||||||
|
return post(reqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
|
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
|
||||||
@ -60,7 +62,8 @@ public class BoardDAO extends DataApi
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
|
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
|
||||||
return null;
|
reqVO.setReqUrl(RESOURCE_URI);
|
||||||
|
return put(reqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -43,11 +43,11 @@ public class BoardServiceImpl implements BoardService
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
|
public DataApiResVO selectQnA(DataApiReqVO reqVO) {
|
||||||
return null;
|
return boardDAO.selectQnA(reqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
|
public DataApiResVO insertQnA(DataApiReqVO reqVO) {
|
||||||
return null;
|
return boardDAO.insertQnA(reqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
|
public DataApiResVO verifyWriter(DataApiReqVO reqVO) {
|
||||||
@ -55,7 +55,7 @@ public class BoardServiceImpl implements BoardService
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
|
public DataApiResVO updateQnA(DataApiReqVO reqVO) {
|
||||||
return null;
|
return boardDAO.updateQnA(reqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
|
public DataApiResVO deleteQnA(DataApiReqVO reqVO) {
|
||||||
|
|||||||
@ -18,12 +18,15 @@ import org.springframework.ui.ModelMap;
|
|||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
|
||||||
|
|
||||||
import nlib.bbs.service.BoardService;
|
import nlib.bbs.service.BoardService;
|
||||||
import nlib.cmm.NlibCommonController;
|
import nlib.cmm.NlibCommonController;
|
||||||
|
import nlib.cmm.crypto.AriaCrypto;
|
||||||
|
import nlib.cmm.crypto.NlibPasswordEncoder;
|
||||||
import nlib.restful.service.DataApiReqVO;
|
import nlib.restful.service.DataApiReqVO;
|
||||||
import nlib.restful.service.DataApiResVO;
|
import nlib.restful.service.DataApiResVO;
|
||||||
|
import nlib.user.service.NlibLoginVO;
|
||||||
|
import nlib.util.StringUtil;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class BoardController extends NlibCommonController
|
public class BoardController extends NlibCommonController
|
||||||
@ -32,6 +35,13 @@ public class BoardController extends NlibCommonController
|
|||||||
|
|
||||||
@Resource(name = "boardService")
|
@Resource(name = "boardService")
|
||||||
private BoardService boardService;
|
private BoardService boardService;
|
||||||
|
|
||||||
|
@Resource(name = "nlibPasswordEncoder")
|
||||||
|
private NlibPasswordEncoder nlibPasswordEncoder;
|
||||||
|
|
||||||
|
@Resource(name = "ariaCrypto")
|
||||||
|
private AriaCrypto ariaCrypto;
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AuthenticationManager authenticationManager;
|
private AuthenticationManager authenticationManager;
|
||||||
@ -77,8 +87,17 @@ public class BoardController extends NlibCommonController
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/board/listQnAs.do")
|
@RequestMapping("/board/listQnAs.do")
|
||||||
public String listQnAs(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> commandMap, ModelMap model) {
|
public String listQnAs(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
|
||||||
|
|
||||||
|
String searchKeyword = paramMap.get("searchKeyword");
|
||||||
|
String pageNo = paramMap.get("pageNo");
|
||||||
|
String pageRows = paramMap.get("pageRows");
|
||||||
|
|
||||||
|
// 반환 정보
|
||||||
|
model.addAttribute("pageNo" , pageNo);
|
||||||
|
model.addAttribute("pageRows" , pageRows);
|
||||||
|
model.addAttribute("searchKeyword", searchKeyword);
|
||||||
|
|
||||||
return "nlib/board/listQnAs";
|
return "nlib/board/listQnAs";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,26 +117,26 @@ public class BoardController extends NlibCommonController
|
|||||||
|
|
||||||
log.debug("listQnAs > pageNo = " + pageNo);
|
log.debug("listQnAs > pageNo = " + pageNo);
|
||||||
log.debug("listQnAs > pageRows = " + pageRows);
|
log.debug("listQnAs > pageRows = " + pageRows);
|
||||||
log.debug("listQnAs > keyword = " + searchKeyword);
|
log.debug("listQnAs > searchKeyword = " + searchKeyword);
|
||||||
|
|
||||||
//-------------------------------
|
//-------------------------------
|
||||||
// REQ VO 구성
|
// REQ VO 구성
|
||||||
//-------------------------------
|
//-------------------------------
|
||||||
DataApiReqVO reqVO = new DataApiReqVO();
|
DataApiReqVO reqVO = new DataApiReqVO();
|
||||||
reqVO.setAuthKey(getAuthKey(authentication));
|
reqVO.setAuthKey(createAuthKey(req, authentication));
|
||||||
reqVO.setPageNo(pageNo);
|
reqVO.setPageNo(pageNo);
|
||||||
reqVO.setPageRows(pageRows);
|
reqVO.setPageRows(pageRows);
|
||||||
|
|
||||||
// 추가 정보 설정
|
// 추가 정보 설정
|
||||||
HashMap<String, Object> info = new HashMap<String, Object>();
|
HashMap<String, Object> info = new HashMap<String, Object>();
|
||||||
info.put("keyword", searchKeyword);
|
info.put("searchKeyword", searchKeyword);
|
||||||
reqVO.setInfo(info);
|
reqVO.setInfo(info);
|
||||||
|
|
||||||
// 요청
|
// 요청
|
||||||
DataApiResVO resVO = boardService.listQnAs(reqVO);
|
DataApiResVO resVO = boardService.listQnAs(reqVO);
|
||||||
|
|
||||||
// JSON변환 응답 처리
|
// JSON변환 응답 처리
|
||||||
return makeResponseEntityJson(resVO);
|
return makeResponseEntityJson(resVO.getList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -128,7 +147,48 @@ public class BoardController extends NlibCommonController
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/board/selectQnA.do")
|
@RequestMapping("/board/selectQnA.do")
|
||||||
public String selectQnA(HttpServletRequest req) {
|
public String selectQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
|
||||||
|
|
||||||
|
// 목록 이동시 전달할 매개변수
|
||||||
|
String searchKeyword = paramMap.get("searchKeyword");
|
||||||
|
String pageNo = paramMap.get("pageNo");
|
||||||
|
String pageRows = paramMap.get("pageRows");
|
||||||
|
|
||||||
|
// 게시물 번호
|
||||||
|
String articleNo = paramMap.get("articleNo");
|
||||||
|
|
||||||
|
log.debug("selectQnA > pageNo = " + pageNo);
|
||||||
|
log.debug("selectQnA > pageRows = " + pageRows);
|
||||||
|
log.debug("selectQnA > searchKeyword = " + searchKeyword);
|
||||||
|
log.debug("selectQnA > articleNo = " + articleNo);
|
||||||
|
|
||||||
|
//-------------------------------
|
||||||
|
// REQ VO 구성
|
||||||
|
//-------------------------------
|
||||||
|
DataApiReqVO reqVO = new DataApiReqVO();
|
||||||
|
reqVO.setAuthKey(createAuthKey(req, authentication));
|
||||||
|
reqVO.setPageNo(pageNo);
|
||||||
|
reqVO.setPageRows(pageRows);
|
||||||
|
|
||||||
|
// 추가 정보 설정 : 게시판ID, 게시물번호
|
||||||
|
HashMap<String, Object> info = new HashMap<String, Object>();
|
||||||
|
info.put("boardNo", "QNA");
|
||||||
|
info.put("articleNo", articleNo);
|
||||||
|
reqVO.setInfo(info);
|
||||||
|
|
||||||
|
// 요청
|
||||||
|
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("pageNo" , pageNo);
|
||||||
|
model.addAttribute("pageRows" , pageRows);
|
||||||
|
model.addAttribute("searchKeyword", searchKeyword);
|
||||||
|
|
||||||
return "nlib/board/selectQnA";
|
return "nlib/board/selectQnA";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,13 +199,46 @@ public class BoardController extends NlibCommonController
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/board/insertQnAForm.do")
|
@RequestMapping("/board/insertQnAForm.do")
|
||||||
public String insertQnAForm(HttpServletRequest req) {
|
public String insertQnAForm(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
|
||||||
|
|
||||||
|
NlibLoginVO loginVO = getNlibLoginVO(authentication);
|
||||||
|
model.addAttribute("regUserName", loginVO.getName());
|
||||||
|
model.addAttribute("email", loginVO.getEmail());
|
||||||
|
|
||||||
return "nlib/board/insertQnAForm";
|
return "nlib/board/insertQnAForm";
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/board/insertQnA.do")
|
@RequestMapping("/board/insertQnA.do")
|
||||||
public String insertQnA(HttpServletRequest req) {
|
public String insertQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
|
||||||
return "nlib/board/insertQnA";
|
|
||||||
|
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"));
|
||||||
|
|
||||||
|
// 요청
|
||||||
|
DataApiResVO resVO = boardService.insertQnA(reqVO);
|
||||||
|
|
||||||
|
// 처리결과 확인
|
||||||
|
if(!resVO.isSuccess()) {
|
||||||
|
message = resVO.getResultMessage();
|
||||||
|
return "redirect:/board/insertQnAForm.do";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "redirect:nlib/board/listQnAs";
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/board/verifyWriter.do")
|
@RequestMapping("/board/verifyWriter.do")
|
||||||
@ -154,13 +247,134 @@ public class BoardController extends NlibCommonController
|
|||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/board/updateQnAForm.do")
|
@RequestMapping("/board/updateQnAForm.do")
|
||||||
public String updateQnAForm(HttpServletRequest req) {
|
public String updateQnAForm(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
|
||||||
|
|
||||||
|
// 목록 이동시 전달할 매개변수
|
||||||
|
String searchKeyword = paramMap.get("searchKeyword");
|
||||||
|
String pageNo = paramMap.get("pageNo");
|
||||||
|
String pageRows = paramMap.get("pageRows");
|
||||||
|
|
||||||
|
// 게시물 번호
|
||||||
|
String articleNo = paramMap.get("articleNo");
|
||||||
|
String articlePassword = paramMap.get("articlePassword");
|
||||||
|
|
||||||
|
log.debug("updateQnAForm > pageNo = " + pageNo);
|
||||||
|
log.debug("updateQnAForm > pageRows = " + pageRows);
|
||||||
|
log.debug("updateQnAForm > searchKeyword = " + searchKeyword);
|
||||||
|
log.debug("updateQnAForm > articleNo = " + articleNo);
|
||||||
|
log.debug("updateQnAForm > articlePassword = " + articlePassword);
|
||||||
|
|
||||||
|
if(StringUtil.isEmpty(articlePassword)) {
|
||||||
|
model.addAttribute("message", "비밀빈호가 올바르지 않습니다.(1)");
|
||||||
|
return "redirect:/board/selectQnA.do";
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------
|
||||||
|
// REQ VO 구성
|
||||||
|
//-------------------------------
|
||||||
|
DataApiReqVO reqVO = new DataApiReqVO();
|
||||||
|
reqVO.setAuthKey(createAuthKey(req, authentication));
|
||||||
|
reqVO.setPageNo(pageNo);
|
||||||
|
reqVO.setPageRows(pageRows);
|
||||||
|
|
||||||
|
// 추가 정보 설정 : 게시판ID, 게시물번호
|
||||||
|
HashMap<String, Object> info = new HashMap<String, Object>();
|
||||||
|
info.put("boardNo", "QNA");
|
||||||
|
info.put("articleNo", articleNo);
|
||||||
|
reqVO.setInfo(info);
|
||||||
|
|
||||||
|
// 요청
|
||||||
|
DataApiResVO resVO = boardService.selectQnA(reqVO);
|
||||||
|
|
||||||
|
// 비밀번호 확인
|
||||||
|
HashMap<String, Object> article = resVO.getInfo();
|
||||||
|
if(!articlePassword.equals(article.get("articlePassword"))) {
|
||||||
|
model.addAttribute("message", "비밀빈호가 올바르지 않습니다.(1)");
|
||||||
|
return "redirect:/board/selectQnA.do";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 반환 정보
|
||||||
|
model.addAttribute("articleNo" , articleNo);
|
||||||
|
model.addAttribute("article" , resVO.getInfo());
|
||||||
|
|
||||||
|
// 게시글 비밀번호 처리
|
||||||
|
String shaArticlePassword = nlibPasswordEncoder.encode(articlePassword);
|
||||||
|
String encArticlePassword = ariaCrypto.encode(shaArticlePassword, createAuthKey(req, authentication));
|
||||||
|
model.addAttribute("encArticlePassword", encArticlePassword);
|
||||||
|
|
||||||
|
// 검색 정보
|
||||||
|
model.addAttribute("pageNo" , pageNo);
|
||||||
|
model.addAttribute("pageRows" , pageRows);
|
||||||
|
model.addAttribute("searchKeyword", searchKeyword);
|
||||||
|
|
||||||
return "nlib/board/updateQnAForm";
|
return "nlib/board/updateQnAForm";
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/board/updateQnA.do")
|
@RequestMapping("/board/updateQnA.do")
|
||||||
public String updateQnA(HttpServletRequest req) {
|
public String updateQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map<String, String> paramMap, ModelMap model) {
|
||||||
return "nlib/board/updateQnA";
|
|
||||||
|
log.debug("paramMap > " + paramMap);
|
||||||
|
|
||||||
|
String message = null;
|
||||||
|
String authKey = createAuthKey(req, authentication);
|
||||||
|
|
||||||
|
// 목록 이동시 전달할 매개변수
|
||||||
|
String searchKeyword = paramMap.get("searchKeyword");
|
||||||
|
String pageNo = paramMap.get("pageNo");
|
||||||
|
String pageRows = paramMap.get("pageRows");
|
||||||
|
|
||||||
|
// 게시물 번호
|
||||||
|
String articleNo = paramMap.get("articleNo");
|
||||||
|
String encArticlePassword = paramMap.get("encArticlePassword");
|
||||||
|
String checkArticlePassword = ariaCrypto.decode(encArticlePassword, authKey);
|
||||||
|
|
||||||
|
//-------------------------------
|
||||||
|
// 비밀번호 유효 체크
|
||||||
|
//-------------------------------
|
||||||
|
// 기존 정보 조회
|
||||||
|
DataApiReqVO reqVO = new DataApiReqVO();
|
||||||
|
reqVO.setAuthKey(authKey);
|
||||||
|
reqVO.addInfoItem("articleNo", articleNo);
|
||||||
|
|
||||||
|
DataApiResVO resVO = boardService.selectQnA(reqVO);
|
||||||
|
String oldArticlePassword = resVO.getInfoItem("articlePassword");
|
||||||
|
if(checkArticlePassword == null || !checkArticlePassword.equals(oldArticlePassword)) {
|
||||||
|
message = "잘못된 접근입니다.";
|
||||||
|
// TODO 수정화면으로 다시 redirect 시킬것
|
||||||
|
return "redirect:/board/updateQnAForm.do";
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------
|
||||||
|
// REQ VO 구성
|
||||||
|
//-------------------------------
|
||||||
|
DataApiReqVO updateReqVO = new DataApiReqVO();
|
||||||
|
updateReqVO.setAuthKey(authKey);
|
||||||
|
updateReqVO.addInfoItem("boardNo" , "QNA");
|
||||||
|
updateReqVO.addInfoItem("articleNo" , articleNo);
|
||||||
|
updateReqVO.addInfoItem("title" , paramMap.get("title"));
|
||||||
|
updateReqVO.addInfoItem("regUserName" , paramMap.get("regUserName"));
|
||||||
|
updateReqVO.addInfoItem("email" , paramMap.get("email"));
|
||||||
|
updateReqVO.addInfoItem("contentQeust", paramMap.get("contentQeust"));
|
||||||
|
|
||||||
|
// 요청
|
||||||
|
DataApiResVO updateResVO = boardService.updateQnA(updateReqVO);
|
||||||
|
|
||||||
|
// 처리결과 확인
|
||||||
|
if(!updateResVO.isSuccess()) {
|
||||||
|
message = updateResVO.getResultMessage();
|
||||||
|
return "redirect:/board/updateQnAForm.do";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 반환 정보
|
||||||
|
model.addAttribute("articleNo" , updateResVO.getInfoItem("articleNo")); // 신규등록된 게시물 ID
|
||||||
|
model.addAttribute("article" , resVO.getInfo());
|
||||||
|
|
||||||
|
// 검색 정보
|
||||||
|
model.addAttribute("pageNo" , pageNo);
|
||||||
|
model.addAttribute("pageRows" , pageRows);
|
||||||
|
model.addAttribute("searchKeyword", searchKeyword);
|
||||||
|
|
||||||
|
return "redirect:nlib/board/selectQnA";
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping("/board/deleteQnA.do")
|
@RequestMapping("/board/deleteQnA.do")
|
||||||
|
|||||||
@ -1,131 +1,131 @@
|
|||||||
package nlib.cmm.crypto;
|
package nlib.cmm.crypto;
|
||||||
|
|
||||||
import org.apache.tomcat.util.codec.binary.Base64;
|
import org.apache.tomcat.util.codec.binary.Base64;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
|
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
|
||||||
import egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl;
|
import egovframework.rte.fdl.cryptography.impl.EgovARIACryptoServiceImpl;
|
||||||
import nlib.sample.web.SampleEncoderController;
|
import nlib.cmm.service.NlibProperty;
|
||||||
import nlib.util.StringUtil;
|
import nlib.sample.web.SampleEncoderController;
|
||||||
|
import nlib.util.StringUtil;
|
||||||
/**
|
|
||||||
* <pre>
|
/**
|
||||||
* @Class Name : AriaCrypto.java
|
* <pre>
|
||||||
*
|
* @Class Name : AriaCrypto.java
|
||||||
* @Description : 양방향 Aria 알고리즘 암복호화 처리 클래스 (egov Aria 알고리즘 구현체 사용)
|
*
|
||||||
*
|
* @Description : 양방향 Aria 알고리즘 암복호화 처리 클래스 (egov Aria 알고리즘 구현체 사용)
|
||||||
*
|
*
|
||||||
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
|
*
|
||||||
*
|
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
|
||||||
* </pre>
|
*
|
||||||
*
|
* </pre>
|
||||||
* @ ------------ -------- ---------------------------
|
*
|
||||||
* @ 수정일 수정자 수정내용
|
* @ ------------ -------- ---------------------------
|
||||||
* @ ------------ -------- ---------------------------
|
* @ 수정일 수정자 수정내용
|
||||||
* @ 2021. 7. 8. KNKIM 최초 생성
|
* @ ------------ -------- ---------------------------
|
||||||
*
|
* @ 2021. 7. 8. KNKIM 최초 생성
|
||||||
*
|
*
|
||||||
* @author 이씨플라자 * DIGITALSHIP KNKIM
|
*
|
||||||
* @since 2021. 7. 8.
|
* @author 이씨플라자 * DIGITALSHIP KNKIM
|
||||||
* @version 1.0
|
* @since 2021. 7. 8.
|
||||||
*
|
* @version 1.0
|
||||||
*/
|
*
|
||||||
@Component("ariaCrypto")
|
*/
|
||||||
public class AriaCrypto {
|
@Component("ariaCrypto")
|
||||||
|
public class AriaCrypto {
|
||||||
private static final Logger log = LoggerFactory.getLogger(AriaCrypto.class);
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(AriaCrypto.class);
|
||||||
/**
|
|
||||||
* 암호처리 시, 기본 키
|
/**
|
||||||
*/
|
* 암호처리 시, 기본 키
|
||||||
@Value("#{properties['crypto.aria.defaultKey']}")
|
*/
|
||||||
private String ARIA_DEFAULT_KEY;
|
private static String ARIA_DEFAULT_KEY = NlibProperty.getProperty("crypto.aria.defaultKey");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 기본키를 가지고 암호화한다.
|
* 기본키를 가지고 암호화한다.
|
||||||
*
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String encode(String value) {
|
public static String encode(String value) {
|
||||||
log.info("encode : 암호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
|
log.info("encode : 암호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
|
||||||
return encode(value, ARIA_DEFAULT_KEY);
|
return encode(value, ARIA_DEFAULT_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 전달받은 key(사용자고유번호 혹은 메일주소 등 salt값)로 암호화한다.
|
* 전달받은 key(사용자고유번호 혹은 메일주소 등 salt값)로 암호화한다.
|
||||||
*
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @param key
|
* @param key
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String encode(String value, String key) {
|
public static String encode(String value, String key) {
|
||||||
|
|
||||||
if(StringUtil.isEmpty(value)) {
|
if(StringUtil.isEmpty(value)) {
|
||||||
log.error("encode : 암호화할 문자열 정보가 없습니다.");
|
log.error("encode : 암호화할 문자열 정보가 없습니다.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(StringUtil.isEmpty(key)) {
|
if(StringUtil.isEmpty(key)) {
|
||||||
log.error("encode : 암호화에 사용할 키 정보가 없습니다.");
|
log.error("encode : 암호화에 사용할 키 정보가 없습니다.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
|
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
|
||||||
|
|
||||||
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
|
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
|
||||||
egovPasswordEncoder.setHashedPassword(hashedPassword);
|
egovPasswordEncoder.setHashedPassword(hashedPassword);
|
||||||
egovPasswordEncoder.setAlgorithm("SHA-256");
|
egovPasswordEncoder.setAlgorithm("SHA-256");
|
||||||
|
|
||||||
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
|
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
|
||||||
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
|
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
|
||||||
egovARIACryptoServiceImpl.setBlockSize(1025);
|
egovARIACryptoServiceImpl.setBlockSize(1025);
|
||||||
|
|
||||||
return Base64.encodeBase64String(egovARIACryptoServiceImpl.encrypt(value.getBytes(), key));
|
return Base64.encodeBase64String(egovARIACryptoServiceImpl.encrypt(value.getBytes(), key));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 기본키를 가지고 복호화한다.
|
* 기본키를 가지고 복호화한다.
|
||||||
*
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String decode(String value) {
|
public static String decode(String value) {
|
||||||
log.info("decode : 복호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
|
log.info("decode : 복호화에 사용할 키 정보가 없으므로 기본키 정보를 사용합니다 : " + ARIA_DEFAULT_KEY);
|
||||||
return decode(value, ARIA_DEFAULT_KEY);
|
return decode(value, ARIA_DEFAULT_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 전달받은 key(사용자고유번호 혹은 메일주소 등 salt값)로 복호화한다.
|
* 전달받은 key(사용자고유번호 혹은 메일주소 등 salt값)로 복호화한다.
|
||||||
* @param value
|
* @param value
|
||||||
* @param key
|
* @param key
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String decode(String value, String key) {
|
public static String decode(String value, String key) {
|
||||||
|
|
||||||
if(StringUtil.isEmpty(value)) {
|
if(StringUtil.isEmpty(value)) {
|
||||||
log.error("decode : 복호화할 암호문자열 정보가 없습니다.");
|
log.error("decode : 복호화할 암호문자열 정보가 없습니다.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(StringUtil.isEmpty(key)) {
|
if(StringUtil.isEmpty(key)) {
|
||||||
log.error("decode : 복호화에 사용할 키 정보가 없습니다.");
|
log.error("decode : 복호화에 사용할 키 정보가 없습니다.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
|
EgovPasswordEncoder egovPasswordEncoder = new EgovPasswordEncoder();
|
||||||
|
|
||||||
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
|
String hashedPassword = egovPasswordEncoder.encryptPassword(key);
|
||||||
egovPasswordEncoder.setHashedPassword(hashedPassword);
|
egovPasswordEncoder.setHashedPassword(hashedPassword);
|
||||||
egovPasswordEncoder.setAlgorithm("SHA-256");
|
egovPasswordEncoder.setAlgorithm("SHA-256");
|
||||||
|
|
||||||
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
|
EgovARIACryptoServiceImpl egovARIACryptoServiceImpl = new EgovARIACryptoServiceImpl();
|
||||||
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
|
egovARIACryptoServiceImpl.setPasswordEncoder(egovPasswordEncoder);
|
||||||
egovARIACryptoServiceImpl.setBlockSize(1025);
|
egovARIACryptoServiceImpl.setBlockSize(1025);
|
||||||
|
|
||||||
return new String(egovARIACryptoServiceImpl.decrypt(Base64.decodeBase64(value), key));
|
return new String(egovARIACryptoServiceImpl.decrypt(Base64.decodeBase64(value), key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,104 +1,104 @@
|
|||||||
package nlib.sample.web;
|
package nlib.sample.web;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.security.access.annotation.Secured;
|
import org.springframework.security.access.annotation.Secured;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.ui.ModelMap;
|
||||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
import nlib.cmm.qrcode.QRCodeUtil;
|
import nlib.cmm.qrcode.QRCodeUtil;
|
||||||
import nlib.user.service.NlibLoginVO;
|
import nlib.user.service.NlibLoginVO;
|
||||||
import nlib.util.StringUtil;
|
import nlib.util.StringUtil;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class BarcodeController {
|
public class BarcodeController {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(BarcodeController.class);
|
private static final Logger log = LoggerFactory.getLogger(BarcodeController.class);
|
||||||
|
|
||||||
/** QRCodeService */
|
/** QRCodeService */
|
||||||
@Resource(name = "qrCodeService")
|
@Resource(name = "qrCodeService")
|
||||||
private QRCodeUtil qrCodeService;
|
private QRCodeUtil qrCodeService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 샘플 : 회원정보를 입력받을 수 있는 폼을 구성하여 표출한다.
|
* 샘플 : 회원정보를 입력받을 수 있는 폼을 구성하여 표출한다.
|
||||||
*
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @param response
|
* @param response
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@RequestMapping(value="/sample/barcode/getMemberQRCodeForm.do", produces=MediaType.IMAGE_JPEG_VALUE)
|
@RequestMapping(value="/sample/barcode/getMemberQRCodeForm.do", produces=MediaType.IMAGE_JPEG_VALUE)
|
||||||
@Secured("ROLE_ADMIN")
|
@Secured("ROLE_ADMIN")
|
||||||
public String getMemberQRCodeForm(@ModelAttribute("loginVO") NlibLoginVO loginVO, ModelMap model) throws Exception {
|
public String getMemberQRCodeForm(@ModelAttribute("loginVO") NlibLoginVO loginVO, ModelMap model) throws Exception {
|
||||||
|
|
||||||
log.debug("getMemberQRCodeForm : loginVO=" + loginVO.toString());
|
log.debug("getMemberQRCodeForm : loginVO=" + loginVO.toString());
|
||||||
|
|
||||||
if(StringUtil.isEmpty(loginVO.getUniqId())) loginVO.setUniqId("USER0001-000001");
|
if(StringUtil.isEmpty(loginVO.getUniqId())) loginVO.setUniqId("USER0001-000001");
|
||||||
if(StringUtil.isEmpty(loginVO.getEmail())) loginVO.setEmail("myid@digitalship.co.kr");
|
if(StringUtil.isEmpty(loginVO.getEmail())) loginVO.setEmail("myid@digitalship.co.kr");
|
||||||
if(StringUtil.isEmpty(loginVO.getName())) loginVO.setName("홍길동");
|
if(StringUtil.isEmpty(loginVO.getName())) loginVO.setName("홍길동");
|
||||||
|
|
||||||
model.addAttribute("loginVO", loginVO);
|
model.addAttribute("loginVO", loginVO);
|
||||||
|
|
||||||
return "nlib/sample/getMemberInfoFromQRCode";
|
return "nlib/sample/getMemberInfoFromQRCode";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 샘플 : 입력받은 회원정보를 가지고 QR 2D 바코드를 생성하는 예를 보여준다.
|
* 샘플 : 입력받은 회원정보를 가지고 QR 2D 바코드를 생성하는 예를 보여준다.
|
||||||
* 결과값은 JPG 바코드 이미지 이다. (Zxing Lib 사용)
|
* 결과값은 JPG 바코드 이미지 이다. (Zxing Lib 사용)
|
||||||
*
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @param response
|
* @param response
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@RequestMapping(value="/sample/barcode/getMemberQRCode.do", produces=MediaType.IMAGE_JPEG_VALUE)
|
@RequestMapping(value="/sample/barcode/getMemberQRCode.do", produces=MediaType.IMAGE_JPEG_VALUE)
|
||||||
public @ResponseBody byte[] getMemberQRCode(@ModelAttribute("loginVO") NlibLoginVO loginVO, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
public @ResponseBody byte[] getMemberQRCode(@ModelAttribute("loginVO") NlibLoginVO loginVO, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||||
|
|
||||||
log.debug("getMemberQRCode : loginVO=" + loginVO.toString());
|
log.debug("getMemberQRCode : loginVO=" + loginVO.toString());
|
||||||
|
|
||||||
BufferedImage bufferedImage = qrCodeService.generateMemberQRCodeImage(loginVO);
|
BufferedImage bufferedImage = qrCodeService.generateMemberQRCodeImage(loginVO);
|
||||||
|
|
||||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||||
ImageIO.write( bufferedImage , "jpg", byteArrayOutputStream);
|
ImageIO.write( bufferedImage , "jpg", byteArrayOutputStream);
|
||||||
byte[] bs = byteArrayOutputStream.toByteArray();
|
byte[] bs = byteArrayOutputStream.toByteArray();
|
||||||
response.setContentLength(bs.length);
|
response.setContentLength(bs.length);
|
||||||
|
|
||||||
return byteArrayOutputStream.toByteArray();
|
return byteArrayOutputStream.toByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 샘플 : 회원정보 QR 2D 바코드 내용을 입력받아 사용자VO 정보를 추출하는 예를 보여준다.
|
* 샘플 : 회원정보 QR 2D 바코드 내용을 입력받아 사용자VO 정보를 추출하는 예를 보여준다.
|
||||||
*
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @param response
|
* @param response
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@RequestMapping(value="/sample/barcode/getMemberInfoFromQRCode.do")
|
@RequestMapping(value="/sample/barcode/getMemberInfoFromQRCode.do")
|
||||||
public String getMemberInfoFromQRCode(@RequestParam String barcodeText, ModelMap model) throws Exception {
|
public String getMemberInfoFromQRCode(@RequestParam String barcodeText, ModelMap model) throws Exception {
|
||||||
|
|
||||||
log.debug("getMemberInfoFromQRCode : barcodeText=" + barcodeText);
|
log.debug("getMemberInfoFromQRCode : barcodeText=" + barcodeText);
|
||||||
|
|
||||||
NlibLoginVO loginVO = qrCodeService.getMemberInfoFromQRCode(barcodeText);
|
NlibLoginVO loginVO = qrCodeService.getMemberInfoFromQRCode(barcodeText);
|
||||||
log.debug("getMemberInfoFromQRCode : loginVO=" + loginVO.toString());
|
log.debug("getMemberInfoFromQRCode : loginVO=" + loginVO.toString());
|
||||||
|
|
||||||
model.addAttribute("loginVO", loginVO);
|
model.addAttribute("loginVO", loginVO);
|
||||||
|
|
||||||
return "nlib/sample/getMemberInfoFromQRCode";
|
return "nlib/sample/getMemberInfoFromQRCode";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,38 +1,38 @@
|
|||||||
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||||
<c:set var="pageTitle"><spring:message code="comCmmErr.accessDenied.code"/></c:set><!-- 사용자접근권한 에러 -->
|
<c:set var="pageTitle"><spring:message code="comCmmErr.accessDenied.code"/></c:set><!-- 사용자접근권한 에러 -->
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title><spring:message code="title.html"/></title>
|
<title><spring:message code="title.html"/></title>
|
||||||
<link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css" />
|
<link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css" />
|
||||||
<script language="javascript">
|
<script language="javascript">
|
||||||
function fncGoAfterErrorPage(){
|
function fncGoAfterErrorPage(){
|
||||||
history.back(-2);
|
history.back(-2);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div style="width: 1000px; margin: 50px auto 50px;">
|
<div style="width: 1000px; margin: 50px auto 50px;">
|
||||||
<p style="font-size: 18px; color: #000; margin-bottom: 10px; "><img src="<c:url value='/images/egovframework/com/cmm/er_logo.jpg' />" width="379" height="57" /></p>
|
<p style="font-size: 18px; color: #000; margin-bottom: 10px; "><img src="<c:url value='/images/egovframework/com/cmm/er_logo.jpg' />" width="379" height="57" /></p>
|
||||||
<div style="border: ppx solid #666; padding: 20px;">
|
<div style="border: ppx solid #666; padding: 20px;">
|
||||||
<!-- Xss(Cross Site Scripting) Error -->
|
<!-- Xss(Cross Site Scripting) Error -->
|
||||||
<p style="color:red; margin-bottom: 8px; ">${pageTitle}</p>
|
<p style="color:red; margin-bottom: 8px; ">${pageTitle}</p>
|
||||||
|
|
||||||
<div class="boxType1" style="width: 700px;">
|
<div class="boxType1" style="width: 700px;">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="error">
|
<div class="error">
|
||||||
<p class="title"><spring:message code="comCmmErr.accessDenied.title" /></p><!-- 현재 페이지에 대한 접근권한이 없습니다! -->
|
<p class="title"><spring:message code="comCmmErr.accessDenied.title" /></p><!-- 현재 페이지에 대한 접근권한이 없습니다! -->
|
||||||
<p class="cont mb20">${pageTitle}<br /></p>
|
<p class="cont mb20">${pageTitle}<br /></p>
|
||||||
<span class="btn_style1 blue"><a href="javascript:fncGoAfterErrorPage();"><spring:message code="comCmmErr.button" /><!-- 이전 페이지 --></a></span>
|
<span class="btn_style1 blue"><a href="javascript:fncGoAfterErrorPage();"><spring:message code="comCmmErr.button" /><!-- 이전 페이지 --></a></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -1,39 +1,39 @@
|
|||||||
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||||
<c:set var="pageTitle"><spring:message code="comCmmErr.bizException.code"/></c:set><!-- 비즈니스로직처리 에러 -->
|
<c:set var="pageTitle"><spring:message code="comCmmErr.bizException.code"/></c:set><!-- 비즈니스로직처리 에러 -->
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title><spring:message code="title.html"/></title>
|
<title><spring:message code="title.html"/></title>
|
||||||
<link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css" />
|
<link href="<c:url value='/css/egovframework/com/com.css' />" rel="stylesheet" type="text/css" />
|
||||||
|
|
||||||
<script language="javascript">
|
<script language="javascript">
|
||||||
function fncGoAfterErrorPage(){
|
function fncGoAfterErrorPage(){
|
||||||
history.back(-2);
|
history.back(-2);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div style="width: 1000px; margin: 50px auto 50px;">
|
<div style="width: 1000px; margin: 50px auto 50px;">
|
||||||
<p style="font-size: 18px; color: #000; margin-bottom: 10px; "><img src="<c:url value='/images/egovframework/com/cmm/er_logo.jpg' />" width="379" height="57" /></p>
|
<p style="font-size: 18px; color: #000; margin-bottom: 10px; "><img src="<c:url value='/images/egovframework/com/cmm/er_logo.jpg' />" width="379" height="57" /></p>
|
||||||
<div style="border: ppx solid #666; padding: 20px;">
|
<div style="border: ppx solid #666; padding: 20px;">
|
||||||
<!-- Xss(Cross Site Scripting) Error -->
|
<!-- Xss(Cross Site Scripting) Error -->
|
||||||
<p style="color:red; margin-bottom: 8px; ">${pageTitle}<br /></p>
|
<p style="color:red; margin-bottom: 8px; ">${pageTitle}<br /></p>
|
||||||
|
|
||||||
<div class="boxType1" style="width: 700px;">
|
<div class="boxType1" style="width: 700px;">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div class="error">
|
<div class="error">
|
||||||
<p class="title"><spring:message code="comCmmErr.bizException.title" /></p><!-- 비즈니스 로직 처리 중 발생했습니다! -->
|
<p class="title"><spring:message code="comCmmErr.bizException.title" /></p><!-- 비즈니스 로직 처리 중 발생했습니다! -->
|
||||||
<p class="cont mb20">${pageTitle}<br /></p>
|
<p class="cont mb20">${pageTitle}<br /></p>
|
||||||
<span class="btn_style1 blue"><a href="javascript:fncGoAfterErrorPage();"><spring:message code="comCmmErr.button" /><!-- 이전 페이지 --></a></span>
|
<span class="btn_style1 blue"><a href="javascript:fncGoAfterErrorPage();"><spring:message code="comCmmErr.button" /><!-- 이전 페이지 --></a></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1,43 +1,43 @@
|
|||||||
<%
|
<%
|
||||||
/**
|
/**
|
||||||
* <pre>
|
* <pre>
|
||||||
* @Class Name : getSampleInfo.jsp
|
* @Class Name : getSampleInfo.jsp
|
||||||
*
|
*
|
||||||
* @Description : RESTful API 호출 샘플
|
* @Description : RESTful API 호출 샘플
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
|
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @ ------------ -------- ---------------------------
|
* @ ------------ -------- ---------------------------
|
||||||
* @ 수정일 수정자 수정내용
|
* @ 수정일 수정자 수정내용
|
||||||
* @ ------------ -------- ---------------------------
|
* @ ------------ -------- ---------------------------
|
||||||
* @ 2021. 6. 15. KNKIM 최초 생성
|
* @ 2021. 6. 15. KNKIM 최초 생성
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @author 이씨플라자 * DIGITALSHIP KNKIM
|
* @author 이씨플라자 * DIGITALSHIP KNKIM
|
||||||
* @since 2021. 6. 15.
|
* @since 2021. 6. 15.
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
%>
|
%>
|
||||||
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
|
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
|
||||||
<c:set var="pageTitle"><spring:message code="nlib.title"/> - 결과</c:set>
|
<c:set var="pageTitle"><spring:message code="nlib.title"/> - 결과</c:set>
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>${pageTitle}</title>
|
<title>${pageTitle}</title>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
<script type="text/javaScript" language="javascript">
|
<script type="text/javaScript" language="javascript">
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
All
|
All
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user