YeaLow
article thumbnail

๐Ÿ’ก๊ธฐ์กด์—๋Š” form ํƒœ๊ทธ์— action์œผ๋กœ ์ฃผ์†Œ๋ฅผ ๊ฑธ์–ด์„œ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ ์—ฌ๊ธฐ์—์„œ๋Š” ๊ธฐ์กด์˜ ๋ฐฉ์‹์ด ์•„๋‹Œ, JSON์„ ํ™œ์šฉํ•ด์„œ Ajax๋กœ ํšŒ์›๊ฐ€์ž…์„ ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๋‹ค.

 

1. ์„œ๋ฒ„ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ ์Šค์บ”ํ•˜๋Š” ๊ณณ์ธ src/main/resources/static ์•„๋ž˜์— user.js ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ์ค€๋‹ค.

2. ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ์ด ๊ธฐ์กด์— submit ํƒ€์ž…์ด์—ˆ๋Š”๋ฐ ํƒ€์ž…์„ ์ง€์šฐ๊ณ  id๊ฐ’์„ ๋ถ€์—ฌํ•ด ์ค€๋‹ค.

<button id="btn-save" class="btn btn-primary">ํšŒ์›๊ฐ€์ž…์™„๋ฃŒ</button>

 

3. id๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์ค€๋‹ค.

 

4. ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์•„๋ฌด ๊ฐ’์„ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ํšŒ์›๊ฐ€์ž…์™„๋ฃŒ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด alert์ฐฝ์ด ์ž˜ ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

5. ์ด์ œ ajax ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค„ ๊ฒƒ์ด๋‹ค.

 

๐Ÿ’กํšŒ์›๊ฐ€์ž… ์‹œ Ajax๋ฅผ ์‚ฌ์šฉํ•˜๋Š” 2๊ฐ€์ง€ ์ด์œ ?

  • 1. ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ html์ด ์•„๋‹Œ Data(Json)๋กœ ๋ฐ›๊ธฐ ์œ„ํ•˜์—ฌ
  • 2. ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์œ„ํ•˜์—ฌ

6. UserApiController ํด๋ž˜์Šค ์ž‘์„ฑ

@RestController
public class UserApiController {
	
	@Autowired
	private UserService userService;
	
	@PostMapping("/api/user")
	public ResponseDto<Integer> save(@RequestBody User user) {
		System.out.println("UserApiControllre: save ํ˜ธ์ถœ๋จ");
		user.setRole(RoleType.USER);
		int result = userService.ํšŒ์›๊ฐ€์ž…(user);
		return new ResponseDto<Integer>(HttpStatus.OK,result);
	}
}

 

7. UserService ์ฝ”๋“œ ์ž‘์„ฑ

//์Šคํ”„๋ง์ด ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์„ ํ†ตํ•ด Bean์— ๋“ฑ๋ก์„ ํ•ด์คŒ. IoC๋ฅผ ํ•ด์ค€๋‹ค.
@Service
public class UserService {
	
	@Autowired
	private UserRepository userRepository;
	
	@Transactional
	public int ํšŒ์›๊ฐ€์ž…(User user) {
		
		try {
			userRepository.save(user);
			return 1;
		}catch (Exception e) {
			e.printStackTrace();
			System.out.println("UserService : ํšŒ์›๊ฐ€์ž…() : "+e.getMessage());
		}
		return -1;
	}

}

 

8. ํšŒ์›๊ฐ€์ž…์„ ์ง„ํ–‰ํ•ด ๋ณด๋ฉด ์ฝ˜์†”์ฐฝ์— ๋ฉ”์‹œ์ง€๊ฐ€ ์ž˜ ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

9. ajax ํ†ต์‹ ์—์„œ ์ „์†กํ•  data๋ฅผ ๋จผ์ € alert์ฐฝ์— ๋‹ด์•˜์„ ๋•Œ์—๋Š” object๋กœ ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

10. ์ฃผ์„์„ ์ง€์šฐ๊ณ  ํšŒ์›๊ฐ€์ž…์„ ์ง„ํ–‰ํ•˜๋ฉด ์ฝ˜์†” ๋กœ๊ทธ์— Http ์ƒํƒœ๊ฐ’์ด OK๋กœ ์ž˜ ๋œจ๊ณ 

 

11. DB์—๋„ ๊ฐ’์ด ์ž˜ ๋“ค์–ด์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • ํšŒ์›๊ฐ€์ž… ์‹œ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ

 

  • ํšŒ์›๊ฐ€์ž… ํ›„ DB ํ…Œ์ด๋ธ” ์กฐํšŒ

 

์ค‘์š”! : ์Šคํฌ๋ฆฝํŠธ ํ™•์ธ์‹œ ์ฝ˜์†”์ฐฝ ์˜ค๋ฅ˜ ํ™•์ธ ํ›„ network ํŽ˜์ด์ง€์—์„œ ์ œ๋Œ€๋กœ ๋กœ๋”ฉ์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ 

           ์ œ๋Œ€๋กœ ์•ˆ๋˜๋ฉด ๋นจ๊ฐ„์ƒ‰ ๋œธ ํ™•์ธ ์š”!

            

profile

YeaLow

@YeaLow

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!