Json 파일을 이용한 마커찍기가 스프링에서만 안됩니다

JSP 모델2로 만든 프로젝트를 스프링으로 변환하고 있는데 모델2에서는 잘 됐던 마커찍기가 스프링으로 문법만 변환했는데 안됩니다.

var mapContainer = document.getElementById('map'), // 지도를 표시할 div 
mapOption = {
    center: new daum.maps.LatLng(37.566826, 126.9786567), // 지도의 중심좌표
    level: 10 // 지도의 확대 레벨
};  

//지도를 생성합니다    
var map = new daum.maps.Map(mapContainer, mapOption); 

//주소-좌표 변환 객체를 생성합니다
var geocoder = new daum.maps.services.Geocoder();
var coords = daum.maps.LatLng(), marker = new daum.maps.Marker();

// 마커 이미지의 이미지 주소, 크기입니다
var imageSrc = "http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/markerStar.png"; 
	imageSize = new daum.maps.Size(24, 35); 
// 마커의 이미지정보를 가지고 있는 마커이미지를 생성합니다
var markerImage = new daum.maps.MarkerImage(imageSrc, imageSize); 
var ctx = "${pageContext.request.contextPath}" + "/js/menu02/position.json";
$.getJSON(ctx, function(data) {
	$.each(data, function(entryIndex, entry) {
		geocoder.addressSearch(entry.address, function(result, status) {
			/* alert(entry.address); */
			// 정상적으로 검색이 완료됐으면 
			 if (status === daum.maps.services.Status.OK) {
			 	coords = new daum.maps.LatLng(result[0].y, result[0].x);

				if(entry.address == '${mystoreAddress}') {
				 	if('${mystoreAddress}' != null || '${mystoreAddress}' == ""){
					    marker = new daum.maps.Marker({
							map: map,
							position: coords,
							image: markerImage
					    });
					}
				} else {
				    // 결과값으로 받은 위치를 마커로 표시합니다
				    marker = new daum.maps.Marker({
						map: map,
						position: coords
				    });
			 	}
				daum.maps.event.addListener(marker, 'click', function() {
					$("#listModal"+entry.store_no).modal();
				});  

			 	if('${mystoreAddress}' != null || '${mystoreAddress}' == ""){
					if(entry.address == '${mystoreAddress}') {
						// 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
						map.setCenter(coords);
						map.setLevel(4);
					}
			 	} 
			} 
		});
	});
});

JSP 파일의 마커 불러오기 JS 부분입니다.
실행을 하면
image
이런 오류가 뜨네요… json 파일 자체가 생성이 안되거나 문제가 있나 싶어서 열어보니 제대로 데이터는 저장되어 있는 것 같습니다.

[
{“store_no” : “1”, “address” : “서울 마포구 동교로15길 7”}
, {“store_no” : “2”, “address” : " 서교동주민센터 02-3153-6740 홈페이지 서울 마포구 동교로15길 7"}
, {“store_no” : “3”, “address” : “null”}
, {“store_no” : “4”, “address” : " 경남 진주시 초전동 1678-5"}
, {“store_no” : “5”, “address” : “서울 강남구 테헤란로57길 17”}
, {“store_no” : “6”, “address” : “null”}
, {“store_no” : “7”, “address” : " 서울 강남구 삼성동 143-18"}
, {“store_no” : “8”, “address” : " 서울 강남구 역삼동 755-1"}
, {“store_no” : “9”, “address” : “null”}
, {“store_no” : “100”, “address” : “경상남도 진주시 진주대로 501”}
, {“store_no” : “99999999”, “address” : “null”}
]

JSON파일 내용입니다…
REST처럼 localhost:8080/123.do가 아니고 localhost:8080/123 으로 실행되는데 이게 문제가 되는건가요???

404 not found => 경로에 파일이 없는건데

브라우저 주소창에 404 뜬 주소를 넣고 확인해 보세요.

지금 해보니 404에러가 뜨면서 실행이 안됩니다!
그런데 특이한건 같은 폴더(json 파일이 있는 폴더)에 jpg 파일이나 js파일 등을 넣고 주소창에 파일명만 고쳐서 실행하면 그 파일은 정상적으로 실행이 되네요 ㅠㅠ…

@RequestMapping(value="chain_status_search")
public ModelAndView chain_status_search(String keyword,HttpServletRequest req, HttpServletResponse resp) throws Exception, IOException {
	String path = req.getRealPath("/");
	FileOutputStream output = new FileOutputStream(path + "js\\menu02\\position.json");
	StoreDTO storeAddress = new StoreDTO(), mystore = new StoreDTO();
	List storeAddressList = null;

	mystore = store_dbPro.getStoreInfo((int) session.getAttribute("store_no"));

	if (keyword == null) {
		storeAddressList = store_dbPro.getStoresInfo();
		mv.addObject("mystoreAddress", mystore.getStore_address());
	} else {
		storeAddressList = store_dbPro.searchStoresInfo(keyword);
		mv.addObject("keyword", keyword);
	}

	String storeAddressFile = "[\r\n";
	for (int i = 0; i < storeAddressList.size(); i++) {
		storeAddress = (StoreDTO) storeAddressList.get(i);
		if (storeAddress.getStore_no() != 0) {
			storeAddressFile += "{\"store_no\" : \"" + storeAddress.getStore_no() + "\", ";
			storeAddressFile += "\"address\" : \"" + storeAddress.getStore_address() + "\"}\r\n";
			if (i != storeAddressList.size() - 1)
				storeAddressFile += ", ";
		}
	}
	storeAddressFile += "]";

	System.out.println(storeAddressFile);
	output.write(storeAddressFile.getBytes());
	output.close();

	mv.addObject("storeAddressList", storeAddressList);
	
	mv.setViewName("details/menu02/chain_status_search");

	return mv;
}

혹시나해서 DB에서 주소를 읽어와 json 파일로 저장하는 코드도 올립니다 ㅠㅠ Controller에서 만들고 있습니다!

그 리소스 경로(/js/menu02/)에 매핑되어 있는 컨트롤러가
js, image 파일들은 핸들링 하도록 되어 있지만
json 확장자는 따로 처리 안하도록 되어 있을 거에요.
라이브러리를 쓰셨는지 따로 req/res 처리를 하셨는지는 모르겠지만
정적 파일 처리하는 부분을 수정하셔야 할 듯 합니다.

json의 validation이나 js 코드 로직은 그 이후에 살펴볼 문제 같네요.
이미 js쪽은 마이그레이션 이 전에도 잘 돌아가고 있었으니 크게 볼 건 없겠지만요. :slight_smile:

이 답변을 보고 더 해봤는데 우선 js, image만 되고 txt 파일의 경우에도 읽지를 못하네요…
조금 더 공부해보겠습니다!!

진짜 xml 매핑 문제였네요!!! 감사합니다!!!

1개의 좋아요