본문 바로가기
programming/javascript

자바 스프링 데이터 전송값 모두 확인하는 방법

by 개코 - 개발과 코딩 2023. 1. 6.

HttpServletRequest 객체를 사용하면 전송되는 값을 모두 확인해 볼 수 있다. request.getParameter 메서드는 전송 파라미터 하나를 선택하여 값을 확인할 수 있다. request.getParameterNames 메서드는 열거형의 형태로 request.getParameterMap 메서드는 Map 형태의 KeyValuePair 형태로 전송받은 데이터를 확인해 볼 수 있다.

스프링 데이터 전송값 모두 확인하는 방법

웹프로그래밍을 하다보면 클라이언트에서 서버로 전송되는 값들을 확인할 필요가 있다.

서버로 전송하는 파라미터가 많아지면 일일히 확인하는 것은 어려움보다는 귀찮은 감이 더 클것이다.

전송된 파라미터들은 문자열형태로 보내지며 서버에서 받은 후 리스트 또는 배열의 형태인 열거형으로 확인해 볼 수 있다.

자바 스프링에서는 HttpServletRequest 객체를 사용하여 이를 확인해 볼 수 있으며, 이 기능을 활용한다면 서버에서 받는 파라미터를 좀 더 편하게 처리할 수 있다.

전송받은 파라미터 확인

자바 스프링에서 전송된 값을 받는 방법이 몇 가지가 있지만 편한 방법이 3가지가 있다.

가장 많이 사용되는 것은 아무래도 getParameter 메서드 일 것이며, 배열의 형태로 모든 파라미터와 값을 확인하려면 getParameterNames 메서드 또는 getParameterMap 메서드이다.

getParameterNames 메서드와 getParameterMap 메서드는 각각 전송받은 파라미터들을 열거형 또는 Map 형태로 확인해 볼 수 있다.

아래는 HttpServletRequest 객체에서 전송받는 파라미터와 값을 확인하는 메서드들이다.

  • request.getParameter()
    리턴값 : 문자열 String
  • request.getParameterNames()
    리턴값 : 열거형 Enumeration<E>
  • request.getParameterMap()
    리턴값 : 배열형 Map<K,V>

단일 파라미터 받기
reqeust.getParameter

자바 스프링의 컨트롤러에 전송받은 파라미터를 확인하는 가장 쉬운 방법은 request.getParameter 메서드를 사용하는 것이다.

인자값은 문자열로 받으며 클라이언트에서 보낸 파라미터명을 넣어주면 된다.

request.getParameter 메서드의 사용법은 다음과 같다.

String vReqTxt = request.getParameter("txtA");

String javax.servlet.ServletRequest.getParameter(String name)

Parameters
- name 매개 변수의 이름을 지정하는 문자열
Returns:
- 매개 변수의 단일 값을 나타내는 문자열

열거형으로 파라미터 받기
request.getParameterNames

열거형은 동일한 데이터타입의 값들이 배열처럼 구성된 데이터이다.

전송되는 파라미터는 request.getParameterNames 메서드를 사용하여 열거형 형태로 전송된 데이터를 확인해 볼 수 있다.

아래는 request.getParameterNames 메서드를 사용하는 방법이다.

Enumeration<?> eParam = request.getParameterNames();

Enumeration javax.servlet.ServletRequest.getParameterNames()

Returns:
- 요청 매개 변수의 이름을 포함하는 
  String 개체의 Enumeration 
  요청에 매개 변수가 없는 경우
  빈 Enumeration

Map으로 파라미터 받기
request.getParameterMap

Map은 키와 쌍으로 구성된 배열형태를 가진 데이터타입이다. KeyValuePair 라고 표현을 한다.

전송되는 파라미터는 key와 값 형태로 열거되어 넘어오기 때문에 Map 형태로 표현이 가능하다.

스프링의 HttpServletRequest 객체는 넘어오는 값을 Map 형태로 표현을 해 준다.

아래는 request.getParameterMap 메서드의 사용법을 보여준다.

Map<?,?> map = request.getParameterMap();

Map javax.servlet.ServletRequest.getParameterMap()

Returns:
- 매개 변수 이름을 키로, 매개 변수 값을 맵 값으로 포함하는 맵.
  매개 변수 맵의 키는 String 유형
  매개 변수 맵의 값은 문자열 배열 유형

전체 코드와 결과

이제 클라이언트에서 보낸 값을 확인하기 위한 코드를 만들어 본다.

html 의 form 에서 보낸 데이터는 post 로 보냈지만 url 에 붙은 파라미터는 ?key=value&key=value ~ 형태일 것이다.

자바 스프링에서 컨트롤러를 하나 만들어 클라이언트에서 보낸 값을 반복문을 사용하여 직접 확인해 본다.

쓸데없는 코드들이 섞여 있지만, try ~ catch 안에 있는 request 객체에 대한 메서드만 보면 된다.

/**
 * get-parameter 테스트
 * https://jsonformatter.curiousconcept.com/
 */
@RequestMapping(value = "/ztest/getparameter", method = {RequestMethod.POST, RequestMethod.GET})
public ResponseEntity<String> GetParameter(Locale locale, Model model, HttpServletRequest request) {
	
	//--------------------------------------------------
	String vReturnText = "";
	zTestModel vModel = null;
	
	//--------------------------------------------------
	HttpHeaders responseHeaders = new HttpHeaders();
	responseHeaders.add("Content-Type", "text/html; charset=UTF-8");
	
	//--------------------------------------------------
	Map<String, Object> vReturnMessage = new HashMap<String, Object>();
	vReturnMessage.put("code", "SUCCESS");
	vReturnMessage.put("message", String.format("작업이 성공하였습니다.", ""));
	vReturnText = JSONObject.toJSONString(vReturnMessage);
	
	//--------------------------------------------------
	Date date = new Date();
	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
	String vNo = simpleDateFormat.format(date);
	
	//--------------------------------------------------
	try {
		
		System.out.println("--------------------------------------------------");
		
		String vReqTxt = request.getParameter("txtA");
		System.out.println(vReqTxt);
		
		System.out.println("--------------------------------------------------");
		
		Enumeration<?> eParam = request.getParameterNames();
		while (eParam.hasMoreElements()) {
			String pName = (String)eParam.nextElement();
			String pValue = request.getParameter(pName);
			System.out.println(pName + " : " + pValue);
		}
		
		System.out.println("--------------------------------------------------");
		
		Map<?,?> map = request.getParameterMap();
		for (Object key : map.keySet()) {
			String keyStr = (String)key;
			String[] value = (String[])map.get(keyStr);
			System.out.println("Key-" + (String)key + " : Value-" + Arrays.toString(value));
		}
		
		System.out.println("--------------------------------------------------");
		
	} catch (Exception ex) {
		vReturnMessage.put("code", "EXCEPTION");
		vReturnMessage.put("message", String.format("예외가 발생하였습니다.", ""));
		vReturnMessage.put("messageDetail", String.format("%s", ex.getMessage()));
		
		//--------------------------------------------------
		vReturnText = JSONObject.toJSONString(vReturnMessage);
	}
	
	//--------------------------------------------------
	//vReturnText = JSONObject.toJSONString(vReturnMessage);
	
	//--------------------------------------------------
	System.out.println(vReturnText);
	return new ResponseEntity<String>(vReturnText, responseHeaders, HttpStatus.CREATED);
}

결과를 확인해 보자.

첫번째는 requst.getParameter 메서드를 사용한 것이며, 두번째는 request.getParameterNames 메서드를 세번째는 request.getParameterMap 메서드를 사용한 것이다.

첫번째 메서드는 단일값을 지정하여 값을 확인해 볼 수 있다.

두번째, 세번째 메서드는 전송된 모든 값을 반복문을 통해 확인해 볼 수 있다.

반응형

댓글