저번 수업까지 사용자의 요청에 따라 Servlet을 통해 요청에 반응하는 서버 프로그램을 만들었다. 하지만 Servlet을 통해 사용자에게 새로운 페이지로 반응을 보낼 경우 효율이 좋지 않았다. PrintWriter 객체를 생성하고 println 메소드를 통해 한줄 한줄 java 코드에 html 코드를 삽입하여 반응하는건 쉽지 않은 일이었다. JSP를 사용하면 html 코드에 java 코드를 삽입하여 html으로 웹페이지의 화면로직을 구성하고 java 코드를 삽입하여 더욱 손쉽게 클라이언트의 요청에 반응할 수 있다.
1) 간단히 사용자가 서버에 접근하는 웹페이지를 만든다.
2) 그리고 요청에 따라 반응할 수 있는 Servlet 프로그램을 만들어준다. 이 때 RequestDispatcher 클래스의 객체를 생성한다. getRequestDispatcher 메소드의 매개값으로 Servlet 대신 사용자의 요청에 반응을 해줄 JSP의 경로를 설정해주고, 만들어준 객체 참조변수 dispatcher에 forwar 메소드를 매개값으로 doGet 메소드의 매개변수 request와 response를 입력해준다.
** 길게 설명했지만 쉽게 생각하면 그냥 JSP로 반응에 대한 위임을 Servlet에 두 줄짜리 코드로 완성한 것이다.
3) 이제 Servlet가 하던 반응을 위임받은 JSP를 만들어준다. 확장자는 .jsp이지만 html과 다를게 크게 없다. 첫 번째 줄에 기술된 <%@ 지시자 %>는 Directive tag로 JSP 페이지 전체에 영향을 미치는 정보를 기술하는 태그이다.
4) 이제 클라이언트의 요청에 Servlet에게 반응을 위임 받은 JSP에 코드를 기술해본다.
5) 위 JSP 페이지에 <% java 코드 %> 이렇게 작성하면 된다. 여기서 <% ~ %> 태그는 Scriptlet tag로 사용자가 웹페이지에서 Servlet으로 보내온 요청과 함께 보내온 값들을 불러오고 처리할 수 있는 java 코드를 작성 가능하다. 위 사진 첫번째에 getParameter 메소드를 통해 사용자가 요청과 함께 보낸 값을 받을 수 있다.
여기서 주의할 점은 request나 out은 선언된적 없는 변수인데 사용되는 것을 확인할 수 있다. JSP에서 기본적으로 제공하는 객체들로 request, response, out등 Scriptlet tag와 Expression tag에서 사용할 수 있게 암시적으로 선언된 객체인 JSP 내장 객체들이다.
추가적으로 Expression tag인 <%=표현식 %>을 사용하면 out.print() 역할로 손쉽게 표현식의 값을 out.print()를 사용하지 않고 표시할 수 있다.
6) 그리고 위 코드에 대해 조금 더 부가 설명을 하자면 JSP 페이지에서 <% ~ %> 식의 JSP Elements들 밖의 html 코드들을 jasper가 java 코드
형식으로 바꿔서 읽게된다.
**
7) 사용자의 요청에 반응한 JSP 페이지를 아래와 같이 확인할 수 있다.