728x90

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


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


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


저번에 스크립트릿을 배웠다. 이번에는 익스프레션을 배워보자. 한국말로는 표현식이다.

이때까지 우리가 스크립트릿을 사용하는 도중에  특정값을 출력해야했다면 out객체를 사용하였다.

그러나 사실 스크립트릿에서 out객체를 사용하는것은 비권장 사항이다.

그 이유는 매우 간단한데 JSP에서 자바코드는 최대한 지양한다는 원칙에 의해서이다.

자바 코드를 쑤셔넣는게 가능은한데 자바 코드를 최대한 배재할 수록 좋은 코딩법이다.

이게 이해가 안된다면 일단 그냥 그렇구나 하가 사용하면된다.

큰 프로젝트에 다가갈수록 뷰(View)페이지에 로직이 들어가는것은 유지보수에 큰 방해가 된다.


따라서 스크립트릿을 최대한 간소하게 만드는게 중요하다고 할 수 있다.

전의 코드가 혹시 기억이 나는가? 다시 한번 가져와 보겠다.


<!-- index.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
out.println("<ul>");
for (int i = 1; i <= 10; i++) {
out.println("<li>" + i + "번째</li>");
}
out.println("</ul>");
%>
</body>
</html>


이코드에서 out객체 사용을 배제하고 싶다. 어짜피 그러기 위해서 JSP가 존재하는 것이니까.

그러나 배제가 되는가? 사실 되지 않는다. 왜냐하면 out객체안에 존재하는 i 때문이다.

i를 출력하기 위해서는 반드시 out객체가 필요할 것이다.

만약 위에서 최대한 out을 배제한다면 아래같은 코드가 될것이다.


<!-- index.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<% for (int i = 1; i <= 10; i++) { %>
<li><% out.println(i); %>번째</li>
<% } %>
</ul>
</body>
</html>


위 코드에서 새로운 사실을 알 수 있는데 사실 중괄호는 스크립트릿에서 쪼개져도 상관이 없다.

새로 스크립트릿을 열어서 닫아주기만 하면 되기 때문이다.

물론 가독성에서 많이 않좋다. 그래서 결국 뒤에서는 액션태그를 사용하게 되지만 지금은 아니다.

이 코드에서 out객체는 거의 사라지게 되었지만 아직도 out객체가 남아있다.

왜냐하면 변수의 출력은 어떻게 할 방법이 없기 때문이다.

그럼 이러한 변수를 바로 JSP에 뿌려주는 방법이 없을까? 그게 Expression이다.


<%= 변수%>


이 호출은 바로 변수를 출력할 수 있다.

그러면 위의 코드에서 out객체를 완전히 배제하는게 가능해질까?

가능해진다. 바로 expression덕분이다.


<!-- receive.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<% for (int i = 1; i <= 10; i++) { %>
<li><%=i%>번째</li>
<% } %>
</ul>
</body>
</html>


이제 변수역시 깔끔하게표시할 수 있게 되었다.

그렇다 사실 jsp를 쓰면 out객체는 아예 사용할 필요가 없다.

따라서 jsp폴더에서 out객체는 사용하지 않는다는것을 알아둘 필요가 있다.

더 정확히 말하면 servlet에서도 out객체의 사용은 권장되지 않는다.

그러나 이 부분은 지금 이야기하는 부분과는 전혀 다른이야기이므로 더 이상 언급하지는 않겠다.

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

[JSP-07]Directive(지시어)  (0) 2017.10.15
[JSp-06]Declaration(선언문)  (0) 2017.10.15
[JSP-04]Screptlet(스크립트릿)  (0) 2017.10.11
[JSP-03]JSP  (0) 2017.10.11
[JSP-02]form과 get, post  (0) 2017.10.10

+ Recent posts