<!-- ================================
[예시] input.jsp : 폼 화면
- num1, num2를 입력받아 /calcResult.jsp 로 전송한다
- method="post" 이지만, 핵심은 "파라미터 이름(name)" 이다
================================ -->
<form action="calcResult.jsp" method="post">
<input type="number" name="num1" />
<input type="number" name="num2" />
<button type="submit">전송</button>
</form>
<!-- ================================
[예시] calcResult.jsp : 결과 화면
- ${param.num1}, ${param.num2} 로 요청 파라미터를 꺼낸다
================================ -->
<p>num1 = ${param.num1}</p>
<p>num2 = ${param.num2}</p>
// ================================
// [EL의 내부 의미] 위 JSP EL은 거의 아래와 같다
// ================================
String num1 = request.getParameter("num1");
String num2 = request.getParameter("num2");
예를 들어 폼에서 입력받은 값을 결과 화면에 다시 보여주거나, 서버에서 계산한 결과를 출력하는 상황이다.
과거에는 JSP 안에서 자바 코드를 직접 써서 출력했다.
하지만 JSP 안에 자바 코드가 섞이기 시작하면 코드가 지저분해지고 유지보수가 어려워진다.
그래서 JSP에는 “출력 전용 표현”으로 EL(Expression Language)이 들어왔다.
EL은 `${ }` 형태로 값을 출력하는 방식이다.
EL의 역할은 단순하다: “값 출력”이다
EL의 핵심은 이것이다.
- JSP에서 값을 출력하고 싶을 때 `${...}`를 쓴다
- 복잡한 자바 코드 없이 화면 템플릿처럼 작성할 수 있다
즉 EL은 System.out.println()처럼 출력이 목적이다.
(제어문/반복문은 EL만으로 한계가 있어서 JSTL이 붙는다)
param은 “요청 파라미터를 읽는 EL 기본 객체”이다
폼에서 전송된 값이나 쿼리 스트링으로 전달된 값은 “요청 파라미터”로 들어온다.
서블릿에서는 보통 이렇게 읽는다.
- request.getParameter("num1")
JSP에서는 이걸 EL로 더 쉽게 쓰도록 param이라는 기본 객체(implicit object)를 제공한다.
- ${param.num1}
- ${param.num2}
이 의미는 사실상 다음과 같다.
- request.getParameter("num1")
- request.getParameter("num2")
즉 param은 “JSP에서 request.getParameter를 쉽게 쓰라고 만들어진 통로”이다.
중요한 포인트: GET이든 POST든 param으로 읽힌다
많이 헷갈리는 부분이 여기다.
param은 GET 쿼리 스트링이든, POST form 데이터든
둘 다 “요청 파라미터”로 취급해서 읽는다.
예를 들어 아래 둘은 다르게 보이지만,
- GET: `/calcResult.jsp?num1=10&num2=20`
- POST: `<form method="post">`로 `num1/num2` 전송
JSP에서는 둘 다 동일하게 ${param.num1}, ${param.num2}로 읽힌다.
즉, JSP 입장에서는 “요청에 파라미터가 들어왔냐”만 중요하고
그게 GET이었는지 POST였는지는 자동으로 구분해주지 않는다.
이게 나중에 “JSP 단독 사용의 한계(MVC로 분리해야 하는 이유)”로 이어진다.
param은 “변수”가 아니라 “이미 들어온 요청값”이다
param을 보면 “JSP에서 새로 만든 값인가?”라고 오해하기 쉬운데, 아니다.
param은 JSP가 만든 게 아니라,
브라우저가 서버로 보낸 요청(request) 안에 이미 들어있는 값들을
EL에서 꺼내기 쉽게 노출한 것이다.
정리하면 이렇게 생각하면 된다.
- <input name="num1"> 로 전송되면
- 서버의 request에 "num1" -> "10" 같은 형태로 들어오고
- JSP에서는 ${param.num1}로 그 값을 꺼내는 것이다
핵심 정리
- `EL(${ })`은 JSP에서 값을 출력하기 위한 표현식이다
- param은 요청 파라미터를 읽기 위한 EL 기본 객체이다
- `${param.x}`는 사실상 `request.getParameter("x")`와 같은 의미이다
- GET/POST 모두 요청 파라미터로 취급되기 때문에 JSP는 둘을 자동으로 막아주지 않는다
'Web > Web Basics' 카테고리의 다른 글
| [서블릿과 JSP] 7. JSTL은 왜 필요하고, <c:forEach>는 무엇인가 (0) | 2026.03.29 |
|---|---|
| [서블릿과 JSP] 6. 서블릿이 만든 데이터를 JSP가 읽는 방식 (0) | 2026.03.29 |
| [서블릿과 JSP] 4. JSP는 왜 필요한가 (0) | 2026.03.29 |
| [서블릿과 JSP] 3. HttpServletRequest/HttpServletResponse (0) | 2026.03.29 |
| [서블릿과 JSP] 2. 서블릿 라이프사이클 (0) | 2026.03.29 |