White Whale Studio

JSP & Servlet [4] JSP의 기초 2탄 본문

IT Engineering/JSP & Servlet

JSP & Servlet [4] JSP의 기초 2탄

glorymind 2011. 12. 2. 15:58
반응형


P.154  JSP 페이지의 내장 변수

JSP에서는 내장 변수라고 해서 선언하지 않고도 사용할 수 있는 변수가 있다.
이른바 내장변수 (implicit variable)  이다.
개념을 잡기가 조금 힘들지만 그래도 나아가 보자.

선언도 하지 않은 변수를 어떻게 사용할 수 있는가?

웹 컨테이너가 JSP 페이지를 서블릿 클래스로 변환할 때 자동으로 선언을 해주기 때문이라고 한다.

서블릿 클래스의 코드를 보다 보면 기본적으로 정의된 것임을 알수 있다.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  { ..... }

붉은색으로 표시된 부분이 내장변수이다.
몇가지 내장변수가 있는데, 순차적으로 살펴보자.

아. 참고로 내장 변수는 스크립틀릿과 익스프레션 안에서만 사용할 수 있고, 선언부 안에서는 사용할 수 없다.

1. Request

먼저 살펴볼것은 request 내장 변수이다.
차이를 잘 모르겠지만, 서블릿 클래스에 있는 doGet, doPost 메서드의 첫번쨰 파라미터와 동일한 역할을 하고 타입도 동일하다.
예를 들면, getParameter 메서드를 호출하면 웹 브라우저를 통해 입력된 데이터를 가져올 수 있다.

String str = request.getParameter("NAME");


<!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>이름 입력 연습용</title>
</head>
<body>
 
 당신의 이름을 입력하세요.
 <form action="Hi.jsp" METHOD=GET>
 이름 : <input Type=TEXT NAME=YOURNAME>
 <input type="submit" value="확인">
 </form>
</body>
</html>

위의 코드는 이름을 입력받는 폼이 존재하는 페이지다. html페이지
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>이름 출력 / 인사하기</title>
</head>
<body>
안녕하세요, <%= request.getParameter("YOURNAME") %> 님
</body>
</html>

위 코드는 html코드에서의 이름을 받아서 출력하는 JSP 페이지이다. 한글이 깨지는데.. 해결책을 못찾겠다..-ㅅ-...

뭐 아무튼.... 붉게 표시한 부분을 대문자하나도 틀리지 말고 맞춰줘야 정상적으로 작동이된다.


2. Out 내장 변수

JSP페이지에서는 HTML코드, 익스프레션만 가지고도 웬만한 것들은 다 되는데,
가끔 서블릿에서 하는것처럼 println, print, printf와 같은 것들을 쓰면 편할 때가 있다.
이 때 사용하는것이 Out 내장 변수이다.

JSP 페이지에서  <BODY> 구문내의 스크립틀릿으로 표현하자면

<% for (int cnt = 1; cnt <=10; cnt++) { %>
      <%= cnt  %> <BR>
<% } %>

이렇게 되는데 이러한 거시기를

<% for (int cnt = 1; cnt <=10; cnt++)
    out.println(cnt+"<BR>");
%>

요로코롬 깔쌈하게 만들수있다... 별거 없는것 같은가? 타이핑 해봐라 훨씬 쉽다.
게다가 읽기에도 더 쉽다. <%, %> 와 같은 익스프레션이 타이핑도 귀찮은데다가 가독성을 떨어뜨릴수 있다.

주의사항으로는 out 내장 변수가 JspWriter 타입이기 때문에 PrintWriter 객체와는 다르다.
JspWriter 클래스 내에는 printf 메서드가 없기 때문에 사용할수 없다.

3. response 내장 변수

이 내장 변수는 doGet, doPost 메서드의 두번째 파라미터와 동일한 역할을 한다.(뭔소린가..-ㅅ-)...

예로 들게 된 메서드는 sendRedirect라는 메서드이다. 현재 JSP 페이지의 실행을 중단하고 다른 웹 자원을 호출하는 기능이다.

만약 이 메서드를 쓰는 JSP 페이지에서는 HTML 출력 코드를 쓰지 않는 것이 좋다.
요청된 페이지로부터 무시되거나 역으로 메서드의 작동을 방해할 수도 있기 때문이다.

Body 구문안에
<% response.sendRedirect (사이트 주소);
%>

와 같은 방식으로 넣으면 된다.
실행시켜보면 내가 JSP로 만든 페이지는 온데간데 없고 바로 요청한 페이지가 출력되는 것을
확인할 수 있다.

반응형
Comments