21
To be JSP 7장

Jsp convert to Servlet

  • Upload
    -

  • View
    122

  • Download
    5

Embed Size (px)

DESCRIPTION

routine to know how to convert jsp to servlet

Citation preview

Page 1: Jsp convert to Servlet

To be JSP7장

Page 2: Jsp convert to Servlet

JSP

MVC 아키텍쳐에서 View단을 맡고 있다.

!request.setAttribute("styles", result); RequestDispatcher view = request.getRequestDispatcher(“result.jsp");view.forward(request, resp);

이 과정에서 jsp파일을 세팅해주고

목적지로 forward시킨다. 즉 redirect시킴

Page 3: Jsp convert to Servlet

In JSP

• 그러면 JSP는 내부적으로 어떻게 동작하는가?

Page 4: Jsp convert to Servlet

JSP Code Problem

<title>View</title></head><body>The page count is :<% out.println(Counter.getCount());%>!</body></html>

package 가 없다!!!!

Page 5: Jsp convert to Servlet

JSP Code Problem

JSP 코드 앞에 패키지를 넣어 주면 된다.

foo.Counter.getCount();

근데 이건 너무 귀찮다! 자바처럼 import할 방법이 없을까?

Page 6: Jsp convert to Servlet

지시자(directive)

• 지시자는 컨테이너가 페이지를 자바 코드로 변환할 시에 특별한 지시를 내릴 수 있다.

• page, include, taglib이 있다. !<%@ page import=“foo.*, java.util.*” %>

여러 개를 import하는 것도 가능

Page 7: Jsp convert to Servlet

out.println

out.println(Counter.getCount());! 이것도 너무 귀찮다. 계속 out객체를 이용하고 싶지 않다. 그리고 웹 디자이너들은 자바를 잘 모른다. 다른 문법이 없을까?!!

Page 8: Jsp convert to Servlet

JSP 표현식(expression)

<%= Counter.getCount()%>!이걸 사용하면 자동으로 out 객체로 println을 시행해줌out.println(Counter.getCount());랑 같은 거니까당연히 끝에는 세미콜론(;)이 없어야겠죠?

Page 9: Jsp convert to Servlet

지역변수

<% %> : 스크립틀릿을 사용하면 호출할때마다 변수가 초기화된다. 지역변수기 때문에

인스턴스 변수로 만들 수 있을까?

Page 10: Jsp convert to Servlet

선언문(declaration)

<%! int count = 0 %>

이렇게 선언하면 인스턴스 변수로 값이 할당됨.

Page 11: Jsp convert to Servlet

Convert to Servlet지시자를 확인한다(<%@ %>)

HttpServlet 의 하위 클래스를 생성한다

page 지시자가 있으면, 패키지 선언 아래애 import 문을 넣는다

service() 메소드를 만든다.

Page 12: Jsp convert to Servlet

내장 객체

• JSP가 서블릿이 되기 때문에 서블릿의 내장 객체를 이용할 수 있다.

• API와 내장 객체 매핑은 책을 참조 || 검색하는 걸로!

Page 13: Jsp convert to Servlet

JSP LifeTime

• JSP파일을 저장해서 배포한다

• 사용자가 jsp파일을 요청한다.

• jsp가 컴파일되어 .class파일로 변환된다.

• jsp가 서블릿으로 변환되고, 컨테이너가 인스턴스화한다.

• 요청이 들어올때마다 _jspService() 메소드를 실행한다.

Page 14: Jsp convert to Servlet

초기화

• jsp는 서블릿으로 변환되니 당연히 초기화도 할 수 있고, 재정의도 할 수 있다.

• 초기화는 <servlet-class>태그가 아닌 <jsp-file>태그를 이용한다.

Page 15: Jsp convert to Servlet

속성 체크

• jsp 내에서 내장 객체를 이용하여 서블릿처럼 각각의 컨텍스트에 접근할 수 있다.

• Application, Request, Session에 접근 가능하다.

• 그런데 Page라는 다른 컨텍스트가 존재한다.

Page 16: Jsp convert to Servlet

Page

• PageContext는 자기 자신에게 설정되어 있는 Page속성 뿐만 아니라 다른 생존범위 속성에도 접근할 수 있다.

• PageContext를 이용하여 Session, application 생존 범위 내에 값을 세팅하고, 읽어올 수 있다.

Page 17: Jsp convert to Servlet

<% %>

• 스크립틀릿은 자바 코드이다.

• 웹 디자이너들은 프로그래머가 아니므로, 자바 코드를 이해할 수 없다.

• 어쩌지?

Page 18: Jsp convert to Servlet

EL

• EL은 Expression Language의 약자며, 스크립틀릿이나 표현식으로 했던 작업들을 할 수 있다.

• 코드를 짜는 것이 아니라, 다른 데서 짜 놓은 코드를 EL을 가지고 호출할 수 있다.

Page 19: Jsp convert to Servlet

EL

• ${applicationScope.mail} ==

<%= application.getAttribute(“mail”) %>

Page 20: Jsp convert to Servlet

EL

• 그러나 항상 EL이 좋은 것은 아니다. 코드 중에 EL이 사용된 것처럼 착각할 수 있는 코드가 존재할 수 있다.

• 그럴 땐 EL을 사용할 수 없게 만들어야 한다.

• DD에서 세팅하는 방법과, page 지시자 속성을 이용하는 방법이 있음.

• 항상 page 지시자가 우선함(둘 다 세팅했을 경우에는)

Page 21: Jsp convert to Servlet

Action

• 표준 액션 :<jsp:include page=“wickedFooter.jsp”/>

• 기타 액션 :<c:set var=“rate” value=“32” />

• 자세한 건 다음 장에서