JSP에서 동일한 칼럼에 여러 데이터 넣기 - list 형태 사용하기
2022. 6. 13. 16:43ㆍJava/JSP
반응형
우선 예시부터 보자면..
- 과목
- 점수
- 과목
- 점수
- 과목
- 점수
위와 같은 형태의 input들이 있다고 할 때..
동일한 칼럼에 모두 다른 데이터를 한 번에 집어넣어야 하는 상황이 생긴다.
예시)
title="국어,영어,수학"
score="90,88,90"
## 일반적으로 사용하는 방식
- Controller로 보내기 전에 JSP에서 값을 분리하여 하나의 리스트씩 돌린다.
- 즉, title에 a,b,c의 값이 들어갔다면
- split을 사용하여 a / b / c로 각각 구분을 하고
- for문을 사용하여 따로따로 Controller로 보낸다.
- 그대로 값을 넘기고 Controller에서 처리를 한다.
- 이 때에도 동일하게 split을 사용하는 게 일반적인 것 같다.
## 이번에 포스팅하려는 방식
- VO
@Getter
@Setter
@Alias("scVO")
public class ScVO {
/* 과목 */
private String subject;
/* 점수 */
private String score;
/* JSP에서 사용할 List */
private List<ScVO> scVOList;
}
- JSP
- method :: POST 방식
- url :: 등록할 수 있는 Controller mapping 주소로
- $("#dtfForm").serialize() :: form:form tag 내의 모든 값들을 data로 보낸다.
- success :: 성공했을 경우
- error :: 실패했을 경우
<form:form commandName="searchVO" name="dftForm" id="dftForm" method="post">
<ul>
<li><form:input path="scVOList[0].subject" id="subject" /></li>
<li><form:input path="scVOList[0].score" id="score" /></li>
</ul>
<ul>
<li><form:input path="scVOList[1].subject" id="subject" /></li>
<li><form:input path="scVOList[1].score" id="score" /></li>
</ul>
<ul>
<li><form:input path="scVOList[2].subject" id="subject" /></li>
<li><form:input path="scVOList[2].score" id="score" /></li>
</ul>
<button id="btn_submit">저장하기</button>
</form>
<script>
<%-- jQuery 사용함 --%>
$("#btn_submit").on("click") {
$.ajax({
method: "POST"
, url: "insert.do"
, data: $("#dftForm").serialize()
, success: function() {
alert("등록 성공");
}, error: function() {
alert("등록 실패");
}
});
}
</script>
- Controller
- Iterator를 사용하여 scVOList에서 반복해서 데이터를 insert하기
- iterator.hasNext :: 쪼갠 데이터 중에서 다음 데이터가 있을 때까지만 반복문 실행
@Controller
public class ScController {
@RequestMapping(value="insert.do", method=RequestMethod.POST)
public String insert(@Valid ScVO scVO) {
// iterator를 사용하여 JSP에서 넘겨준 데이터 반복해서 insert하기
Iterator iterator = scVO.getScVOList().iterator();
while(iterator.hasNext()) {
ScVO scVO1 = (ScVO) iterator.next();
scService.insert(scVO1);
}
}
}
- DB
<!-- insert하기 -->
<insert id="insert" parameterType="ScVO">
INSERT INTO T_SCHOOL (
SEQ
, SUBJECT
, SCORE
) VALUES (
#{seq}
, #{subject}
, #{score}
)
</insert>
성공 시 아래와 같은 형태로 DB에 저장됨.
seq | subject | score |
1 | 국어 | 90 |
2 | 영어 | 88 |
3 | 수학 | 90 |
728x90
반응형
'Java > JSP' 카테고리의 다른 글
Youtube iframe api 이용하기 (0) | 2022.05.10 |
---|