본문 바로가기
실전툴팁

레거시 환경 적응법 + 기본 기능 구현 가이드

by AI읽어주는남자 2025. 12. 15.
반응형

스프링부트·리액트가 익숙한 개발자가
레거시 스프링 프레임워크 + JSP + MyBatis + jQuery + Oracle 프로젝트를 처음 받으면
대부분 같은 지점에서 멘탈이 흔들린다.

 

이 글은 레거시 환경에 빠르게 적응하는 방법
실무에서 반드시 구현하는 핵심 기능들을 한 번에 정리한 글이다.


1️⃣ 레거시 스프링 환경, 왜 어려운가?

대부분 이런 스택이다

  • Spring Framework (Boot 아님)
  • MyBatis
  • Tomcat
  • Oracle
  • JSP + JSTL
  • JavaScript + jQuery + Ajax
  • 데이터 타입: JSON

어려운 이유 정리

  • 설정 파일이 많음 (xml 지옥)
  • 화면(JSP)과 로직이 강하게 엮여 있음
  • 프론트/백엔드 경계가 애매함
  • 최신 문법이 거의 없음

👉 실력 문제가 아니라 시대 차이 문제다.


2️⃣ 레거시 환경 적응의 핵심 사고방식

❌ 하지 말아야 할 생각

  • "왜 이걸 이렇게 짜지?"
  • "부트가 훨씬 좋은데"

✅ 가져야 할 생각

"이 구조에서 내가 최소한으로 이해해야 할 건 뭐지?"


3️⃣ 레거시 스프링 프로젝트 구조 한 번에 보기

전형적인 구조

controller/
service/
mapper/
vo or dto/

WEB-INF/
 └─ views/
     └─ *.jsp

resources/
 └─ mybatis/
     └─ *.xml

데이터 흐름

JSP
 ↓ (Ajax / Form)
Controller
 ↓
Service
 ↓
MyBatis Mapper Interface
 ↓
Mapper XML
 ↓
Oracle DB

이 흐름을 그림처럼 외우는 게 1단계다.


4️⃣ JSP + jQuery + Ajax + JSON 적응법

JSP의 역할

  • 화면 렌더링
  • JSTL로 서버 데이터 출력
<c:forEach var="user" items="userList">
  ${user.name}
</c:forEach>

jQuery + Ajax 역할

  • 화면 이벤트 처리
  • 비동기 서버 통신
$.ajax({
  url: '/users/list.do',
  type: 'GET',
  dataType: 'json',
  success: function(res) {
    console.log(res);
  }
});

👉 JSP = 초기 화면
👉 Ajax = 동작


5️⃣ 기능 구현 ① 리스트 + 페이징 처리

1) Controller

@GetMapping("/users/list.do")
@ResponseBody
public Map<String, Object> userList(int page) {
    return userService.getUserList(page);
}

2) Service

  • offset 계산
  • total count 조회

3) MyBatis (Oracle)

SELECT * FROM (
  SELECT ROWNUM rn, u.* FROM users u
) WHERE rn BETWEEN #{start} AND #{end}

4) 화면

  • Ajax로 리스트 갱신
  • 페이지 버튼 클릭 시 재요청

👉 레거시 페이징은 구조 이해가 핵심이다.


6️⃣ 기능 구현 ② 회원가입

흐름

JSP 입력폼
 → Ajax POST
 → Controller
 → Service (검증)
 → MyBatis
 → Oracle

Ajax

$.post('/users/join.do', $('#joinForm').serialize());

Controller

@PostMapping("/users/join.do")
@ResponseBody
public String join(UserVO user) {
    userService.join(user);
    return "OK";
}

7️⃣ 기능 구현 ③ 로그인

핵심 포인트

  • Session 사용
  • Ajax 로그인 후 결과 분기
session.setAttribute("loginUser", user);
if(res === 'OK') location.href = '/main.do';

👉 레거시에서는 JWT 거의 안 씀


8️⃣ 기능 구현 ④ 기본 CRUD 패턴

공통 공식

화면
 → Controller
 → Service
 → Mapper
 → Mapper.xml

예: 삭제

@PostMapping("/users/delete.do")
@ResponseBody
public int delete(int userId) {
    return userService.delete(userId);
}

👉 CRUD는 복붙이 아니라 패턴 암기 대상이다.


9️⃣ 레거시 환경에서 살아남는 팁

  • xml은 "이해"보다 "복사"가 빠르다
  • 처음엔 구조 따라 치기
  • 로그부터 찍어라
  • Oracle SQL 먼저 단독 실행

🔟 마무리

레거시 환경은 낡았지만,
실무 감각을 키우기엔 최고의 교재다.

이 스택을 버틸 수 있으면
최신 기술은 오히려 더 쉬워진다.


다음 글 예고

  • 레거시 페이징 완전 분해
  • MyBatis XML 빠르게 읽는 법
  • JSP에서 Ajax 디버깅 방법
반응형