본문 바로가기
개발노트

Controller에서 Request을 hashmap으로 받기

by SoonNote 2022. 5. 31.
반응형

보통 받아온 request 파라미터를

@RequestMapping("/main.do")
public String main(HttpServletRequest request) {
	String id = request.getParameter("id");
	System.out.prinln(id);
	return "main";
}

이런식으로 받아오지만

 

hashmap으로 변형해주는 메소드를 추가하여 좀더 쉽게 사용이 가능하다.

 

 

package cms.cmm.util;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class WebUtil
{

	/**
	 * 모든 파라미터를 해시맵으로 리턴
	 * 
	 * @param request
	 * @param columns
	 * @return
	 */
	public static HashMap<String, Object> getRequestToHashMap( HttpServletRequest request, List<String> columns ) {

		// 실제 존재?하는 컬럼만 파라미터로 넘기기 위해..
		boolean hasColumns = false;
		if( columns != null && columns.size() > 0 )
			hasColumns = true;

		Enumeration<String> enums = request.getParameterNames();

		HashMap<String, Object> model = new HashMap<String, Object>();

		while( enums.hasMoreElements() ) {
			String name = enums.nextElement();

			boolean addToModel = false;
			// 컬럼이 정의된 경우 선택적으로(정의되어 있는 파라미터) model 에 추가
			if( hasColumns ) {
				// 효과적으로 체크할 방법 결정하고, 우선 루프
				for( int i = 0; i < columns.size(); i++ ) {
					if( name.equals( columns.get( i ) ) ) {
						addToModel = true;
						break;
					}
				}
			}
			else {
				addToModel = true;
			}

			// 파라미터를 모델에 추가
			if( addToModel ) {
				String[] values = request.getParameterValues( name );

				if( values.length == 1 ) {
					model.put( name, request.getParameter( name ) );
				}
				else {
					model.put( name, values );
				}
			}
		}

		return model;
	}

	/**
	 * 
	 * @param request
	 * @return
	 * @see getRequestToHashMap( HttpServletRequest request, List<String> columns )
	 */
	public static HashMap<String, Object> getRequestToHashMap( HttpServletRequest request ) {
		return getRequestToHashMap( request, null );
	}

}

공통 class로 따로 빼고

 

@RequestMapping(value="/ims/site/test.do")
	public String selectvisualList( ModelMap model
									  , HttpServletRequest request
									  , HttpServletResponse response ) throws Exception {
	//모든 파라메터 *******
    	HashMap<String, Object> param = WebUtil.getRequestToHashMap( request ); //request hashmap으로 변형
	//**************
        
    	// list 페이지로 갈때 사용할 파라메터 
    	String schString = WebUtil.getRequestToQueryString( request, searchParam );
    	
    	if(!param.containsKey("sKey")){
    		param.put("sKey", "1");
    	}
    	
  		int pageSize = StringUtil.toInt( param.get( "pageSize" ), 10 );
  		
  		// 전체 레코드 수
  		int listCount = testService.getListCount(param);
  		
  		// Paging 정보 설정한다 ( getList 전에 호출해야 함 )
  		SetPager(model, param, listCount);
		
		//최종목록
  		List<HashMap<String, Object>> list = testService.getList( param );
		
		model.addAttribute( "list", list );
		model.addAttribute( "schString", schString );

    	
		return "/siteMng/test/list";
	}

사용할 컨트롤러에서 

HashMap<String, Object> param = WebUtil.getRequestToHashMap( request );

를 사용하여 받아온 requset 파라미터들을 hashmap으로 변경 시켜준다.

 

변경된 파라미터를 바로 testService.list(param); 으로 사용이 가능하기에 좀더 편하게 사용이 가능하다

param 변수

request로 받아온 sKey 변수 하나가 hashmap형태로 들어갔다.

반응형

'개발노트' 카테고리의 다른 글

ajax form 한번에 보내기  (0) 2022.07.14
JAVA 접속자 IP 가져오기  (0) 2022.06.16
.each문으로 td값 비교  (0) 2022.05.12
버튼으로 테이블 tr, td 제어하기  (0) 2022.05.10
NICE 인증 크로스도메인 에러  (0) 2022.05.09