돔파서를 사용해서 기상청 사이트에 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로 받으라고 말슴하시는분들도 계실수잇는데..
전 하나하나 받아서 그애들 뒤에 수식어를 붙여야 하기때문에... 그방법은 안되서 결국 이방법을 택하였습니다 ㅜ
혹시나.. 다 틀리다면.. 좋은 방법 하나만 제시해주세요 ㅜ,ㅜ,ㅜ,ㅜ,ㅜ,ㅜ
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등 반복자로 값이 리턴 될 것으로 생각이 됩니다.
어떤 값이 리턴되느냐에 따라서 구현이 완전히 달라지겠네요
답변 감사드립니다..
우선 봇님 말씀대로.. 배열에 담아서 전체적으로 받아왓었습니다..
하지만 저는 배열에 들어있는 것들에 대하여 하나하나씩 부가적으로 텍스트를 붙여 주어야 했기에
각각의 배열을 구성하는것에 대해 하나하나씩다 변수를 주어서 넘겨 받고있습니다.. jsp에..
예를들면
날씨는 w1~18까지.. 최저온도는 l1~l18
이런식으루요..
..후,,
아직 실력이 마니 부족한지라.. 펑션이나 메서드를 만들어서 해야한다니..
고생좀 해야겠네욤 ㅜㅜ
알겠습니당..
네
객체 구조를 좀 변경하면 어떨까 합니다.
"지역"이 있고 이 "지역"에 "날씨"와 "최저온도"등 값이 있겠지요?
(지역).getWeather
(지역).getTemperature
data[지역][weather]
data[지역][temperature]
이렇게 만드시면 "지역"을 반복하여 값을 가져올 수 있습니다.
객체 또는 배열을 잘 설계하시면 수고를 덜 수 있을것으로 보여집니다.
궁금하신 내용 있으시면 질문 남겨주세요~
선배의 새로운.. 지령이 떨어져서..일단 다른것좀 해본후에
봇님 말씀대로 해보겠씁니다 ㅎㅎㅎ
답변감사드립니다!