본문 바로가기

Java

[JAVA] [JSP] JSP 간단 정리

기본 개념

JSP는, 결국 서블릿으로 바뀐다!!!!고 생각하면 된다.

(톰캣이 JSP를 서블릿으로 바꾼다)

HTML과 비슷하다고 해서 HTML처럼 동작하는게 아니다. 서블릿과 동작 방식이 같다!

 

따라서, JSP 파일을 작성할 때 종종 하면 좋은 생각은,  "이 코드가 서블릿으로 바뀐 상태는 무엇일까?"

를 생각해보면 코드 이해가 빨라진다.

 

 

기본 예제 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>sum10</title>
</head>
<body>

<% 
    int total = 0;
    for(int i = 1; i <= 10; i++){
        total = total + i;
    }
%>

1부터 10까지의 합 : <%=total %>

</body>
</html>

1. 선언식 : <%!  %>

  • JSP 페이지 내에서 필요한 멤버변수나 메서드가 필요할 때 선언
  • 서블릿으로 바뀌었을 때, service() 메서드로 들어가는 식이 아니라, 그 바깥 부분의 코드를 작성하고 싶을 때

 

2. 스크립트릿 : <%  %>

  • 일반적으로 가장 많이 사용되는 부분
  • 프로그래밍 코드를 적는 부분
  • 여기에 선언된 변수는, 지역변수
  • 즉, 화면에 출력할 내용(=응답 결과에 포함할 부분을 넣을 때 사용하는 부분)
  • 서블릿으로 바뀌면, service() 메서드로 바뀌는 부분

 

3. 표현식 : <%=  %>

  • 화면에 출력하고 싶은 변수(=응답 결과)를 넣는 곳이라고 생각하면 된다
  • 서블릿으로 바뀌면, out.println()이 된다고 생각하면 된다.

 

4. 주석

  • html, 자바, jsp 주석 전부 사용 가능

JSP의 실행순서

JSP 코드에 맞는 서블릿 객체가 있다면 -> 서블릿 라이프사이클 따라간다

JSP 코드에 맞는 서블릿 객체가 없다면 -> JSP엔진이 서블릿으로 바꾼 후 -> 서블릿 라이프사이클 따라간다

 

JSP 내장객체

  • JSP를 실행하면 서블릿 소스가 생성되고 실행된다.
  • JSP에 입력한 대부분의 코드는 생성되는 서블릿 소스의 _jspService() 메소드 안에 삽입되는 코드로 생성된다.
  • _jspService()에 삽입된 코드의 윗부분에 미리 선언된 객체들이 있는데, 해당 객체들은 jsp에서도 사용 가능하다.
  • response, request, application, session, out과 같은 변수를 내장객체라고 한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    StringBuffer url = request.getRequestURL();

    out.println("url : " + url.toString());
    out.println("<br>");
%>
</body>
</html>
  • 내장 객체를 활용하여, request나, out이라는 변수를 선언하지 않았는데도 바로 사용한 것을 볼 수 있다.