JAVA Controller 파일 데이터를 js파일에서 가져오기를 하려면?


(Hong Develop) #1

저는 Spring-mvc로 프로젝트를 만들고 있습니다. DB데이터 출력은 DAO와 Controller로 구성했고

뷰는 js와 jsp로 이루어져 있습니다.

여기서 문제는 Controller에서 출력하는 값을 어떻게 js파일로 옮기느냐 입니다. ajax로 해결을 짓고자 했지만

방법을 모르겠습니다. 많은 도움 부탁드립니다.

DAO.java

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.stereotype.Service;

import net.point.service.game.config.SqlSessionFactoryDao;


@Service
public class ADao {
	
	private SqlSessionFactory sqlSessionFactory;
	
	public ADao() {
		sqlSessionFactory = SqlSessionFactoryDao.getSqlSessionFactory();
	}
	
	
	

	public List<Map<Object,Object>> selectAllPayment() {
		SqlSession session = sqlSessionFactory.openSession();
		List<Map<Object,Object>> payments = new ArrayList<Map<Object, Object>>();
		try {
		payments =  session.selectList("AdminPaymentDao.selectAllPayment");
		System.out.println("payments: " + payments);
		System.out.println("-----------------------------------------------------");
		}catch (Exception error) {
			error.printStackTrace();
		} finally {
			session.close();
		}
		return payments;
	}

}

Controller.java

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import ch.qos.logback.classic.Logger;
import net.point.service.game.admin.payment.collection.ADao;

@Controller
public class Controller {
	
	private static Logger logger =  (Logger) LoggerFactory.getLogger(AdminPaymentController.class);
	
	@Autowired
	ADao aDao;
	
	@ResponseBody
	@RequestMapping(value="/adminRequestCharge", method = RequestMethod.POST)
	public  Map<String, Object> selectAllPayment() {
		Map<String, Object> result = new HashMap<String, Object>();
		logger.info("selectAllPayment start~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		System.out.println("gggggggggggggggggggggggggggggggggggggggggggggg");
		try {
		List<Map<Object, Object>> resultList = new ArrayList<Map<Object, Object>>();
		resultList = aDao.selectAllPayment();
		for (Object list : resultList) {
			System.out.println("resultList:" + resultList);
		}
		result.put("jqgrid_data", resultList);
		}catch (Exception error) {
			error.printStackTrace();
		}
		return result;
	}

}

js 파일

$(function(){
	
	//ajax
	$("#chargeRequestList").submit(function() {
		
		let queryData = $(this).serialize();
		
		$.ajax({
			url:"/adminRequestCharge",
			type: "POST",
			dataType: "json"
			data: queryData
			success: function(result) {
				console.log(result);
			}
		})
	})
	

	setRequestList(jqgrid_data);
	
	// grid resize
	$(window).on('resize.jqGrid', function() {
		$("#chargeRequestList").jqGrid('setGridWidth', $(".grid-cover").width());
	})
	
});


	
function setRequestList(jqgrid_data){
	jQuery("#chargeRequestList").jqGrid({
		data : jqgrid_data,
...

내가 뷰에 넣어야할 데이터의 모습입니다.

var jqgrid_data = [{
	seq: '1512',
	status : '0',
	value : '10,000',
	purchase_means : '1001',
	paid : '20',
    reg_date : '2019-06-24 12:43:33',
	pay_status : '0',
	paid_date : '2019-06-08 10:33:23',
	func : '1'
},
{
...
}

(Hong Develop) #2

아래 코드처럼 controller의 value값에 맞춰서 url을 넣어야 했습니다. url은 View의 값과 같으면 안됩니다.
$.ajax({
url:"/adminRequestChargeData",
type: “POST”,
dataType: “json”,
data: data,
success: function(result) {
console.log(result.jqgrid_data);
setRequestList(result.jqgrid_data)
}
})