02-07 13:11
Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
관리 메뉴

기록을 합시다.

[Spring] Spring Framework에서 Form 받아오기 본문

공부/Java

[Spring] Spring Framework에서 Form 받아오기

울집고양이세마리 2023. 4. 27. 12:00

사전 지식

VO 

@Controller

  • @Controller 애노테이션은 Spring MVC에서 Controller 클래스에 대해 정의한다. 이 애노테이션이 붙은 클래스는 HTTP 요청을 처리하고, 처리한 결과를 응답해준다. 

@GetMapping

  • @GetMapping은 HTTP GET 요청을 처리하는 메서드를 정의할 때 사용한다. 메서드에 붙이게 되면, 해당 URL 경로의 GET 요청을 처리하게 된다. 

@PostMapping

  • @PostMapping은 HTTP POST 요청을 처리하는 메서드를 정의할 때 사용한다. 메서드에 붙이면, 해당 URL 경로의 POST 요청을 처리한다. 

HTML 파일

function register(){
	if($("#userid").val() == '') { alert("아이디를 입력하세요."); $("#userid").focus();  return false; }
	if($("#username").val() == '') { alert("이름을 입력하세요."); $("#username").focus(); return false; }
	const Pass = $("#userpasswd").val();
	const Pass1 = $("#userpasswd1").val();
	if(Pass == '') { alert("암호를 입력하세요."); $("#userpasswd").focus(); return false; }
	if(Pass1 == '') { alert("암호를 입력하세요."); $("#userpasswd1").focus(); return false; }
	if(Pass != Pass1) 
		{ alert("입력된 비밀번호를 확인하세요"); $("#userpasswd1").focus(); return false; }
	
	var num = Pass.search(/[0-9]/g);
 	var eng = Pass.search(/[a-z]/ig);
 	var spe = Pass.search(/[`~!@@#$%^&*|₩₩₩'₩";:₩/?]/gi);	

	document.RegistryForm.action = '/board/signup';
	document.RegistryForm.submit();
	
	$('#RegistryForm').attr('action', '/user/signup').submit();
};
  • 위에서는 Form을 submit 하는 register 함수이다. 위에서는 RegistryForm에 작성된 userid, username, userpasswd, userpasswd을 /board/signup로 POST 해주고 있다. 

Contoller 파일

package com.SFTest.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import com.SFTest.dto.User;

@Controller
public class BoardController {
	@GetMapping("/user/signup")
	public void getSignUp() throws Exception{
		
	}
	
	@PostMapping("/user/signup")
	public void postSignUp(User user) throws Exception{
		System.out.println("userid = " + user.getUserid());
		System.out.println("username = " + user.getUsername());
		System.out.println("gender = " + user.getGender());
		System.out.println("hobby = " + user.getHobby());
		System.out.println("job = " + user.getJob());
		
	}
}

코드 설명 

@GetMapping("/user/signup")
public void getSignUp() throws Exception{}
  • @GetMapping을 통해 get요청을 받으면 user폴더의 signup.jsp로 mapping 해준다.
	@PostMapping("/user/signup")
	public void postSignUp(User user) throws Exception{
		System.out.println("userid = " + user.getUserid());
		System.out.println("username = " + user.getUsername());
		System.out.println("gender = " + user.getGender());
		System.out.println("hobby = " + user.getHobby());
		System.out.println("job = " + user.getJob());
	}
  • @PostMapping을 통해 post요청을 받으면 user폴더의 signup.jsp로 mapping 해준다.
  • Sprinv MVC에서는 HTTP 요청의 Body에 포함된 Form Data를 자동으로 VO 객체로 변환해주는 기능을 제공한다. ㄱ그리하여 User  타입의 user를 파라미터로 받아오고 있는데, 이는 VO인 User 타입의 형식대로 Form Data를 받아온 것과 같다.
  • System.out.println문을 통해 Form Data가 잘 들어왔는지 확인한다.  

VO 파일

package com.SFTest.dto;

import java.util.List;

public class User {
	private String userid;
	private String username;
	private String gender;
	private List<String> hobby;
	private String job;
	
	public String getUserid() {
		return userid;
	}
	public void setUserid(String userid) {
		this.userid = userid;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public List<String> getHobby() {
		return hobby;
	}
	public void setHobby(List<String> hobby) {
		this.hobby = hobby;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	
	
}
  • HTML에서 받아온 Form 데이터 형식에 맞게 User 클래스를 작성하였다. 
  • 데이터들의 멤버변수를 만들어주었고, 나머지는 다 그에 대한 getter / setter 함수들이다. 

결과

  • Form Data가 아주 잘 도착했다. 
Comments