스프링 폼 태그
스프링 폼 태그는 스프링 MVC와 연동되는 태그 라이브러리입니다.
이 태그를 사용해서 Setter() 메소드를 작성한 클래스의 프로퍼티에 접근할 수 있습니다.
이렇게 하면 컨트롤러가 다루는 데이터를 참조할 수 있어 동적인 웹을 더 쉽고 간편하게 개발, 유지가 가능합니다.
스프링 폼 태그를 사용하기 위해서 뷰 페이지 위쪽에 다음과 같이 선언해줍니다.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
스프링 폼 태그 유형은 다음과 같습니다.
태그 유형 | 설명 | 출력되는 HTML 태그 |
<form> | 폼의 시작과 끝을 나타낼 때 사용 | <form> |
<input> | 사용자가 일반 텍스트를 입력할 수 있는 입력 필드를 만들 때 사용 | <input type="text"> |
<checkbox> | 많은 옵션 중 여러 개를 선택할 때 사용 | <input type="checkbox"> |
<checkboxes> | <form:checkbox> 목록을 나타낼 때 사용 | |
<radiobutton> | 많은 옵션 중 하나 선택할 때 사용 | <input type="radio"> |
<radiobuttons> | <form:radiobutton> 목록을 나타낼 때 사용 | |
<password> | 사용자가 텍스트를 입력하면 *로 변환되어 입력할 때 사용 | <input type="password"> |
<select> | 콤보 박스나 리스트 박스를 나타낼 때 사용 | <select> |
<option> | <SELECT>...</SELECT>에 포함되어 목록을 구성할 때 사용 | <option> |
<options> | <form:option> 목록을 나타낼 때 사용 | |
<textarea> | 사용자가 여러 줄의 텍스트를 입력할 수 있도록 입력 박스 제공할 때 사용 | <textarea> |
<hidden> | 웹 브라우저가 출력하지 않는 입력 폼으로 사용 | <input type="hidden"> |
<errors> | 유효성 검사에서 생긴 오류 메시지를 나타낼 때 사용 |
스프링 폼 태그 사용
<form> 태그는 단독으로 쓰이지 않고 사용자로부터 데이터를 입력받는 최상위 태그로 사용됩니다.
형식은 다음과 같습니다.
<form:form 속성1="값1" [속성2="값2"...]>
//다양한 입력 양식 태그(<input>,<select>,<textarea>)
</form:form>
<form> 태그는 다음과 같은 속성이 있습니다.
모든 속성은 선택 사항입니다.
속성 | 설명 |
modelAttribute (또는 commandName) | 참조하는 커맨드 객체 설정 (반드시 첫 글자 소문자) |
action | 데이터를 받아 처리하는 웹 페이지 URL 설정 |
method | 데이터가 전송되는 HTTP 방식 설정 |
name | 폼을 식별하는 이름 설정 |
target | 폼 처리 결과의 응답을 실행할 프레임 설정 |
enctype | 폼을 전송하는 콘텐츠 MIME 유형 설정 |
accept-charset | 폼 전송에 사용할 문자 인코딩 설정 |
<form> 태그는 HTML의 <form> 태그와 달리 modelAttribute 속성을 지원합니다.
이를 통해 <input>이나 <hidden>같은 태그들이 커맨드 객체의 프로퍼티에 접근이 가능합니다.
스프링 폼 태그들은 <form:form> 태그 내 중첩되어 사용이 됩니다.
사용하고서는 반드시 </> 태그로 닫아줍니다.
<form:form> 태그 내 modelAttribute 속성을 설정하면 중첩되는 <form:form> 태그에
반드시 path 속성을 설정해줍니다.
커맨드 객체의 필드에 접근하기 위함입니다.
<form:form modelAttribute="커맨드 객체">
<form:태그 이름 path="커맨드 객체의 프로퍼티"/>
</form:form>
다음은 스프링 폼 태그 사용 예시입니다.
우선 webpage07_01.jsp 파일입니다.
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<title>Form Tag</title>
</head>
<body>
<h3>회원가입</h3>
<form:form modelAttribute="member" method="post">
<p>아이디 : <form:input path="id" name="id"/>
<p>비밀번호 : <form:password path="password"/>
<p>거주지 : <form:select path="city">
<form:option value="서울시">서울시</form:option>
<form:option value="경기도">경기도</form:option>
<form:option value="인천시">인천시</form:option>
<form:option value="충청도">충청도</form:option>
<form:option value="전라도">전라도</form:option>
<form:option value="경상도">경상도</form:option>
</form:select>
<p>성별 : <form:radiobutton path="sex" value="남성"/>남성
<form:radiobutton path="sex" value="여성"/>여성
<p>취미 : 독서<form:checkbox path="hobby" value="독서"/>
운동<form:checkbox path="hobby" value="운동"/>
영화<form:checkbox path="hobby" value="영화"/>
<p><input type="submit" value="가입하기"/>
<input type="reset" value="다시쓰기"/>
</form:form>
</body>
</html>
그리고 Member.java입니다.
package com.springmvc.domain;
import java.util.Date;
public class Member {
private int id;
private String password;
private String city;
private String sex;
private String[] hobby;
private Date birth;
public Member() {
super();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
}
Example01Controller.java 파일입니다.
package com.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.springmvc.domain.Member;
@Controller
public class Example01Controller {
@RequestMapping("/member")
public String showForm(Model model) {
Member member = new Member();
model.addAttribute("member", member);
return "webpage07_01";
}
}
톰캣 서버 실행 후 'http://localhost/chap07/member'을 입력합니다.
다음과 같이 입력 폼이 출력됩니다.
'SPRING' 카테고리의 다른 글
[SPRING]#15 도서 쇼핑몰 구현 (데이터 바인딩1) (0) | 2024.01.08 |
---|---|
[SPRING]#14 도서 쇼핑몰 구현 (스프링 폼 태그2) (0) | 2024.01.07 |
[SPRING]#12 도서 쇼핑몰 구현 (요청 파라미터2) (0) | 2024.01.07 |
[SPRING]#11 도서 쇼핑몰 구현 (요청 파라미터1) (0) | 2024.01.07 |
[SPRING]#10 도서 쇼핑몰 구현 (매트릭스 변수2) (0) | 2024.01.06 |