본문으로 바로가기

JSP 태그의 개념 이해


Servlet JAVA언어를 이용하여 문서를 작성하고, 출력객체를 이용하여 HTML코드를 삽입하였습니다.

---->주로 컨트롤러로 많이 사용


JSPServlet과 반대로 HTML코드에 jsp(JAVA코드)를 삽입하여 동적 문서를 만들 수 있습니다.

---->주로 view로 많이 사용


HTML코드안에 JAVA코드를 삽입하기 위해서는 태그를 이용해야 한다.


jsp 태그 종류


지시자  : <%@     %>  : 페이지 속성 ex) <%@ page import = "com.javalec.ex"%>

주석  : <%--  --%> html 주석은 소스보기하면 보이지만, jsp 주석은 보이지 않는다 왜냐하면 html에서 처리하기 때문이다. 

<참고> 

html은 소스 보기를 하면 주석처리한 부분이 나오지만

jsp는 WEB에서 실행되므로 웹 서버에서 처리되고 소스 보기를 하면 주석이 나오지 않는다.


선언  : <%!     %>  : 변수, 메소드 선언 ex) String str ="abc" 전역의 의미로 사용

표현식(Expression)  : <%=변수명 %>  : 결과값 출력, html파일로 반환되어 java code는 보이지 않는다.

스크립트릿(Scriptlet) : <% java code  %>  : JAVA 코드 , 가장많이 사용

액션태그    : <jsp:action>  </jsp:action> : 자바빈 연결






jsp 동작 원리


클라이언트가 웹브라우저로 helloWorld.jsp를 요청하게 되면 JSP컨테이너가 JSP파일을 Servlet파일(.java)로 변환합니다.

그리고 Servlet파일(.java)은 컴파일 된 후 클래스 파일(.class)로 변환되고, 요청한 클라이언트한테 html파일 형태로 응답 됩니다. 

        

       request

Client -------> JsP---------Servlet 파일이 있는지 검사 한다 있다면 

                                                                              .java 파일에서

                                                                              .class로 변환

                                                                             메모리에 올리고  run

두번째 요청에서는 java파일과 class로 변환하여 메모리에 올리는 것이 아니라 재활용하여 바로 run하여 실행하게 된다.



웹브라우저 요청 ----> JSP파일을 servlet(java파일)로 변환; Web서버에 의해서

helloWorld.jsp >> HelloWorld_jsp.java

JSP >> Servet



 ------>Servlet >> class 컴파일러에 의해서 변환

   helloWorld_jsp.java >> helloWorld_jsp.class

------->응답은 (html)형태로, 


먼저 클라이언트가 요청을 하게 되는데 서블릿이 없는지 있는지 먼저 판단을 합니다. 

없는경우 servlet.java, servlet.class파일을 만들어 객체를 생성하여 메모리에 올리고 응답(html)을 해준다. 


두번째 요청을 했을경우 이미 java와 class파일이 있기 때문에 다시 재활용해서 바로 응답을 해준다. 

즉, 빠른 응답을 할수 있다는 장점이 있다. 


<%@(지시자) page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%> 골뱅이는 지시자를 의미, import할때 page 지시자를 사용한다. 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>


<h1>HelloWorld~~~~~~~</h1>


</body>

</html>


소스보기를 하게 되면 웹서버에서 실행되므로jsp 코드를 삽입한 부분

<%@ page language="java" contentType="text/html; charset=EUC-KR"은 나오지 않게 된다. 



JSP 내부 객체 : 개발자가 클래스를  생성하지 않고도 바로 사용할 수 있는 객체


JSP에서 제공되는 내부객체는 JSP 컨테이너에 의해 servlet으로 변화 될 때 

자동으로 객체가 생성된다. (jsp---> servlet)



내부 객체 종류


입출력 객체 : request(클라이언트의 요청이 처리되는동안 유효)

서블릿 객체 : page(해당페이지가 클라이언트에 서비스를 제공하는 동안 유효)

세션 객체 : session(세션이 유지되는 동안 유효)

예외 객체 : exception

웹어플리케이션 : application이 실행되는 동안 유효