• Y
  • List All
  • Feedback
    • This Project
    • All Projects
Profile Account settings Log out
  • Favorite
  • Project
  • All
Loading...
  • Log in
  • Sign up
chominsoo4245 / mjon_git star
Forked from hylee / mjon_git
  • Project homeH
  • CodeC
  • IssueI
  • Pull requestP
  • Review R
  • MilestoneM
  • BoardB
  • Files
  • Commit
  • Branches
mjon_gitsrcmainjavaitnletmjotestwebTestCrawlerController.java
Download as .zip file
File name
Commit message
Commit date
DATABASE
mjon_git
2023-06-12
src/main
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
2023-08-23
.codetogether.ignore
mjon_git
2023-06-12
.gitignore
gitignore 적용
2023-06-12
pom.xml
mjon_git
2023-06-12
File name
Commit message
Commit date
java
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
2023-08-23
resources
등급제 대상 여부 업데이트 로직 수정
2023-08-22
webapp
팩스 주소록 메모 수정기능 보완
2023-08-23
File name
Commit message
Commit date
egovframework
mjon_git
2023-06-12
itn
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
2023-08-23
File name
Commit message
Commit date
com
사용자 회원가입 입력항목 XSS 필터링 예외 항목 추가 - 회원아이디, 이메일 정보, 추천인 아이디, 회원명(회사명)
2023-08-21
let
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
2023-08-23
web
문자 우선순위 랜덤 업데이트
2023-08-22
File name
Commit message
Commit date
cop
이지우 - 취약점 조치(세금계산서 발행 시 본인 ID로만 등록, 본인 게시글만 수정, 환불 시 보유 금액 비교 추가)
2023-08-02
crypto/web
mjon_git
2023-06-12
fax
팩스 주소록 메모 수정기능 보완
2023-08-23
hangulparser
mjon_git
2023-06-12
kakao
알림톡 치환문자 없는경우 발생하는 오류 수정
2023-08-23
komoran
mjon_git
2023-06-12
lett
문자 우선순위 랜덤 업데이트
2023-08-22
mail
휴면회원으로 지정 기준날짜 변경
2023-07-25
main
이준호 문자온 커밋 - IP 받아오는 방식 수정
2023-07-28
mjo
누적결제액 세부내역 환불금 표시 추가
2023-08-22
module/base
mjon_git
2023-06-12
org
mjon_git
2023-06-12
schdlr/service
문자 우선순위 랜덤 업데이트
2023-08-22
sec
mjon_git
2023-06-12
solr
mjon_git
2023-06-12
sts
mjon_git
2023-06-12
sym
등급제 대상 여부 업데이트 로직 수정
2023-08-22
uat
담당자변경, 정보변경 SMS, 이메일알림 추가
2023-08-22
uss
결제하기 화면 다음 결제시 결제수단 UPDATE 기능추가
2023-08-14
utl
이준호 문자온 커밋 - IP 받아오는 방식 수정
2023-07-28
File name
Commit message
Commit date
addr
주소록 메모저장시 개행문자 오류 수정
2023-07-27
addragency
mjon_git
2023-06-12
apikey
feat:api 전사 테스트 오류 수정완료
2023-08-09
block
간편결제 설정 및 하드코딩 제거
2023-07-14
cert
mjon_git
2023-06-12
conf
문자전송시 B라인 운영여부 체크
2023-06-21
dwn/web
mjon_git
2023-06-12
event
결제하기 간편결제 기능 추가
2023-07-28
human/web
휴먼회원 전환
2023-08-04
kisa
mjon_git
2023-06-12
mjocommon
알림톡 전송지연 기능 추가
2023-07-07
msg
발신번호 첨부파일 뷰어 기능 추가
2023-08-02
msgCustom
mjon_git
2023-06-12
msgagent
전용전송사 변경시 관리자메모 추가
2023-06-20
msgcampain
문자전송 컨트롤러에서 MSG_TYPE 다시계산 로직 추가
2023-07-31
msgdata
문자전송 컨트롤러에서 MSG_TYPE 다시계산 로직 추가
2023-07-31
msgsent
Merge branch 'master' of http://hylee@vcs.iten.co.kr:9999/hylee/mjon_git
2023-08-01
pay
누적결제액 세부내역 환불금 표시 추가
2023-08-22
paykgm/service
mjon_git
2023-06-12
payva
mjon_git
2023-06-12
rejt
mjon_git
2023-06-12
reservmsg
feat:pms-#3305 발송결과 / 예약관리에 api 신청 안한 회원은 노출 안되게 처리 완료
2023-08-01
scheduler/service
mjon_git
2023-06-12
spammsg
mjon_git
2023-06-12
sttst/service
mjon_git
2023-06-12
symbol
mjon_git
2023-06-12
tax
mjon_git
2023-06-12
temp/service
mjon_git
2023-06-12
test
feat:PHP 예제 코드 추가
2023-08-11
File name
Commit message
Commit date
service
feat: API 치환 데이터가 lms / sms 와 같이 문자 발송이 다를때 그룹아이디도 따로 받을 수 있게 개선
2023-08-08
web
feat:PHP 예제 코드 추가
2023-08-11
File name
Commit message
Commit date
TestController.java
feat:PHP 예제 코드 추가
2023-08-11
TestCrawlerController.java
mjon_git
2023-06-12
TestKakaoController.java
mjon_git
2023-06-12
hylee 2023-06-12 d552b98 mjon_git UNIX
Raw Open in browser Change history
package itn.let.mjo.test.web; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.service.EgovFileMngUtil; import itn.let.mjo.payva.service.VacsVactService; import itn.let.mjo.payva.service.VacsVactVO; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.utl.user.service.CheckFileUtil; import itn.let.utl.user.service.CheckLoginUtil; @Controller public class TestCrawlerController { //로그인 처리 @Resource(name = "checkLoginUtil") private CheckLoginUtil checkLoginUtil; //첨부파일 체크 @Resource(name = "checkFileUtil") private CheckFileUtil checkFileUtil; //가상계좌원장 @Resource(name="vacsVactService") private VacsVactService vacsVactService; //파일 체크 & 관리 @Resource(name="EgovFileMngUtil") private EgovFileMngUtil egovFileMngUtil; /** EgovMessageSource */ @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; /** userManageService */ @Resource(name = "userManageService") private EgovUserManageService userManageService; /* //파일 정보 관리 @Resource(name="EgovFileMngService") private EgovFileMngService fileMngService; */ private static final Logger logger = LoggerFactory.getLogger(TestController.class); ///////////////////////////////////////////////////////////////////////////////////////// // // // USER // // ///////////////////////////////////////////////////////////////////////////////////////// // // // ADMIN // // /** * egov sample list 페이지 * @param addrVO * @param model * @return * @throws Exception */ @RequestMapping(value= { "/uss/ion/test/TestCrawlerList.do" }) public String selectTestList( HttpServletRequest request , @ModelAttribute("searchVO") VacsVactVO vacsVactVO , ModelMap model , RedirectAttributes redirectAttributes ) throws Exception { //관리자 로그인 여부 체크 String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes); if (!"Y".equals(isLogin)) return isLogin; //로그인 정보 획득 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); //login 정보 model.addAttribute("loginVO", loginVO); //ajax를 위한 현재 URL 정보 받기 vacsVactVO.setUrl(request.getRequestURI()); return "/uss/ion/test/TestCrawlerList"; } /** *egov file 업로드시 사용자 제약 관리 페이지 * * @param boardVO * @param board * @param model * @return * @throws Exception */ @RequestMapping(value= { "/uss/ion/test/insertTestCrawlerAjax.do" } ) public void insertTestFileList( HttpServletRequest request , HttpServletResponse response //, final MultipartHttpServletRequest multiRequest //, ModelMap model , ModelAndView modelAndView , RedirectAttributes redirectAttributes ) throws Exception { String p_url = request.getParameter("url"); String p_page_start = request.getParameter("page_start"); String p_page_end = request.getParameter("page_end"); int i_start = Integer.parseInt(p_page_start); int i_end = Integer.parseInt(p_page_end); String p_param0 = request.getParameter("param0"); String p_param1 = request.getParameter("param1"); String p_param2 = request.getParameter("param2"); String p_param3 = request.getParameter("param3"); String p_param4 = request.getParameter("param4"); String p_param5 = request.getParameter("param5"); String p_pre_detailPage = request.getParameter("pre_detailPage"); String p_detailPage = request.getParameter("detailPage"); String p_detailPageAttr = request.getParameter("detailPageAttr"); String p_target1 = request.getParameter("target1"); String p_target2 = request.getParameter("target2"); String p_target3 = request.getParameter("target3"); String p_target4 = request.getParameter("target4"); String p_target5 = request.getParameter("target5"); String p_target6 = request.getParameter("target6"); String p_target7 = request.getParameter("target7"); String p_target8 = request.getParameter("target8"); String p_target9 = request.getParameter("target9"); String p_target10 = request.getParameter("target10"); String p_target1attr = request.getParameter("target1attr"); String p_target2attr = request.getParameter("target2attr"); String p_target3attr = request.getParameter("target3attr"); String p_target4attr = request.getParameter("target4attr"); String p_target5attr = request.getParameter("target5attr"); String p_target6attr = request.getParameter("target6attr"); String p_target7attr = request.getParameter("target7attr"); String p_target8attr = request.getParameter("target8attr"); String p_target9attr = request.getParameter("target9attr"); String p_target10attr = request.getParameter("target10attr"); //상세 url 가져오기 List<String> l_infoUrl = new ArrayList<String>(); List<String> l_target1 = new ArrayList<String>(); List<String> l_target2 = new ArrayList<String>(); List<String> l_target3 = new ArrayList<String>(); List<String> l_target4 = new ArrayList<String>(); List<String> l_target5 = new ArrayList<String>(); List<String> l_target6 = new ArrayList<String>(); List<String> l_target7 = new ArrayList<String>(); List<String> l_target8 = new ArrayList<String>(); List<String> l_target9 = new ArrayList<String>(); List<String> l_target10 = new ArrayList<String>(); { String s_url = p_url+"?"; Document doc = null; //Document에는 페이지의 전체 소스가 저장된다 if (!"".equals(p_param1)) s_url = s_url + p_param1 + "&"; if (!"".equals(p_param2)) s_url = s_url + p_param2 + "&"; if (!"".equals(p_param3)) s_url = s_url + p_param3 + "&"; if (!"".equals(p_param4)) s_url = s_url + p_param4 + "&"; if (!"".equals(p_param5)) s_url = s_url + p_param5 + "&"; for (int i=i_start;i<=i_end;i++) { String s_in_url = ""; if (!"".equals(p_param0)) s_in_url = s_url + p_param0 + "=" + Integer.toString(i); //2.페이지 호출 doc = Jsoup.connect(s_in_url).get(); //3.상세 url 추출 Elements element = doc.select(p_detailPage); for (int j=0;j<element.size();j++) { //attr 값이 있으면 attr로 추출하고 아니면 text 값을 추출한다. if (!"".equals(p_detailPageAttr)) l_infoUrl.add(p_pre_detailPage + element.get(j).attr(p_detailPageAttr)); else l_infoUrl.add(p_pre_detailPage + element.get(j).text()); } } } //데이터 추출 { Document doc = null; //Document에는 페이지의 전체 소스가 저장된다 for (int i=0;i<l_infoUrl.size();i++) { //System.out.println("extract"); System.out.println(i); doc = Jsoup.connect(l_infoUrl.get(i)).get(); //상세 페이지 호출 및 데이터 추출 if (!"".equals(p_target1)) this.extractData(doc, p_target1, p_target1attr, l_target1); if (!"".equals(p_target2)) this.extractData(doc, p_target2, p_target2attr, l_target2); if (!"".equals(p_target3)) this.extractData(doc, p_target3, p_target3attr, l_target3); if (!"".equals(p_target4)) this.extractData(doc, p_target4, p_target4attr, l_target4); if (!"".equals(p_target5)) this.extractData(doc, p_target5, p_target5attr, l_target5); if (!"".equals(p_target6)) this.extractData(doc, p_target6, p_target6attr, l_target6); if (!"".equals(p_target7)) this.extractData(doc, p_target7, p_target7attr, l_target7); if (!"".equals(p_target8)) this.extractData(doc, p_target8, p_target8attr, l_target8); if (!"".equals(p_target9)) this.extractData(doc, p_target9, p_target9attr, l_target9); if (!"".equals(p_target10)) this.extractData(doc, p_target10, p_target10attr, l_target10); } } //excel 생성 { /* System.out.println("url"); for (int i=0;i<l_infoUrl.size();i++) { System.out.println(l_infoUrl.get(i)); } System.out.println("1"); for (int i=0;i<l_target1.size();i++) { System.out.println(l_target1.get(i)); } System.out.println("12"); for (int i=0;i<l_target2.size();i++) { System.out.println(l_target2.get(i)); } System.out.println("13"); for (int i=0;i<l_target3.size();i++) { System.out.println(l_target3.get(i)); } System.out.println("14"); for (int i=0;i<l_target4.size();i++) { System.out.println(l_target4.get(i)); } */ // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. SXSSFWorkbook wb = new SXSSFWorkbook(100); CellStyle style = wb.createCellStyle(); style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); Font font = wb.createFont(); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold Cell cell = null; Row row = null; String sheetTitle = ""; String fileName ="관리자 리스트"; try{ sheetTitle = "관리자 리스트(화면)" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(0); //타이틀 만들기 /* for(int i=0 ; i < userExcelValue.length ; i++) { cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(userExcelValue[i][1]); } */ //내용 만들기 int i_cell_size = 0; for(int i=0; i < l_infoUrl.size(); i++){ row = sheet.createRow(i); i_cell_size = 0; this.makeExcelData(i_cell_size++, row, style, l_infoUrl.get(i)); if (l_infoUrl.size()==l_target1.size()) { this.makeExcelData(i_cell_size++, row, style, l_target1.get(i)); /* cell = row.createCell(i_cell_size++); cell.setCellStyle(style); cell.setCellValue(l_target1.get(i)); //번호 */ } if (l_infoUrl.size()==l_target2.size()) this.makeExcelData(i_cell_size++, row, style, l_target2.get(i)); if (l_infoUrl.size()==l_target3.size()) this.makeExcelData(i_cell_size++, row, style, l_target3.get(i)); if (l_infoUrl.size()==l_target4.size()) this.makeExcelData(i_cell_size++, row, style, l_target4.get(i)); if (l_infoUrl.size()==l_target5.size()) this.makeExcelData(i_cell_size++, row, style, l_target5.get(i)); if (l_infoUrl.size()==l_target6.size()) this.makeExcelData(i_cell_size++, row, style, l_target6.get(i)); if (l_infoUrl.size()==l_target7.size()) this.makeExcelData(i_cell_size++, row, style, l_target7.get(i)); if (l_infoUrl.size()==l_target8.size()) this.makeExcelData(i_cell_size++, row, style, l_target8.get(i)); if (l_infoUrl.size()==l_target9.size()) this.makeExcelData(i_cell_size++, row, style, l_target9.get(i)); if (l_infoUrl.size()==l_target10.size()) this.makeExcelData(i_cell_size++, row, style, l_target10.get(i)); } response.setHeader("Set-Cookie", "fileDownload=true; path=/"); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); Date currentTime = new Date (); String mTime = mSimpleDateFormat.format ( currentTime ); fileName = fileName+"("+mTime+")"; response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx")); wb.write(response.getOutputStream()); }catch(Exception e) { response.setHeader("Set-Cookie", "fileDownload=false; path=/"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Content-Type","text/html; charset=utf-8"); OutputStream out = null; try { out = response.getOutputStream(); byte[] data = new String("fail..").getBytes(); out.write(data, 0, data.length); } catch(Exception ignore) { ignore.printStackTrace(); } finally { if(out != null) try { out.close(); } catch(Exception ignore) {} } }finally { // 디스크 적었던 임시파일을 제거합니다. wb.dispose(); try { wb.close(); } catch(Exception ignore) {} } } /* //json 알림 modelAndView.setViewName("jsonView"); //사용자 로그인 여부 체크 for json String isLogin = checkLoginUtil.isLoginCheck4JsonAction(modelAndView); if ("N".equals(isLogin)) return modelAndView; //if ("ERROR".equals(atchFileIds[0])) return modelAndView; System.out.println("success"); return modelAndView; */ } ///////////////////////////////////////////////////////// // // private // // private List<String> extractData( Document p_doc , String p_target1 , String p_target1attr , List<String> l_target1 ) throws Exception{ //Document doc = null; //Document에는 페이지의 전체 소스가 저장된다 //doc = Jsoup.connect(p_call_url).get(); //System.out.println(p_call_url); //attr 값이 있으면 attr로 추출하고 아니면 text 값을 추출한다. if (!"".equals(p_target1attr)) l_target1.add(p_doc.select(p_target1).get(0).attr(p_target1attr)); else l_target1.add(p_doc.select(p_target1).get(0).text()); return l_target1; } private void makeExcelData( int i_cell_size , Row p_row , CellStyle p_style , String p_val ) throws Exception{ Cell cell = p_row.createCell(i_cell_size++); cell.setCellStyle(p_style); cell.setCellValue(p_val); //번호 } }

          
        
    
    
Copyright Yona authors & © NAVER Corp. & NAVER LABS Supported by NAVER CLOUD PLATFORM

or
Sign in with github login with Google Sign in with Google
Reset password | Sign up