티스토리 뷰
DAO에 받은 검색 결과를 searchkey.jsp 에 어떻게 다시 받아올지 그것이 고민이었고, 스트레스였다.
물어볼까 하다가 여태 스스로 못해낸 것이 한심해서
혼자 뭐라도 해내자 라는 생각으로 고캠핑api 를 맡는다는 초심을 생각해내고, 계속해서 해보았다.
해결은 생각보다 오래 걸리지 않았다.
DAO 에서 return 값이 null 이었기 때문에 그것부터 바꾸어주었다.
ArrayList<SearchkeyTO> datas = new ArrayList<SearchkeyTO>();
datas 안에다가
SearchkeyTO kto = new SearchkeyTO();
kto.setFacltNm(getValue( "facltNm", element ));
kto.setInduty(getValue( "induty", element ));
kto.setAddr1(getValue( "addr1", element ));
kto.setFirstImageUrl(getValue( "firstImageUrl", element ));
datas.add(kto);
결과데이터를 넣어주고
return datas;
그것을 return 해주었다.
이렇게만 해서는 jsp까지는 데이터가 넘어가지 않는다.
컨트롤러에서도 저 datas를 불러와줘야한다.
ArrayList<SearchkeyTO> datas = (ArrayList<SearchkeyTO>)dao.searchkeyDAO(kto.getKeysearch());
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("datas", datas);
그리고, jsp에서
ArrayList<SearchkeyTO> datas = (ArrayList<SearchkeyTO>)request.getAttribute( "datas" );
for( SearchkeyTO kto : datas ){
...
이렇게 또다시 불러와주면 해결!!!!
자기전까지 더 해보자
searchkeyDAO>>
package com.exam.search;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.springframework.stereotype.Repository;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
@Repository
public class SearchkeyDAO {
public List<SearchkeyTO> searchkeyDAO(String keysearch) {
// TODO Auto-generated method stub
ArrayList<SearchkeyTO> datas = new ArrayList<SearchkeyTO>();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
String keyword = URLEncoder.encode( keysearch, "utf-8" );
System.out.println( "keyword : " + keyword );
Document document = builder.parse( new URL("https://api.visitkorea.or.kr/openapi/service/rest/GoCamping/searchList?ServiceKey=74rd5r1MwtY%2F3dFG0s9I1UDtFBJBj1zjmm0VdZBNsJoslwPnviVh2PeV1vCg%2BtaHuMvN8G1f1PWIwKh3I%2BI0oQ%3D%3D&numOfRows=10&pageNo=1&MobileOS=ETC&MobileApp=TestApp&keyword=" +keyword).openStream());
Element root = document.getDocumentElement();
System.out.println( root.toString() ); // [response: null] 출력됨
NodeList nodes = document.getElementsByTagName("item");
for ( int i = 0; i < nodes.getLength(); i++ ) {
Node node = nodes.item(i);
if ( node.getNodeType() == Node.ELEMENT_NODE ) { // node객체가 앨리먼트인것만 화면에 출력
Element element = (Element) node;
SearchkeyTO kto = new SearchkeyTO();
kto.setFacltNm(getValue( "facltNm", element ));
kto.setInduty(getValue( "induty", element ));
kto.setAddr1(getValue( "addr1", element ));
kto.setFirstImageUrl(getValue( "firstImageUrl", element ));
datas.add(kto);
//System.out.println("캠핑장명 : " + getValue( "facltNm", element ));
//System.out.println("캠핑장 유형 : " + getValue( "induty", element ));
//System.out.println("캠핑장 주소 : " + getValue( "addr1", element ));
}
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return datas;
}
private static String getValue(String tag, Element element) {
NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node)nodes.item(0);
return node.getNodeValue();
}
}
Controller_search>>
package com.example.controller;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.exam.search.SearchkeyDAO;
import com.exam.search.SearchkeyTO;
@RestController
public class Controller_Search {
@Autowired
SearchkeyDAO dao;
@RequestMapping( value="/searchkey.do" )
public ModelAndView searchkey(HttpServletRequest request) {
System.out.println( "searchkey()호출" );
SearchkeyTO kto = new SearchkeyTO();
kto.setKeysearch( request.getParameter( "keysearch" ) );
System.out.println( "키워드 : " + kto.getKeysearch());
//dao.searchkeyDAO( kto.getKeysearch() );
ArrayList<SearchkeyTO> datas = (ArrayList<SearchkeyTO>)dao.searchkeyDAO(kto.getKeysearch());
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName( "/search/search_key" );
modelAndView.addObject("datas", datas);
return modelAndView;
}
}
search_key.jsp>>
아래에
<%= totalRecord %>, <%=sbHtml.toString %> 해주면 된다.
결과>>
but.... 문제가 생김...
어느 태그의 내용이 없으면 null 이라면서 화면이 제대로 출력 안됨
일단 페이징먼저 해야겠다...
'FINAL PROJECT' 카테고리의 다른 글
[실패]DB에 "INSERT 고캠핑API" 하기 (0) | 2022.08.11 |
---|---|
[html/css]툴팁 사이즈 조정 (0) | 2022.08.11 |
[성공]고캠핑 api - xml 파싱 (0) | 2022.08.09 |
html button (0) | 2022.08.04 |
로그인하면 -> 로그아웃 버튼으로 만들기 (0) | 2022.08.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- jquery
- gjt
- fork
- 토큰발행
- 입문
- 별찍기
- Board
- 피라미드별
- 연습문제
- 깃업그레이드
- Vue
- create-react-app
- Java
- 삼각형별
- Doit
- component
- Model2
- 구구단
- vue-cli
- jqueryui
- 자바프로그래밍
- 리액트
- 토큰
- 별출력
- 리액트설치
- reactjs
- Vue.js
- 자바
- 레파지토리복사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함