티스토리 뷰

FINAL PROJECT

KEYWORD 검색

asso 2022. 8. 10. 02:35

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
링크
«   2025/05   »
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
글 보관함