돔파서를 사용해서 기상청 사이트에 xml을 받아오는 중입니다.
텍스트는 다받아왓구요 ㅎㅎ
거의 마물단계입니다..
너무 노가다성이 심해서요..제가...
아래코드를 보시죠.
<c:out value="${d1}"/><br>
<c:if test="${w1 == '구름많음'}">
<img src = "<%=request.getContextPath()%>/img/mcl.jpg"/>
</c:if>
<c:if test="${w1 == '구름조금'}">
<img src = "<%=request.getContextPath()%>/img/rcl.jpg"/>
</c:if>
<c:if test="${w1 == '흐리고 비'}">
<img src = "<%=request.getContextPath()%>/img/rain.jpg"/>
</c:if>
<c:if test="${w1 == '흐림'}">
<img src = "<%=request.getContextPath()%>/img/hrim.jpg"/>
</c:if>
최저기온 : <c:out value="${l1}"/>˚C //
최고기온 : <c:out value="${h1}"/>˚C<br><br>
<!-- 두번째 -->
<c:out value="${d2}"/><br>
<c:if test="${w2 == '구름많음'}">
<img src = "<%=request.getContextPath()%>/img/mcl.jpg"/>
</c:if>
<c:if test="${w2 == '구름조금'}">
<img src = "<%=request.getContextPath()%>/img/rcl.jpg"/>
</c:if>
<c:if test="${w2 == '흐리고 비'}">
<img src = "<%=request.getContextPath()%>/img/rain.jpg"/>
</c:if>
<c:if test="${w2 == '흐림'}">
<img src = "<%=request.getContextPath()%>/img/hrim.jpg"/>
</c:if>
최저기온 : <c:out value="${l2}"/>˚C //
최고기온 : <c:out value="${h2}"/>˚C<br><br>
<!-- 세번째 -->
<c:out value="${d3}"/><br>
<c:if test="${w3 == '구름많음'}">
<img src = "<%=request.getContextPath()%>/img/mcl.jpg"/>
</c:if>
<c:if test="${w3 == '구름조금'}">
<img src = "<%=request.getContextPath()%>/img/rcl.jpg"/>
</c:if>
<c:if test="${w3 == '흐리고 비'}">
<img src = "<%=request.getContextPath()%>/img/rain.jpg"/>
</c:if>
<c:if test="${w3 == '흐림'}">
<img src = "<%=request.getContextPath()%>/img/hrim.jpg"/>
</c:if>
최저기온 : <c:out value="${l3}"/>˚C //
최고기온 : <c:out value="${h3}"/>˚C<br><br>
////////////////////////////////////////////////////////
컨트롤러 에서 w1~18, l1~18, h1~18, d1~18 을 다보내서 위 jsp에서 하나하나씩 받아주고있습니다. - -
너무 노가다성이 심해서요... 이런것을 18개나 찍어주다보니.. 너무 쓸때없이 코드만 긴거같아서요..
여기서 질문...<c:out 이나 <c:if 태그들은 <c:foreach가 아닌 일반 for문이라던지 다른 방법으로
반복을 걸수있을까요??
얘를 들면.. (제생각)...
<%for(int i=1; i<19; i++){%>
<c:out value = "${'d'+i}"/>
<c:out value = "${'h'+i}"/>
<c:out value = "${'l'+i}"/>
<c:out value = "${'w'+i}"/>
<% } <%>
이런식으로요 ㅠㅜ(하나하나 다써주지않고 포문을 돌리는식으로유...)
or
<% String a =%> <c:out value = "${w1}"/> <% ; %>
이렇게???ㅎㅎㅎ ㅜㅜㅜㅜㅜ
--------------------------------------------
혹은 <c:forEach 문으로 이것들을 제가 원하는 식으로 받을수있을까요??
혹시나해서 위에것들을 다 배열에 담아서 받아와서 forEach로 받으라고 말슴하시는분들도 계실수잇는데..
전 하나하나 받아서 그애들 뒤에 수식어를 붙여야 하기때문에... 그방법은 안되서 결국 이방법을 택하였습니다 ㅜ
혹시나.. 다 틀리다면.. 좋은 방법 하나만 제시해주세요 ㅜ,ㅜ,ㅜ,ㅜ,ㅜ,ㅜ
선배의 새로운.. 지령이 떨어져서..일단 다른것좀 해본후에
봇님 말씀대로 해보겠씁니다 ㅎㅎㅎ
답변감사드립니다!
네
객체 구조를 좀 변경하면 어떨까 합니다.
"지역"이 있고 이 "지역"에 "날씨"와 "최저온도"등 값이 있겠지요?
(지역).getWeather
(지역).getTemperature
data[지역][weather]
data[지역][temperature]
이렇게 만드시면 "지역"을 반복하여 값을 가져올 수 있습니다.
객체 또는 배열을 잘 설계하시면 수고를 덜 수 있을것으로 보여집니다.
궁금하신 내용 있으시면 질문 남겨주세요~
답변 감사드립니다..
우선 봇님 말씀대로.. 배열에 담아서 전체적으로 받아왓었습니다..
하지만 저는 배열에 들어있는 것들에 대하여 하나하나씩 부가적으로 텍스트를 붙여 주어야 했기에
각각의 배열을 구성하는것에 대해 하나하나씩다 변수를 주어서 넘겨 받고있습니다.. jsp에..
예를들면
날씨는 w1~18까지.. 최저온도는 l1~l18
이런식으루요..
..후,,
아직 실력이 마니 부족한지라.. 펑션이나 메서드를 만들어서 해야한다니..
고생좀 해야겠네욤 ㅜㅜ
알겠습니당..
javascript는 아니시네요 ㅎ
날씨 이미지인듯 하네요
우선 코드 노가다를 줄여야 하니 펑션 또는 메소드를 만드시는게 좋을듯 합니다.
이건 간단한 예 입니다.
<img src = "<%=request.getContextPath()%>/img/<%=weather.getImageName(w1)%>.jpg"/>
<img src = "<%=request.getContextPath()%>/img/<%=weather.getImageName(w2)%>.jpg"/>
<img src = "<%=request.getContextPath()%>/img/<%=weather.getImageName(w3)%>.jpg"/>
그런데 돔 파서에서 반환된 결과가 배열로 되어있지는 않나요?
기상청 자료는 xml 이고 xml을 배열 또는 iterator등 반복자로 값이 리턴 될 것으로 생각이 됩니다.
어떤 값이 리턴되느냐에 따라서 구현이 완전히 달라지겠네요