package itn.let.mjo.addragency.web; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.EgovFileMngUtil; import itn.com.cmm.service.FileVO; import itn.com.cmm.util.RedirectUrlMaker; import itn.let.cop.bbs.service.Board; import itn.let.cop.bbs.service.BoardMasterVO; import itn.let.cop.bbs.service.EgovBBSAttributeManageService; import itn.let.mjo.addr.service.AddrGroupService; import itn.let.mjo.addr.service.AddrService; import itn.let.mjo.addragency.service.AddrAgencyService; import itn.let.mjo.addragency.service.AddrAgencyVO; import itn.let.mjo.mjocommon.MjonCommon; import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.JoinSettingVO; import itn.let.utl.sim.service.EgovClntInfo; import itn.let.utl.user.service.CheckBoardUtil; import itn.let.utl.user.service.CheckFileUtil; import itn.let.utl.user.service.CheckLoginUtil; import itn.let.utl.user.service.MjonNoticeSendUtil; @Controller public class AddrAgencyController { /* @Resource(name = "MjonMsgSentService") private MjonMsgSentService mjonMsgSentService; @Resource(name = "EgovCmmUseService") private EgovCmmUseService cmmUseService; */ @Resource(name="addrAgencyService") private AddrAgencyService addrAgencyService; @Resource(name = "checkBoardUtil") private CheckBoardUtil checkBoardUtil; @Resource(name = "checkFileUtil") private CheckFileUtil checkFileUtil; @Resource(name = "checkLoginUtil") private CheckLoginUtil checkLoginUtil; @Resource(name = "EgovBBSAttributeManageService") private EgovBBSAttributeManageService bbsAttrbService; @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; @Resource(name="EgovFileMngUtil") private EgovFileMngUtil egovFileMngUtil; @Resource(name="EgovFileMngService") private EgovFileMngService fileMngService; @Resource(name="AddrService") private AddrService addrService; @Resource(name="AddrGroupService") private AddrGroupService addrGroupService; /** 알림전송 Util */ @Resource(name = "mjonNoticeSendUtil") private MjonNoticeSendUtil mjonNoticeSendUtil; @Resource(name="MjonCommon") private MjonCommon mjonCommon; /** 사이트 설정 */ @Resource(name = "egovSiteManagerService") EgovSiteManagerService egovSiteManagerService; private static final Logger logger = LoggerFactory.getLogger(AddrAgencyController.class); ///////////////////////////////////////////////////////////////////////////////////////// // // // USER // // /** * 주소록 입력 대행(무료) 등록 및 리스트 화면 * @param addrVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/mjon/addragency/selectAddrAgencyList.do"}) public String selectAddrAgencyListUser( HttpServletRequest request , @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO , ModelMap model , RedirectAttributes redirectAttributes ) throws Exception { logger.debug("AddrAgencyController-selectAddrAgencyListUser"); //사용자 로그인 여부 체크 String isLogin = checkLoginUtil.isUserLogin4PageMove(redirectAttributes); if (!"Y".equals(isLogin)) return isLogin; //login 정보 전달 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); model.addAttribute("loginVO", loginVO); //ajax를 위한 현재 URL 정보 전달 addrAgencyVO.setUrl(request.getRequestURI()); return "/web/addragency/AddrAgencyList"; } /** * 주소록 입력 대행(무료) 등록 리스트 ajax 부분 * @param addrVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/mjon/addragency/selectAddrAgencyListAjax.do"}) public String selectAddrAgencyListAjax( HttpServletRequest request , @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO , ModelMap model , RedirectAttributes redirectAttributes ) throws Exception { logger.debug("AddrAgencyController-selectAddrAgencyListAjax"); //사용자 로그인 여부 체크 String isLogin = checkLoginUtil.isLoginCheck4JsonPage(redirectAttributes); if (!"Y".equals(isLogin)) return "/web/mjon/addragency/selectAddrAgencyList"; //호출하는 base 페이지로 return 해야 한다. //로그인 정보 획득 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); // pageing step1 PaginationInfo paginationInfo = this.setPagingStep1(addrAgencyVO); // pageing step2 addrAgencyVO = this.setPagingStep2(addrAgencyVO, paginationInfo); //대상 리스트 가져오기 addrAgencyVO.setSiteNm(loginVO.getId()); List addrList = addrAgencyService.selectList(addrAgencyVO); // pageing step3 paginationInfo = this.setPagingStep3(addrList, paginationInfo); //대상 리스트, 페이징 정보 전달 model.addAttribute("resultList", addrList); model.addAttribute("paginationInfo", paginationInfo); return "/web/addragency/AddrAgencyListAjax"; } /** * (사용자)게시물을 등록한다. * * @param boardVO * @param board * @param model * @return * @throws Exception */ @RequestMapping(value= { "/web/mjon/addragency/insertAddrAgencyAjax.do" , "/uss/ion/addragency/insertAddrAgencyAjax.do" } ) public ModelAndView insertAddrAgencyAjax( HttpServletRequest request , @ModelAttribute("insertAgency") AddrAgencyVO addrAgencyVO , final MultipartHttpServletRequest multiRequest , @ModelAttribute("board") Board board //, ModelMap model , ModelAndView modelAndView , RedirectAttributes redirectAttributes ) throws Exception { logger.debug("AddrAgencyController-insertAddrAgencyAjax"); //json 알림 modelAndView.setViewName("jsonView"); //사용자 로그인 여부 체크 for json String isLogin = checkLoginUtil.isLoginCheck4JsonAction(modelAndView); if ("N".equals(isLogin)) return modelAndView; //로그인 정보 획득 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); //게시판 관리 정보 획득 및 사용 여부 체크 BoardMasterVO bmVO = checkBoardUtil.checkBoardUse(board.getBbsId(), modelAndView, bbsAttrbService); if (bmVO == null) return modelAndView; //파일 정상 처리 여부와 첨부 파일 정보 String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO); if ("ERROR".equals(atchFileId)) return modelAndView; //게시판 등록하기 modelAndView = this.insertAddrAgencyBoard(modelAndView, atchFileId, addrAgencyVO, board.getNttCn(), loginVO.getId(), multiRequest); // 법인폰 알람여부 체크 JoinSettingVO joinSettingVO = new JoinSettingVO(); joinSettingVO = egovSiteManagerService.selectAdminNotiDetail(); // 이메일 체크 if (joinSettingVO != null && joinSettingVO.getEmailNoti().equals("Y")) { String emailTitle = "번호관리 > 주소록 입력대행 요청"; // CS관리자 이메일 알림전송 mjonNoticeSendUtil.csAdminEmailNoticeSend(loginVO.getName(), loginVO.getId(), emailTitle); } // SMS 체크 if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) { String smsTitle = "주소록 입력대행 요청"; // CS관리자 SMS 알림전송 mjonNoticeSendUtil.csAdminSmsNoticeSend(loginVO.getId(), smsTitle); } // SLACK 체크 if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) { // Slack 메시지 발송(단순본문) String msg = "[문자온] 주소록 입력대행 요청 - " + loginVO.getName() +"("+ loginVO.getId() + ")"; mjonCommon.sendSimpleSlackMsg(msg); } return modelAndView; } /* * 1.url 이동 * 2.ajax * 2-1.page call return htem * 2-2.action call return success or fail * * 1. * a call b redirect c * * 2-1.ajax call * blank html * * 2-2. * return fail * * */ ///////////////////////////////////////////////////////////////////////////////////////// // // // ADMIN // // /** * 주소록 입력 대행(무료) 관리 화면 * @param addrVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/uss/ion/addragency/selectAddrAgencyList.do"}) public String selectAddrAgencyList( HttpServletRequest request , @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO , ModelMap model , RedirectAttributes redirectAttributes ) throws Exception { logger.debug("AddrAgencyController-selectAddrAgencyList"); //관리자 로그인 여부 체크 String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes); if (!"Y".equals(isLogin)) return isLogin; //로그인 정보 획득 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); //login 정보 model.addAttribute("loginVO", loginVO); //ajax를 위한 현재 URL 정보 받기 addrAgencyVO.setUrl(request.getRequestURI()); return "/uss/ion/addragency/AddrAgencyList"; } /** * 주소록 입력 대행(무료) 관리 리스트 ajax 부분 * @param addrVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/uss/ion/addragency/selectAddrAgencyListAjax.do"}) public String selectAddrAgencyListAjaxAdmin( HttpServletRequest request , @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO , ModelMap model , RedirectAttributes redirectAttributes ) throws Exception { logger.debug("AddrAgencyController-selectAddrAgencyListAjaxAdmin"); //관리자 로그인 여부 체크 String isLogin = checkLoginUtil.isLoginCheck4JsonPage(redirectAttributes); if ("N".equals(isLogin)) return "/uss/ion/addragency/AddrAgencyListAjax"; // pageing step1 PaginationInfo paginationInfo = this.setPagingStep1(addrAgencyVO); // pageing step2 addrAgencyVO = this.setPagingStep2(addrAgencyVO, paginationInfo); //대상 리스트 가져오기 //관리자 리스트는 30일 마감에 대한 제한을 없애기 위해서 해당 값을 넣어준다. addrAgencyVO.setSiteNm("ADMIN"); List addrList = addrAgencyService.selectList(addrAgencyVO); // pageing step3 paginationInfo = this.setPagingStep3(addrList, paginationInfo); //대상 리스트, 페이징 정보 전달 model.addAttribute("resultList", addrList); model.addAttribute("paginationInfo", paginationInfo); return "/uss/ion/addragency/AddrAgencyListAjax"; } /** * 발신/수신/거부 번호 등록/수정 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/addragency/AddrAgencyInsert.do" }) public String AddrAgencyInsert( @ModelAttribute("searchVO") AddrAgencyVO searchVO , HttpServletRequest request , RedirectAttributes redirectAttributes , Model model) throws Exception { logger.debug("AddrAgencyController-AddrAgencyInsert"); //관리자 로그인 여부 체크 String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes); if (!"Y".equals(isLogin)) return isLogin; //사용자 정보 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); model.addAttribute("loginVO", loginVO); return "/uss/ion/addragency/AddrAgencyInsert"; } /** * 발신/수신/거부 번호 등록/수정 * @param searchVO * @param model * @return "/uss/ion/msg/SendMsgModify" * @throws Exception */ @RequestMapping(value = {"/uss/ion/addragency/AddrAgencyModify.do"}) public String AddrAgencyModify( @ModelAttribute("searchVO") AddrAgencyVO searchVO , HttpServletRequest request , Model model , RedirectAttributes redirectAttributes ) throws Exception { logger.debug("AddrAgencyController-AddrAgencyModify"); //관리자 로그인 여부 체크 String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes); if (!"Y".equals(isLogin)) return isLogin; //수정 대상 정보 가져오기 AddrAgencyVO addrAgencyVO = addrAgencyService.selectDetail(searchVO); model.addAttribute("AddrAgencyVO", addrAgencyVO); return "/uss/ion/addragency/AddrAgencyModify"; } /** * (관리자) 주소록 무료대행 엑셀업로드 * * @param AddrAgencyVO * @param board * @param model * @return * @throws Exception */ @RequestMapping(value= {"/uss/ion/addragency/updateAddrAgencyAjax.do"}) public ModelAndView updateAddrAgencyAjax( HttpServletRequest request , @ModelAttribute("updateAgency") AddrAgencyVO addrAgencyVO , final MultipartHttpServletRequest multiRequest , @ModelAttribute("board") Board board //, ModelMap model , ModelAndView modelAndView , RedirectAttributes redirectAttributes ) throws Exception { logger.debug("AddrAgencyController-updateAddrAgencyAjax"); modelAndView.setViewName("jsonView"); //사용자 로그인 여부 체크 for json LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); String isLogin = checkLoginUtil.isLoginCheck4JsonAction(modelAndView); if ("N".equals(isLogin)) return modelAndView; try { /* //1. 주소록 그룹 등록하기 AddrGroupVO addrGroupVO = new AddrGroupVO(); addrGroupVO.setMberId(addrAgencyVO.getRegisterId()); addrGroupVO.setAddrGrpNm(addrAgencyVO.getAddrGrpNm()); String addrNewGrpId = addrGroupService.insertAddrGroup(addrGroupVO); AddrVO addrVO = new AddrVO(); //주소록 대행 신청자 아이디 SET addrVO.setMberId(addrAgencyVO.getRegisterId()); addrVO.setFrstRegisterId(loginVO.getUniqId()); //새로 생성한 그룹 아이디 SET addrVO.setAddrGrpId(addrNewGrpId); //2. 엑셀 업로드하기 //final Map files = multiRequest.getFileMap(); List files = (List) multiRequest.getFiles("file0"); String errMessage = ""; String cellValue = ""; //String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$"; String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$"; int errPhoneCnt = 0; if(!files.isEmpty()) { if (files.get(0).getSize() > 0 && (files.get(0).getContentType().indexOf("spreadsheetml") > -1) || files.get(0).getContentType().indexOf("ms-excel") > -1 || files.get(0).getOriginalFilename().split("[.]")[1].indexOf("xlsx") > -1 || files.get(0).getOriginalFilename().split("[.]")[1].indexOf("xls") > -1) { String Ext = files.get(0).getOriginalFilename().split("[.]")[1]; //엑셀 확장자에 따른 처리 로직 분리 if(Ext.equals("xls")) { HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream()); HSSFSheet sheet = workbook.getSheetAt(0); if(sheet.getLastRowNum() > 100000) { // errMessage = "100000줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."; modelAndView.addObject("errMessage", errMessage); modelAndView.addObject("result", "fail"); return modelAndView; } for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략) HSSFRow row = sheet.getRow(i); //열읽기 if(null == row) { continue; } HashMap jm = new HashMap<>(); // 행의 두번째 열(핸드폰부터 받아오기) HSSFCell cell = null; for(int j=0 ; j<2; j++){ //행읽기(6행까지나 2행까지만 필요) cellValue = ""; cell = row.getCell(j); //핸드폰/이름/info1/info2/info3/info4/메모 // 핸드폰, 이름만 공백체크 if(j <= 1 && (cell == null || !StringUtils.isNotBlank(cell.toString().trim()))) { //셀에 값이 없으면 //System.out.println("Cell 데이터가 없습니다."); errMessage = "Cell 데이터가 없습니다."; modelAndView.addObject("errMessage", errMessage); modelAndView.addObject("result", "fail"); return modelAndView; } if(null != cell){ switch(cell.getCellType()){ //숫자타임을 문자로 변환 case Cell.CELL_TYPE_NUMERIC: cell.setCellType(Cell.CELL_TYPE_STRING); } cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; } if(j == 0) { //전화번호 if(cellValue.matches(phoneRegExp)) { addrVO.setAddrPhoneNo(cellValue); }else { errPhoneCnt++; } } if(j == 1) addrVO.setAddrNm(cellValue); //이름 } addrService.insertAddr(addrVO); } modelAndView.addObject("result", "success"); if(errPhoneCnt > 0) { modelAndView.addObject("errPhoneCnt", errPhoneCnt); } }else { //확장자가 xlsx OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream()); XSSFWorkbook workbook = new XSSFWorkbook(opcPackage); XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기 opcPackage.close(); if(sheet.getLastRowNum() > 100000) { // errMessage = "100000줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다."; modelAndView.addObject("errMessage", errMessage); modelAndView.addObject("result", "fail"); return modelAndView; } for(int i=2; i 0) { modelAndView.addObject("errPhoneCnt", errPhoneCnt); } } //xlsx 처리 끝 } } */ //3. 주소록 무료대행 처리상태 변경 addrAgencyVO.setProcessStatus("E"); addrAgencyService.update(addrAgencyVO); modelAndView.addObject("message", egovMessageSource.getMessage("success.common.update")); modelAndView.addObject("result", "success"); }catch(Exception ex){ ex.printStackTrace(); modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.update")); modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 주소록 입력 대행(무료) 관리 삭제 프로세서(del_flag : Y로 업데이트) * @param searchVO * @param model * @return "/uss/ion/addragency/AddrAgencyDelete.do" * @throws Exception */ @RequestMapping(value = { "/uss/ion/addragency/AddrAgencyDelete.do" } ) public String AddrAgencyDelete( @RequestParam("del") String[] del , @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO , HttpServletRequest request , RedirectAttributes redirectAttributes , Model model ) throws Exception { logger.debug("AddrAgencyController-AddrAgencyDelete"); //관리자 로그인 여부 체크 String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes); if (!"Y".equals(isLogin)) return isLogin; //전달받은 AddrAgencyId로 삭제처리 try { for(String id: del) { addrAgencyVO.setAddrAgencyId(id); addrAgencyVO.setDelFlag("Y"); addrAgencyService.update(addrAgencyVO); } redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); }catch(Exception e) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.delete")); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/addragency/selectAddrAgencyList.do"); return redirectUrlMaker.getRedirectUrl(); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // // private function // // //페이징을 위한 처리 step1 - 페이징 기본 정보 설정 private PaginationInfo setPagingStep1(AddrAgencyVO p_addrAgencyVO)throws Exception{ // pageing step1 PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(p_addrAgencyVO.getPageIndex()); paginationInfo.setRecordCountPerPage(p_addrAgencyVO.getPageUnit()); paginationInfo.setPageSize(p_addrAgencyVO.getPageSize()); return paginationInfo; } //페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화 private AddrAgencyVO setPagingStep2( AddrAgencyVO p_addrAgencyVO , PaginationInfo p_paginationInfo )throws Exception{ // pageing step2 p_addrAgencyVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex()); p_addrAgencyVO.setLastIndex(p_paginationInfo.getLastRecordIndex()); p_addrAgencyVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage()); if("".equals(p_addrAgencyVO.getSearchSortCnd())){ //최초조회시 최신것 조회List p_addrAgencyVO.setSearchSortCnd("registPnttm"); p_addrAgencyVO.setSearchSortOrd("desc"); } return p_addrAgencyVO; } //페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기 private PaginationInfo setPagingStep3( List p_addrList , PaginationInfo p_paginationInfo )throws Exception{ // pageing step3 int totCnt = 0; if(p_addrList.size() > 0) totCnt = p_addrList.get(0).getTotCnt(); p_paginationInfo.setTotalRecordCount(totCnt); return p_paginationInfo; } //사용자 업로드 파일 처리 - 하나의 파일만 처리 private String takeFile( MultipartHttpServletRequest p_multiRequest , ModelAndView p_modelAndView , BoardMasterVO p_bmVO ) throws Exception{ //Map p_map = new Map<>(); //Map in_map = new HashMap<>(); boolean in_bool = true; List result = null; String atchFileId = ""; String isThumbFile = ""; //String isThumbFile = "thumbFile"; //"thumbFile" - 썸네일을 생성한다. final Map files = p_multiRequest.getFileMap(); if (!files.isEmpty()) { result = egovFileMngUtil.parseFileInf(files, "ADDRAGENCY_", 0, "", "", isThumbFile); // 파일 사이즈, 개수, 확장자 체크. model에 체크 오류 메세지 set //관리자에서 게시판 설정시 업로드 파일 사이즈와 수량 체크용 if(!checkFileUtil.isPosblAtchFileMvWithBoardMaster(result, p_modelAndView, 0, "xlsx|xls|zip|hwp|txt|doc|docx|csv|vcf", p_bmVO)) { // 공통코드 Set //setBBSCommCd(model, bmVO); //model.addAttribute("bdMstr", bmVO); //return "web/cop/bbs/EgovNoticeRegist"; //modelAndView.addObject("bdMstr", bmVO); p_modelAndView.addObject("result", "fail"); in_bool = false; } atchFileId = fileMngService.insertFileInfs(result); //첨부 파일 } if (!in_bool) atchFileId = "ERROR"; return atchFileId; } //addragency 게시물에 글 남기기 private ModelAndView insertAddrAgencyBoard( ModelAndView p_modelAndView //, Map p_fileResult , String p_atchFileId , AddrAgencyVO p_addrAgencyVO , String p_content , String p_registerId //, String p_processStatus , MultipartHttpServletRequest p_multiRequest ) throws Exception{ //게시판 등록하기 try { String p_processStatus = ""; p_processStatus = p_addrAgencyVO.getProcessStatus(); if ("".equals(p_processStatus) || p_processStatus==null) p_processStatus = "B"; p_addrAgencyVO.setAtchFileId(p_atchFileId); p_addrAgencyVO.setRequestTxt(unscript(p_content)); // XSS 방지 p_addrAgencyVO.setProcessStatus(p_processStatus); //처리상태 B/I/E p_addrAgencyVO.setRegisterId(p_registerId); String userIp = EgovClntInfo.getClntIP(p_multiRequest); p_addrAgencyVO.setNtcrIp(userIp); addrAgencyService.insert(p_addrAgencyVO); p_modelAndView.addObject("message", egovMessageSource.getMessage("success.common.insert")); p_modelAndView.addObject("result", "success"); }catch(Exception ex){ ex.printStackTrace(); p_modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.insert")); p_modelAndView.addObject("result", "fail"); } return p_modelAndView; } /** * XSS 방지 처리. * * @param data * @return */ protected String unscript(String data) { if (data == null || data.trim().equals("")) { return ""; } String ret = data; ret = ret.replaceAll("<(S|s)(C|c)(R|r)(I|i)(P|p)(T|t)", "<script"); ret = ret.replaceAll("