스프링 MVC 모델로 웹개발 중인데, @RequestMapping 역할을 하는 바...
-
게시물 수정 , 삭제는 로그인 필요
스프링 MVC 모델로 웹개발 중인데, @RequestMapping 역할을 하는 바인딩 함수를 만들고 싶네요.
(추가질문: Ajax에서 컨트롤러의 서비스 콜할 때, 전달되는 아규먼트 타입 및 순서에 대한 질문)
.JSP단에서 Controller에 Ajax 콜로 파라메터를 포함해서 "HttpServletRequest request" 정보를 컨트롤러로 넘겼을 때,
컨트롤러 단에서 이 request를 특정 모델(제가 원하는 모델은 DataMap 인데, 이 내용은 맨 아래)으로 변환(bind)하고 싶은데,
그 변환하는 방법을 알고 싶습니다.
----[소스1] .jsp 소스 일부 ------
function fncGridMstSearch(page_skip)
{
new Ajax.Request(URL,{
method: 'post',
parameters : {
"mode" : "doList000"
,"cd_type" : $F("sch_cd_type")
},
onSuccess : function(transport){
dataPagMst = transport.responseText.evalJSON().PAGE;
dataSetMst = transport.responseText.evalJSON().LIST;
----[소스2] 컨트롤러 단의 소스 구성---------
@RequestMapping
public ModelAndView doList000 (HttpServletRequest request,
HttpServletResponse response) throws Exception {
DataMap dataMap = new DataMap();
map_bind(request , dataMap); <==== 여기서 dataMap 모델로 binding
.....
}
여기서, 사용하고 싶은 map_bind() 함수를 만들고 싶은데,
HttpServletRequest 모델은 DataMap 모델로 변환할 수 있는 binding함수를 만들고 싶네요.
bind 이후에는
String s_paradata = dataMap.get("mode");
처럼 dataMap 모델에서 ajax에서 전달받은 파라메터 값을 꺼내 쓰고 싶네요
물론, 아래처럼
----------[소스3] 아래 -----------
@RequestMapping
public ModelAndView doList000 ( @ModelAttribute("dataMap") DataMap dataMap,
HttpServletRequest request, HttpServletResponse response
) throws Exception {
......
}
@ModelAttribute 애노테이션을 사용해서 Spring에서 알아서 모델매핑을 해 주는 방식도 있다고 하는데,
이런 저런 이유로 그게 잘 안되서,
따로 애노테시션(@ModelAttribute)이 하는 역할을 bind함수를 따로 만들어서 하고 싶습니다.
함수를 만들어 주면 최고이고요^^,
그게 어렵다면, 바인딩함수 만들 때, 참조할 수 있는 정보 부탁합니다.
-----------[소스4] DataMap.java -------------
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections.FastHashMap;
/**
* @FileName : DataMap.java
*/
@SuppressWarnings("unchecked")
public class DataMap<K,V> implements Map{
FastHashMap map;
public DataMap(){
map = new FastHashMap();
}
public void clear() {
map.clear();
}
public boolean containsKey(Object key) {
return map.containsKey(key);
}
public boolean containsValue(Object value) {
return map.containsValue(value);
}
public Set entrySet() {
return map.entrySet();
}
/* (non-Javadoc)
* @see java.util.Map#get(java.lang.Object)
*/
public Object get(Object key) {
return map.get(key);
}
public Object get() {
return map.keySet();
}
/* (non-Javadoc)
* @see java.util.Map#isEmpty()
*/
public boolean isEmpty() {
return map.isEmpty();
}
/* (non-Javadoc)
* @see java.util.Map#keySet()
*/
public Set keySet() {
return map.keySet();
}
/* (non-Javadoc)
* @see java.util.Map#put(K, V)
*/
public Object put(Object key, Object value) {
if (value == null) {
value = "";
}
return map.put(key.toString().toLowerCase(), value);
}
/* (non-Javadoc)
* @see java.util.Map#put(K, V)
*/
public Object putNoLowercase(Object key, Object value) {
if (value == null) {
value = "";
}
return map.put(key.toString(), value);
}
/* (non-Javadoc)
* @see java.util.Map#putAll(java.util.Map)
*/
public void putAll(Map map) {
map.putAll(map);
}
/* (non-Javadoc)
* @see java.util.Map#remove(java.lang.Object)
*/
public Object remove(Object key) {
return map.remove(key);
}
/* (non-Javadoc)
* @see java.util.Map#size()
*/
public int size() {
return map.size();
}
/* (non-Javadoc)
* @see java.util.Map#values()
*/
public Collection values() {
return map.values();
}
}
========= 2/16 질문 보충 ==========
.jsp단에서 Ajax로 컨트롤러의 메서드(method)를 콜 할 때 넘겨주는 아규먼트의 순서는
어떻게 결정되는 걸까요?
즉, 컨트롤러 단의 메서드에서 아규먼트 순서를 정하는 대로 결정되는 것인지?
아니면, Ajax프레임웍(prototype)에서 컨트롤러에 넘길 때 결정해서 넘겨주게 되는 것인지?
어떤게 맞는 것일까요?
그것도 아니면, 메서드 호출 아규먼트 순서가 고정되는 것이 아니라, 아규먼트의 타입에 맞춰서 알아서 넘어가게 되는 것일까요?
즉, 콜되는 컨트롤러단에서 메서드 아규먼트의 순서를 정하면, 타입에 맞게 알아서 맞춰지는 것일까요?
#스프링 mvc #스프링 mvc 구조 #스프링 mvc 패턴 #스프링 mvc 게시판 만들기 #스프링 mvc 프로젝트 구조 #스프링 mvc 구조 흐름 #스프링 mvc 로그인 구현 #스프링 mvc 프로젝트 만들기 #스프링 mvc 프로젝트 없음 #스프링 mvc 예제