728x90

이 강의는 JSP를 다루는 방법에 대해서 강의를 하지만 웹서버(tomcat이나 glassfish 등)를 어떻게 다루는지나 IDE(Eclipse,IntelliJ 등)를 어떻게 사용하는지는 거의 다루지 않는다. 이 JSP강의 시리즈들은 JSP를 어떻게 다루는지에 대한 서술이 주로 이루어져있다. 그런 자료들이 필자의 블로그에 Usage-Java-JSP카테고리에 소개되어있으므로 이를 참고해주면 되겠다. 중간 중간에 꼭 필요한 부분에서 링크를 걸어서 진행하니 큰 걱정은 할 필요는 없다. 그러니 강의를 보다가 정보가 나오지 않는다면 반드시 위 카테고리를 참고하자. 그래도 모르는게 있으면 쪽지나 답글로 질문하라.


또한 JSP는 웹을 다루는 기술이다보니 html,css,js등이 사용이 되는 경우가 있다. 이러한 부분을 필자가 일일히 가르키면서 진행할 수 없다. html,css의 경우 마크업언어이지만 마크업언어라고 단순히 치부하기에는 너무나도 기능이 많고 속성이 많다. 또한 js는 그냥 하나의 프로그래밍 언어라서 이걸 가르치려면 아예 Java수준으로 가르쳐야된다는 문제점이 있다. 필자 블로그에서 이들에 대한 포스팅역시 제공하고 있다. 찾아서보면 된다.


그러나 만약 찾는게 없다면 구글링에 의존하라.


누누히 말했지만 JSP는 결국 Servlet으로 변환된다. JSP가 있는 이유는 자바코드로 View를 짜기보단

html로 View를 짜는게 프로그래밍적으로 더 직관적이고 도움이 되기 때문이다.


근데 이 말은 JSP가 Servlet이 된다는 말은 근본적으로 JSP코드는 클래스로 바뀐다는 이야기이다.

JSP의 모든 소스들은 결격 out.println같은 형태로 저장된다는 이야기인데 만약 클래스화된다면

JSP소스들은 클래스의 어느부분이 되는것일까? 결론 부터 이야기하면 jsp소스는 통째로 하나의 메소드가된다.

즉 여러분이 쓰는 부분은 Servlet으로 따지면 메소드 하나를 쓰고 있다는 이야기인데

그러면 내가 JSP내에서 클래스나 속성을 선언해주려면 어떻게 해야할까?

이런 부분은 JSP소스내의 스크립트릿으로 선언할 수 없다.

왜냐하하면 JSP의 소스는 결국 Servlet의 일개 메소드로 전환되기 때문이다.


그러나 여러분은 Servlet을 쓸 때 메소드나 속성을 사용한 경험이 있을 것이다.

당연히 JSP에서도 사용할 수 있어야한다.

즉 JSP에서 클래스처럼 속성과 메소드를사용하기 위한 문법이 바로 선언문인 데클러레이션이다.


<%! 자바코드%>


이제 이 데클러레이션에 여러분이 쓰고싶은걸 클래스형식으로 사용하면된다.

아래 코드는 예제코드이다.


<!-- receive.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%!
public static final float PI = 3.14f;

public float getArea(int rad) {
return rad * rad * PI;
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<% for (int i = 1; i <= 10; i++) { %>
<li><%=i%>번째 넓이 : <%=getArea(i)%>
</li>
<% } %>
</ul>
</body>
</html>


해당 코드에는 데클러레이션을 이용해서 해당 JSP에서의 필드와 메소드를 선언하고

아래에서 그것을 호출한 예제이다.



사실 근데 데클러레이션은 JSP에서 크게 사용되지 않는게 요즘 트렌드이다.

필자가 계속 말해왔지만 JSP의 역활이 View단으로 축소되고 있고 넘겨준 값을 출력해주는게 일반적이다.

즉 뭔가를 해야하는 코드(비즈니스로직)가  View단에 존재해서는 안된다는 것이다.

'Programming > Java-JSP' 카테고리의 다른 글

[JSP-08]주석  (0) 2017.10.15
[JSP-07]Directive(지시어)  (0) 2017.10.15
[JSP-05]Expression(표현식)  (0) 2017.10.15
[JSP-04]Screptlet(스크립트릿)  (0) 2017.10.11
[JSP-03]JSP  (0) 2017.10.11

+ Recent posts