ppp111222
208
2015-12-10 08:07:11
3
7699

jsp->java로 값 전달 하는 방법 질문이요


간단하게 jsp에서 java로(정확히는 클라이언트)로 보내려고합니다(jsp에서 받은 값을 서버로 보내는 코드 작성중입니다.)

지금 코드를 짜면서 문제가 생긴게 


1.jsp에서 값을 보냈는데 client에서 어떻게 받을지 모르겠습니다.(스프링을 기반으로 mvc패턴으로 재작중입니다.)

  form에서 post를 get방식으로 바꾸고 확인 했을때는 url에 데이터들이 넘어가는걸 확인 했습니다.

  그런데 submit()함수를 실행할때 한게가 아니라 여러개의 값을 보내려니 어떻게 받을지를 모르겠습니다.


2.동적으로 줄을 추가하는데 id값이 지정이 안되는건지 form에 포함이 되질 않는건지 추가로 입력한 줄은 데이터 전송이 아예 안됩니다.

  이거도 post를 get으로 바꾸고 확인하면 최초 down1,2는 넘어가지만 추가로 들어간 3이상의 줄은 전송되지 않습니다.


코드보고 도움 요청합니다




//1.up에서 3개의 text형식에서 입력을 받습니다.

<tr align="center">

<form name="up" id="up" method="post">

<td><input type="text" name="up1"></td>

<td><input type="text" name="up2"></td>

<td><input type="text" name="up3"></td>

</form>

</tr>


//2.down에서는 2개의 text를 받고, 동적 줄 추가가 가능합니다

<table border = "1" id="test">

<form name="down" id="down" method="post">

<td width=100><input type="text" name = "down1"></td>

<td width=100><input type="text" name = "down2"></td>

</form>

</table>


//3. 전체 스크립트

<script language="javascript">

//down1,2는 있으니 down3부터 시작

var Count = 2;

//줄 추가

function add_row() {

Count++;

addrow = document.getElementById('test');

row = addrow.insertRow(addrow.rows.length);

cell1 = row.insertCell(0);

cell2 = row.insertCell(1);

cell1.innerHTML = "<td width=300><input type='text' name = 'down' +'Count'/></td>";

cell2.innerHTML = "<td width=300><input type='text' name = 'down'+'Count+1'/></td>";

}

//줄 삭제

function delete_row() {

alert(Count);

deleterow = document.getElementById('test');

if (Count < 3)

return;

deleterow.deleteRow(deleterow.rows.length - 1);

Count--;

}

//데이터 전송

function upsubmit(){

alert("up옴");

var updata = document.up;

//servlet으로 들어간후 updata.html에 맞는 컨트롤러로 이동합니다

updata.action = "http://localhost:8080/SocketSample/updata.html";

updata.submit();

}

function downsubmit(){

alert("down옴");

var downdata = document.down;

//servlet으로 들어간후 downdata.html에 맞는 컨트롤러로 이동합니다

downdata.action = "http://localhost:8080/SocketSample/downdata.html";

downdata.submit();

}

function submit(){

alert("옴");

upsubmit();

downsubmit();

radiosubmit();

}

</script>

0
0
  • 답변 3

  • 좋은아침
    137
    2015-12-10 09:30:29

    1. Spring 기반 MVC 패턴이시면  Controller에 해당 URL로 매핑된 메서드에서 @RequestParam 애노테이션이 표시된 파라미터를 통해서 Request 객체의 파라미터를 받을 수 있습니다. 

    @RequestMapping("/downdata.html")
    public Model getDownData( @RequestParam(value = "down1") String down1) {
    //To - Do
    return model;
    }


    2. table 엘리먼트에 row를 추가하고 계시는 것 같은데, Form 엘리먼트 내에 소속된 객체만 서브밋 됩니다. 

    Id를 test가 아니라 폼의 아이디를 down을 주셔야죠.


    질문자 분이 올리신 스크립트를 수행하면


    <table border = "1" id="test">

    <form name="down" id="down" method="post">

    <td width=100><input type="text" name = "down1"></td>

    <td width=100><input type="text" name = "down2"></td>

    </form>

            <td width=100><input type="text" name = "down3"></td>

            <td width=100><input type="text" name = "down4"></td>

    </table>


    위와 같은 코드가 되기 떄문에 form객체에서는 3,4번 행을 알 수가없죠


    전체적으로 네이밍이 명확하지 않네요. HTML요소의 네이밍을 신경써서 다시 작성하시는게 좋을 것 같습니다. 










    0
  • Bsang
    274
    2015-12-10 09:49:07

    form을 table 밖에서 감싸면 되겠네요

    0
  • ppp111222
    208
    2015-12-14 10:52:34

    두분 모두 감사합니다.

    제가 form을 3개로 나눠서 보내려고했는데 그냥 간단하게 body내부에 있는걸 하나의 폼으로 감싸고서 get으로 보내고 request로 받아서 해결했습니다.

    경로는 절대경로를 사용하였고, 테이블에 이름이 부여 안되던건 제가 "를 잘못써서 그런거였어요 도와주셔서 감사합니다 !

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.