[JSP] JSP?

2019. 2. 22. 18:28JAVA Back-End

JSP 등장 배경


* 마이크로소프트에서 ASP(Active Server Page)라는 쉽게 웹을 개발할 수 있는 스크립트(script) 엔진을 발표함 (1998년)


* 1997년에 발표된 서블릿은 ASP에 비하여 상대적으로 개발 방식이 불편함


* ASP에 대항하기 위하여 1999년 썬마이크로시스템즈에서 JSP를 발표


* JSP는 실제로 서블릿 기술을 사용

JSP(Java Server Pages)란?

JSP는 HTML내에 JAVA 코드를 삽입해서 웹 서버에서 동적으로 생성한 후 웹 브라우저에 돌려주는 언어입니다(Server-Side Language) 즉, JAVA를 기반으로하는 서버 사이드 스크립트 언어입니다.

  * 서버 사이드 스크립트 : 스크립트는 컴파일과 달리 실시간의 해석되는 특징이다. 서버의 특정 기능 호출 시 서버 내에서 동작되는 언어들   ex) PHP, ASP, Node.js , JSP 등등


JSP파일은(.jsp) HTML ,CSS, img같은 정적 파일과 마찬가지로 WebContent에 만들어 사용합니다.


JSP(Java Server Page)는 Servlet과 기능적인 부분은 똑같다고 볼 수 있습니다. 하는 일은 같지만 역할의 차이가 있습니다.

JAVA 서버는 JSP코드를 컴파일해서 Servlet소스 코드로 변환합니다. 네 서블릿으로 컴파일되어 작동합니다. 그럼 왜 JSP를 사용합니까?!



앞서 HTML내에 JAVA 코드를 삽입한다고 했습니다. 

기존에는 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print("<h1>Hello servlet! 10까지 출력</h1>");
        
        for(int i=0; i<10; i++) {
            out.println(i+"<br>");
        }
        out.close();
    }

out.print()로 HTML코드를 삽입했는데, HTML코드가 엄청나게 많아지면... 감당하실 수 있겠습니까?? HTML태그 한 줄 추가할 때마다 print()를 작성해야하는데...


JSP를 사용하면 HTML코드를 그대로 사용하고 표현식(<% %>)안에 자바 코드를 그대로 넣어서 사용할 수 있습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!--JSP를 실행하는 WAS에게 보내는 지시문-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

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

1~10까지의 합: <%=total %>
<!-- 서블릿으로 바뀌면 out.print(total)이 된다 -->

</body>
</html>


결론은, JSP와 Servlet을 적절히 잘 사용하는 게 좋습니다. HTML이 많이 추가되는 페이지(View / Client)에서는 JSP를, 반대로 HTML의 출력이 적은 곳(Controller / BackEnd)에서 적절히 사용하면 좋습니다.


[참고] 

 https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94%EC%84%9C%EB%B2%84_%ED%8E%98%EC%9D%B4%EC%A7%80

[ edwith - 웹프로그래밍 부스트코스 ] 를 개인적으로 공부하고 정리한 공간입니다. 잘못된 부분은 피드백 주시면 감사하겠습니다

'JAVA Back-End' 카테고리의 다른 글

[JSP] JSP 내장객체  (0) 2019.02.25
[JSP] JSP문법  (0) 2019.02.25
[JSP] JSP 라이프 싸이클  (0) 2019.02.25
[JSP/Servlet] Request / Response 객체  (0) 2019.01.30
[JSP/Servlet] Servlet 생명주기  (0) 2019.01.28