
x 뜨면 눌러서 임폴트를 해주고 이 파일에서 오른쪽 버튼 -> 소스 -> 오버라이드 메뉴를 눌러준다


/여부
/가 먼저 시작되면 절대경로
/가 중간에 있으면 폴더구분
| 경로 | 종류 | 의미 | 사용 여부 |
|---|---|---|---|
"chapter02/declaration02.jsp" |
✅ 상대경로 | webapp/chapter02/...에서 찾음 |
⭕ 추천 |
"/chapter02/declaration02.jsp" |
❌ 절대경로 | 프로젝트 루트(/) 기준 → 찾기 어려움 |
❗ 실습에선 피하기 |
"chapter02/abc/declaration02.jsp" |
✅ 상대경로 | 중간 /는 폴더 구분일 뿐 |
⭕ 괜찮음 |
declaration02.java 파일을 기준
✅ 예제 2-2 기준 JSP 실습 정리표
| Step | 작업파일 | Task | 예시 코드 / 설명 | ⚠️ 헷갈리면 안 되는 포인트 |
|---|---|---|---|---|
| 1 | index.html |
요청 작성 | <a href="/JSPBook/exam2_2">2-2 예제 이동</a> |
🔥 "exam2_2"는 @WebServlet("/exam2_2")의 경로와 일치해야 함. 자바 파일명 아님 |
| 2-1 | declaration02.java |
클래스 생성 | public class declaration02 {} |
클래스명은 파일명과 일치하게 설정 (declaration02) |
| 2-2 | declaration02.java |
상속 | public class declaration02 extends HttpServlet {} |
HttpServlet 임포트 필요. 직접 해야함 (javax.servlet.http.*) |
| 2-3 | declaration02.java |
오버라이딩 | doGet() 또는 doPost() 자동 생성 |
🔥 오버라이드 후 아래 코드 바로 삽입해야 함 |
| ⬇️ | declaration02.java |
오버라이드 후 코드 작성 | System.out.println("2_2 예제 연결되었습니다."); |
경로 앞에 슬래시(/)를 붙이면 톰캣 기준 절대경로, 안 붙이면 상대경로(webapp 기준)로 처리됨. 중간의 /는 단순히 폴더 경로 구분자일 뿐 절대/상대 여부에 영향을 주지 않음 |
| 2-4 | declaration02.java |
연결 작업 | @WebServlet("/exam2_2") |
🔥 index.html의 <a href="...">와 정확히 일치해야 함 |
| 2-5 | declaration02.java |
연결 확인용 출력 | System.out.println(...) |
🔥 브라우저 화면이 아니라 콘솔에서 확인됨 |
| 3 | declaration02.java |
뷰 전송 | 이미 위에서 RequestDispatcher로 declaration02.jsp로 전송함 |
JSP 파일이 사용자에게 보여지는 부분 |
| 4 | declaration02.jsp |
실습 JSP 작성 | 위치: src/main/webapp/chapter02/declaration02.jsp |
🔥 파일명은 서블릿과 같아도 되고 달라도 됨. 이 예제에선 같음 |
✅ 흐름 요약 (예제 2-2)
index.html→/exam2_2요청 발생declaration02.java→@WebServlet("/exam2_2")으로 요청 처리doGet()→ 연결 확인 출력 + JSP로 포워딩declaration02.jsp→ 브라우저에 최종 화면 표시
🔥 정리
| 헷갈릴 수 있는 지점 | 설명 |
|---|---|
@WebServlet("/...") 값이 자바 파일명이 아님 |
이건 요청 URL이야. index.html의 링크랑 매칭돼야 작동 |
getRequestDispatcher()에 / 붙이면 안 됨 |
/chapter02/declaration02.jsp ❌ → chapter02/declaration02.jsp ✅ |
System.out.println()은 콘솔 출력 |
브라우저에 보이는 건 아님. 연결 확인용 로그 |
| 자바 파일명과 JSP 파일명은 같아도 되고 달라도 됨 |
requestDispatcher ds = req.getRequestDispatcher ( "챕터02/declaration02.jsp");
"객체를 출력할 때 두 가지 방식" ―
① 기본 주소 출력 방식
② toString() 방식
✅ 객체 출력의 두 가지 방식
| 방식 | 설명 | 출력 예시 | 동작 원리 |
|---|---|---|---|
| 1. 기본 출력 (주소처럼 보임) | toString()을 오버라이딩하지 않았을 때 |
클래스명@해시코드예: Person@3f99bd52 |
Object 클래스의 기본 toString()이 호출됨 |
2. toString() |
객체 내부에서 toString()을 재정의했을 때 |
예: 이름: 홍길동 |
println()이 내부적으로 toString() 호출 → 오버라이딩된 내용 출력됨 |
🔹 1. 기본 방식 (주소처럼 출력됨)
public class Person {
String name = "홍길동";
}
Person p = new Person();
System.out.println(p);
출력:
Person@3f99bd52
🔸 이유: Object의 기본 toString()이 실행됨 →클래스명@16진수 해시코드
🔹 2. toString() 오버라이딩 방식
public class Person {
String name = "홍길동";
@Override
public String toString() {
return "이름: " + name;
}
}
Person p = new Person();
System.out.println(p);
출력:
이름: 홍길동
🔸 이유: println()이 내부적으로 p.toString() 호출함 →
재정의한 문자열이 출력됨
요약
객체를 출력할 때,
toString()을 오버라이딩하지 않으면 클래스명@해시코드가 출력된다.
오버라이딩하면 내가 정의한 문자열이 출력된다.
둘 다println()내부에서toString()을 호출해서 출력하는 구조다.
JSTL파일 넣는 곳. WEB-INF -> lib 폴더 안에 JSTL 파일을 넣는다.
'JSP' 카테고리의 다른 글
| HTML → Servlet → JSP (0) | 2025.05.23 |
|---|---|
| JSP에서 Enumeration 개념 (0) | 2025.05.23 |
| 147p 도서목록 표시하기 DAO DTO (0) | 2025.05.22 |
| JSP 주요 문법 기호 정리 (0) | 2025.05.21 |
| 00. 초기환경설정부터 (0) | 2025.05.20 |
