2013-06-29 3 views
0

서블릿에서 HTTP POST 요청 데이터를 읽어야합니다. 데이터가 이름 - 값 쌍에 있습니다. 다음은 서버로 전송 된 데이터입니다 (Google 크롬의 Inspect Element 도구의 Network 탭에서이 데이터를 선택했습니다).서블릿에서 중첩 된 이름 - 값 쌍을 읽는 중

data1[roll_no]:32 
data1[section]:A 
data1[standard]:2 
data1[marks][]:54 
data1[marks][]:23 

marks 목록을 제외한 모든 값을 읽을 수 있습니다. 값을 읽어 내 시도는 다음과 같습니다 paramdata1[marks][]

답변

1

사용 대해 getParameterValues ​​()

String param = ...; 
if(param.equals("data1[marks][]")) { 
    String[] marks = request.getParameterValues(param); 
    for(String m : marks) { //iterate over param data1[marks][] 
     //do 
    } 

} 

getParameterValues 때 여기,

protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    log(this.getClass().getSimpleName()); 
    Enumeration<String> name = request.getParameterNames(); 
    while(name.hasMoreElements()){ 
     String param = name.nextElement(); 
     log(param+" = "+request.getParameter(param)); 
    } 
} 

그리고 나는 마크의 전체 목록을 반복하는 몇 가지 단서가 필요합니다 <select multiple> 요소의 값을 얻을 때도 유용 할 수 있습니다.

<select name="multiParams" multiple> 
    ... 
</select> 
1

이 경우 고유하지 않은 매개 변수가 있습니다. data1[marks][].

당신은 거기에 고유하지 않은 매개 변수 키

request.getParameterValues(param)

은 문자열의 배열을 반환 시나리오에 사용되는 request.getparameterValues(param)를 사용하여 시도 할 수 있습니다. 자세한 내용은 ServletRequest API을 참조하십시오.

+0

나는 위에서 언급 한 해결책을 시도했지만 원하는 결과를 얻지 못하고있다. 또한 나는 데이터 [마크] [0], 데이터 1 [마크] [1] 등등을 수정해야한다고 생각합니다. 그런 경우 어떻게하면 데이터 1 [마크]에 얼마나 많은 값이 있는지 알 수 있습니다. 내가 그걸 얻을 수 있다면 나에게 더 좋을거야. –