공통 기능(예: CRUD, 변환 메소드 등)을 인터페이스화하여 유지보수성과 확장성을 높이는 설계 방식
public interface CRUD_Interface<T> {
// 추가 기능
boolean post(T dto);
// 전체 조회
ArrayList<T> getAll();
// 단일 조회
T getOne(int No);
// 수정 기능
boolean update(T dto);
// 삭제 기능
boolean delete(T Dto);
}
💬 → 이를 상속받아 각 Repository나 Controller에서 구현
공통된 로직(예: DB 연결)을 SuperDao 클래스에 작성하고,
각 Dao(또는 Repository)가 이를 상속받아 코드 중복을 줄임
| 구분 | 설명 |
|---|---|
| 🔹 SuperDao | DB 연결 및 공통 기능을 제공 |
| 🔹 하위 Dao | SuperDao를 상속받아 기능 사용 |
| ⚙️ 구조 | Controller → Service → Dao(Repository) 순서 |
기능 구현 시 각각의 기능을 명확히 분리하여 유지보수성을 높인다.
Controller의 반환값은 상황에 따라 다르게 구성해야 한다.
| 구분 | 설명 |
|---|---|
| 🔸 기본 반환 | 단순 데이터 반환 |
| 🔸 DTO 기반 반환 | APIDTO를 활용해 데이터 + 메시지를 함께 반환 |
Controller → Service → Dao(Repository) 구조 확실히 기억하기
<jsp:include page="JSP 경로"></jsp:include>
const 쿼리스트링명 = new URLSearchParams(location.search).get('쿼리스트링명');
document.querySelector('') 사용 시 ., # 등 식별자 필수!
| 오류 유형 | 원인 / 해결 방법 |
|---|---|
| 🚫 Spring 서버 중복 실행 불가 | Port 중복 시 오류 발생 |
| 🔧 Port 강제 종료 방법 | cmd → netstat -ano → PID 확인 → taskkill /f /pid [PID] |
| 🌍 폴더 공유 구조 | resources 폴더와 webapp 폴더는 모든 AppStart가 공유 |
| 📁 JSP 인식 제한 | JSP는 webapp 폴더 내 자료만 인식 가능 |
| 🌀 브라우저 캐시 문제 | 변경 후 인식 안 될 경우 Ctrl + F5 강력 새로고침 |
| ❗ 예약어 사용 금지 | 변수/함수/클래스명에 미리 정의된 키워드 사용 불가 |
| 🧩 JS 오류 확인 | 콘솔(Console) 창에서 오류 확인 필수 |
@Autowired를 이용해 필요한 객체를 자동으로 주입받음| 방법 | 설명 |
|---|---|
| 💉 생성자 주입 (권장) | 가장 안전하고 명확한 방식 |
| ⚙️ 필드 주입 | 간단하지만 테스트가 어려움 |
final SampleService sampleService;
@Autowired
public MemberController(SampleService sampleService){
this.sampleService = sampleService;
}