[TIL-260325] 스프링 프레임워크 기초: Ajax Response, RESTful 컨트롤러, MyBatis

2026. 3. 26. 14:32·Spring

트랜잭션과 AOP, 파라미터 검증도 배웠지만 중요도가 낮다고 생각하여 포스팅하지 않기로 했다.

Ajax Response

우선 Ajax에 대해 간단히 리마인드 해보면, Ajax는 웹 페이지 전체를 새로고침하지 않고, 자바스크립트를 이용해 서버와 비동기적으로 데이터를 교환하여 화면의 일부분만 동적으로 업데이트하는 웹 개발 기술이다.

 

즉 사용자가 이벤트를 발생시키면, 페이지 전체를 다시 로드하는게 아니라 자바스크립트가 HttpReqest를 사용해 서버에 비동기 요청을 보내고, 서버가 요청을 처리하고 데이터를 응답해주면 그 데이터를 받아 화면 일부분만 변경하는 것이다.

스프링에서 Ajax Reponse를 보내는 방법을 예를 통해서 알아보겠다.

 

회원가입 시 중복 이메일 체크를 하기 위해 Ajax Request를 전송한다고 가정한다. 프론트엔드에서는 post 방식으로 /member/duplicate로 요청을 보낸다. post 안에는 email 데이터를 넣어서 보낸다.

 

1. Dependency 추가

먼저 Ajax 요청의 응답을 JSON 형태로 돌려주기 위해 Dependency를 추가한다.

<dependency>
 <groupId>com.fasterxml.jackson.core</groupId>
 <artifactId>jackson-databind</artifactId>
 <version>2.9.6</version>
</dependency>

 

2. 요청 처리해 줄 메서드에 @ResponseBody 어노테이션을 붙이고 return type을 Map으로 한다.

@RequestMapping(value="/member/duplicate", method=RequestMethod.POST)
@ResponseBody
public Map<String, Boolean> doCheckDuplicateEmail(@RequestParam String email) {
 boolean isDuplicate = memberService.selectCountMemberByEmail(email) > 0;
 Map<String, Boolean> result = new HashMap<>();
 result.put("duplicate", isDuplicate);
 return result ;
}

 

3. 그럼 반환한 Map을 JSON 형태로 만들어서 프론트엔드에 response 해준다.

4. 프론트에서는 응답 결과를 response로 받아서 처리해주면 된다.

RESTful 컨트롤러

앞서 본 Ajax response는 메서드마다 @ResponseBody 붙여줘야 하고 return type도 Map으로 해야하는데 스프링에서 RESTful 컨트롤러를 사용하면 RESTful을 이렇게도 구현할 수도 있다.

 

REST란?

RESTful은 REST(Representational State Transfer)라는 아키텍처 스타일의 설계 규칙을 잘 지키는 API나 웹 서비스이다.

REST란 HTTP 메서드 기반의 API 설계 스타일이다.

즉 RESTful은 자원을 URI로 식별하고, HTTP 메소드(GET, POST 등)로 행위를 명시하여, 요청 메시지만 보고도 의도를 명확히 파악할 수 있는 효율적인 웹 서비스 구조이다.

 

@RestController vs @Controller

  • @Controller (기존 방식)
    • View(JSP)를 반환하여 화면을 렌더링
    • 주로 웹 페이지 제공용
    • ModelAndView 또는 String (뷰 이름) 반환
  • @RestController (Spring 4.0+)
    • 데이터(JSON/XML)를 직접 반환
    • 주로 API 서버 구축용
    • @Controller + @ResponseBody 결합

 

스프링에서의 REST 구현 방식

스프링에서는 여러 어노테이션을 사용하여 REST를 구현한다.

  • @RestController
    • REST 방식으로 데이터(JSON/XML)를 반환하는 컨트롤러
  • @GetMapping, @PostMapping, @DeleteMapping
    • HTTP 메서드에 따라 메서드 매핑
  • @RequestBody
    • JSON 데이터를 자바 객체로 자동 변환
  • @ResponseBody
    • 자바 객체를 JSON 데이터로 자동 변환
  • ResponsseEntity:
    • Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스를 상속받아 구현한 클래스
    • 사용자의 HttpRequest에 대한 상태 코드 및 응답 메시지 조작 가능

 

회원 조회, 등록, 삭제에 대한 REST 구현 예시

@RestController
@RequestMapping("/api/members")  // /api/members/요청 들어오면 이 클래스가 받음
public class MemberRestController {
  @Autowired
  private MemberService memberService;
  // 전체 회원 조회
  @GetMapping // Get 방식으로 들어온 요청 처리
  public List<MemberVO> getAllMembers() {
    return memberService.getAllMembers();
  }
  // 회원 등록
  @PostMapping // Post 방식으로 들어온 요청 처리
  public ResponseEntity<String> create(@RequestBody MemberVO member) { // 요청 값으로 들어온 JSON을 MemberVO 객체로 자동 변환
    memberService.insertMember(member);
    return ResponseEntity.ok("회원 등록 완료");
  }
  // 회원 삭제
  @DeleteMapping("/{id}") // /api/members/3처럼 뒤에 뭐를 같이 보낸 요청 처리
  public ResponseEntity<Void> delete(@PathVariable String id) { // 경로에 지정된 변수를 id로 받음
    memberService.deleteMember(id);
  return ResponseEntity.noContent().build();
  }
}

 

MyBatis

MyBatis를 알아보기 전에 먼저 ORM에 대해 정리하고자 한다.

 

ORM

ORM은 Object Relational Mapping Framework의 약자로 객체 관계 맵핑 프레임워크이다.

객체 지향 프로그래밍 언어의 클래스와 관계형 데이터베이스의 테이블을 자동으로 연결(매핑)해주는 기술로, SQL 쿼리를 직접 작성하는 대신 코드 수준에서 DB 데이터를 조작하여 생산성을 높이고, 데이터베이스 종속성을 줄여 유지보수를 용이하게 한다.

주로 Mybatis, iBatis, JPA, Hibernate가 많이 사용된다.

(MyBatis는 2010년경 iBatis가 이름이 바뀐건데 아직도 iBatis를 쓰는 경우가 빈번하다.)

 

MyBatis 특징

  • SQL 실행 결과를 자바 빈즈 또는 Map 객체에 매핑해주는 Persistence 솔루션으로 관리한다. → SQL을 소스 코드가 아닌 XML로 분리
  • SQL문과 프로그래밍 코드를 분리
  • 데이터 소스 기능과 트랜잭션 처리 기능을 제공

 

실행 흐름

SQL문을 미리 xml 파일에 작성해 놓음 → 애플리케이션에서 DB 연동 시 해당 SQL문에서 사용될 데이터를 지원하는 해당 매개변수에 저장한 후 SQL문에 전달 → 전달된 매개변수와 SQL문을 결합해 SQL문을 DBMS로 전송하여 실행 → 그 결과를 애플리케이션에서 제공하는 자료형으로 반환.

 

MyBatis 연동

  1. 우선 pom.xml에 MyBatis Dependency를 추가해 주어야 한다.
  2. 그리고 jdbc.properties를 추가해 DB 연결에 필요한 정보를 저장한다.
  3. action-mybatis.xml을 추가해 필요한 빈을 설정한다.
  4. web.xml에 3번에서 추가한 xml을 파일을 읽고 설정해달라고 수정해줘야 한다.
  5. mapper 파일을 생성하고 관련 SQL문을 설정한다. (member.xml: 회원정보 관련 SQL문이 있음)

'Spring' 카테고리의 다른 글

[TIL-260324] 스프링 프레임워크 기초: Session, Interceptor, 로그인/로그아웃 기능  (0) 2026.03.24
[TIL-260320] 스프링 프레임워크 기초: Spring WebMVC 실습, bean config 설정 분리  (0) 2026.03.20
[TIL-260316] 스프링 프레임워크 기초: Spring 개념과 개발 환경 구성  (0) 2026.03.17
'Spring' 카테고리의 다른 글
  • [TIL-260324] 스프링 프레임워크 기초: Session, Interceptor, 로그인/로그아웃 기능
  • [TIL-260320] 스프링 프레임워크 기초: Spring WebMVC 실습, bean config 설정 분리
  • [TIL-260316] 스프링 프레임워크 기초: Spring 개념과 개발 환경 구성
hee-on
hee-on
작은 기록을 모아 꾸준히 성장해 나가는 개발 기록 공간입니다💻
  • hee-on
    희온의 dev log
    hee-on
  • 전체
    오늘
    어제
    • 전체 글 (46)
      • About (2)
      • Java (15)
      • Spring (4)
      • Spring Boot (2)
      • Front-end (6)
      • 알고리즘 (6)
        • Do it 알고리즘 코딩테스트 (자바편) (4)
      • DB (7)
      • Git (1)
      • 개발 지식 (2)
      • 일상 || 잡담 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    백엔드
    SQL
    db
    SpringBoot
    til
    취준
    알고리즘
    Servlet
    MVC
    개발자
    Java
    소개
    코테
    Spring
    백준
    안티그래비티
    깃허브 코파일럿
    react
    JSP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hee-on
[TIL-260325] 스프링 프레임워크 기초: Ajax Response, RESTful 컨트롤러, MyBatis
상단으로

티스토리툴바