jsp (22)

💻 Programming/JSP

[JSP] JSP란?

JSP란 무엇인가 ?

JSP는 Java Server Pages의 약자입니다. 자바 서버 페이지는 웹애플리케이션을 만들 때 HTML페이지 내에 자바 코드를 삽입하여 동적인 웹페이지를 구현할 수 있도록 도와주는 기술입니다. 보통 <% 자바코드 %> 이런식으로 사용이 되죠.

 

왜 JSP를 사용하는가 ?

자바 서버 페이지는 종종 예전의 CGI( Common Gateway Interface )처럼 사용되지만 CGI와 비교해서 좀 더 나은 점이 있습니다.

첫째, 성능이 굉장히 좋습니다. CGI파일처럼 별도의 파일이 필요한 것이 아니라 HTML페이지 내에 삽입되어 사용될 수 있기 때문입니다.

둘째, CGI / Perl 의 경우 페이지 요청시마다 서버쪽에서 interpreter와 대상 스크립트를 로드해야하지만 JSP는 처리되기전에 항상 컴파일이 됩니다.

셋째, JSP는 자바 서블릿 API위에 만들어진 것입니다. 따라서 서블릿처럼 JSP 또한 JDBC, JNDI, EJB, JAXP 등등 모든 엔터프라이즈 자바 API들을 사용할 수 있습니다.

넷째, JSP는 자바 서블릿 템플릿 엔진이 지원하는 비즈니스 로직을 처리하는 서블릿과 결합되서 함께 사용될 수 있습니다.


JSP 처리 과정

아래 과정은 웹서버가 JSP를 이용해서 어떻게 웹페이지를 생성하는지를 설명하고 있습니다.

1. 사용자가 웹페이지에서 요청을 합니다.

2. 웹서버가 요청을 받고 JSP페이지를 위한 요청이면 JSP 엔진으로 요청을 포워딩합니다. 이것은 URL이나 JSP페이지를 통해서 이루어집니다.

3. 요청을 받은 JSP 엔진이 JSP페이지를 로드하고 서블릿 컨텐트로 변환합니다. 이 변환은 매우 간단합니다. 템플릿 텍스트는 모두 println()문으로 변환되고 모든 JSP 요소들은 자바 코드로 변환되는 거죠.

4. JSP 엔진이 서블릿을 컴파일하여 실행가능한 클래스 파일로 변환시킵니다. 그리고 2번에서 받았던 요청을 서블릿 엔진으로 넘깁니다.

5. 요청을 받은 서블릿 엔진( 웹서버의 일부분 )은 클래스 파일을 읽어서 실행시킵니다. 그리고 실행되는 동안 서블릿 엔진은 HTML형태의 output을 웹서버( Http Response )로 반환합니다.

6. 웹서버가 Http Response를 웹브라우저로 보냅니다.

7. 브라우저는 HTML Response에 있는 동적으로 생성된 HTML 페이지를 해석하고 화면에 뿌려줍니다.



위 과정은 아래 그림을 보시면 이해가 더 쉬울겁니다.

 

 

자, 어느정도 이해가 되시나요?

다음 시간에는 JSP실습을 시작해보도록 하겠습니다.

JSP 환경구축은 단순히 웹서버를 설치하고, 자바를 설치하는 것 외에는 특별한 것이 없으므로 생략하겠습니다. 

 

 

 

 

 

 

Reference : http://www.tutorialspoint.com/jsp/jsp_quick_guide.htm

💻 Programming/웹프로그래밍

AJAX란? - 데이터베이스

AJAX 데이터베이스 예제

아래 예제는 AJAX를 이용해서 데이터베이스에서 읽어온 자료를 처리하는 것을 보여줍니다.

예제

form 태그가 먹히지 않는 관계로 예제는 실습하기 버튼을 눌러서 W3Schools로 가셔서 해보시기 바랍니다.

실습하기 »

예제 설명 - showCustomer() 함수

사용자가 드랍다운 리스트에서 고객을 선택하면, "showCustomer()" 함수가 호출되어 실행됩니다. 이 함수는 "onchange" 이벤트가 발생하면 호출되도록 되어있습니다.

showCustomer 함수 소스 코드

function showCustomer(str) {
  var xhttp; 
  if (str == "") {
    document.getElementById("txtHint").innerHTML = "";
    return;
  }
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("txtHint").innerHTML = xhttp.responseText;
    }
  };
  xhttp.open("GET""getcustomer.asp?q="+str, true);
  xhttp.send();
}

showCustomer() 함수는 아래와 같은 작업을 합니다.

  • customer가 선택이 되었는지 검사합니다.
  • XMLHttpRequest 객체를 생성합니다.
  • 서버로부터 응답을 받고나서 실행될 함수를 정의합니다.
  • 서버에 있는 파일로 요청을 보냅니다.
  • 요청을 보낼 때 파라미터 "q" 와 드랍다운 리스트에서 읽어온 str을 URL에 추가했습니다.

 AJAX Server Page

위 예제에서 사용된 서버페이지는 "getcustomer.asp"입니다.


서버 페이지 파일은 PHP, JSP와 같은 다른 서버 언어로도 구현할 수 있습니다.


PHP로 구현한 동일한 기능의 소스 보기


 "getcustomer.asp" 는 데이터베이스의 정보를 조회하고 읽어온 정보를 HTML 테이블에 넣는 기능을 합니다.

<%
response.expires=-1
sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="
sql=sql & "'" & request.querystring("q") & "'"

set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/datafolder/northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
rs.Open sql,conn

response.write("<table>")
do until rs.EOF
  for each x in rs.Fields
    response.write("<tr><td><b>" & x.name & "</b></td>")
    response.write("<td>" & x.value & "</td></tr>")
  next
  rs.MoveNext
loop
response.write("</table>")
%>


자, 큰 그림이 그려지나요?

정리를 한번 해드리자면,

1. 드랍다운 리스트에서 항목을 선택한다.
2. 항목이 선택되면 onchange 이벤트에의해 showCustomer() 함수를 호출하여 ajax 요청이 서버로 전송되고
3. 서버에서 getcustomer.asp파일이 실행이 되는데 이 파일은 DB를 조회해서 읽어온 정보를 html형태의 테이블을 만들어서 응답으로 보냅니다.
4. 그러면 이 응답으로 받은 html형식의 정보를 드랍다운 리스트 아래쪽에 뿌려줍니다.

이런식으로 ajax를 이용한 요청이 처리가 되는 겁니다.

별로 어렵지 않죠? ^-^ 

여기서 AJAX 포스팅은 마치도록 하겠습니다.

참고로 AJAX포스팅에 사용된 자료는 W3Schools에 있는 자료를 번역해놓은 수준입니다.

궁금한게 있으시면 댓글 달아주시면 답글 달아드리도록 하겠습니다.