| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 자바스크립트
- HTTP
- webprogramming
- 노드 삭제
- Array
- 노드 객체
- Servlet
- javascript
- 포워드
- jsp내장객체
- innerHTML
- 이벤트 핸들러
- 노드 추가
- 문자열
- 코딩테스트
- 파이썬 코테
- 자바스크립트 이벤트
- HTML
- element
- 노드 replace
- backend
- Object
- eventlistener
- addEventListener
- Web
- debugging
- HtmlElement
- 이벤트
- 리다이렉트
- 노드
- Today
- Total
seoyoung.dev
JSP/JSP의LifeCycle/JSP 내장객체 본문
JSP 는 JSP 자체로 동작하는 것이 아니라, 모든 JSP 는 서블릿으로 바뀌어서 동작한다.
-> 바뀐 서블릿이 실행되는 것이다.
-> 페이지 지시문을 사용해서 알려줄 수 있게 한다.
<body>
<% //scriptlet: 자바 코드를 입력할 수 있는 부분
int total =0;
for(int i=1;i<=10;i++){
total +=i;
}
%>
1부터 10까지의 합 : <%=total %>
//out.print(total); -> <%= %>
</body>
[ sublet 에서 자바코드를 넣어주더라고, response 의 out.println에 넣어주지 않으면, 실제 응답으로는 들어가지 않는다.
JSP 에서, 응답으로 반드시 넣어주고싶은 자바 코드는 <%= %> 태그 안에 넣어준다
* jsp 의 라이프싸이클
' sum10_jsp.java' 파일의 _jspService() 메소드 안에 jsp 파일의 내용이 변환되어 들어가게 된다.
jsp 파일이 서블릿 소스로 컴파일되어 실행돼서 브라우저에 보여지게 된다.
< jsp의 실행 순서>
- 브라우저가 웹서버에 JSP 에 대한 요청 정보를 전달
-> 웹서버는 해당 JSP 에 대한 서블릿의 존재여부를 확인하여, 존재한다면 서블릿 엔진이 요청을 서블릿 라이프사 이클대로 실행하게 되고, 최초 요청이면 JSP 엔진이 알맞는 서블릿 만들고, 컴파일 수행
- 최초로 요청했을 경우에만, JSP 코드가 서블릿 코드로 변환한다. (***_jsp.java 생성)
- 서블릿 코드를 컴파일해서, 실행가능한 bytecode 로 변환 (class 파일을 생성)
- 서블릿 클래스를 로딩, 인스턴스 생성 By JSP 엔진
- 서블릿 실행 -> 요청 처리, 응답 정보 생성
* 서블릿의 라이프 사이클 (init, service, destroy)
- 최초 요청시에는 Init, Service
- 수정되거나 다시was가 갱신되는 경우 Destroy, Init, Service
* JSP 의 라이프 사이클 (_jspInit() , _jspDestroy(), _jspService() )
-> 그냥 쓰던, SCRIPTLET 에 쓰던, 다 service 메소드에 들어와있다.
: 응답에 포함되는건 service 밖에 없고, 매번 호출되는건 service 밖에 없기 때문이다.
-> <%! %> 선언식
: 어떤 특정한 메소드를 서비스 메소드가 아니라, 다른 메소드나 필드로 지정하고 싶을 때 사용
* JSP 문법
-선언문: <%! %> : 멤버 변수 및 메소드 선언에 사용 -> java 파일 내 service 메소드 말고 클래스 바디쪽에 쓰여진다.
-Scriptlet: <% %>: 프로그래밍 코드 기술에 사용 , service 메소드 안의 지역변수 선언
-표현식: <%= %>: 응답 결과에 포함할 내용을 넣을 때 사용, -> java 파일의 service 메소드 내에 포함
id = <%=getId() %> //표현식
<%! //선언문
String id = "u001"; //멤버변수
public String getId(){ //메소드 선언
return id;
}
%>
<body>
<%
for(int i=1;i<=5;i++){
%>
<h<%=i %>> 아름다운 한글 </h<%=i %>>
<%
} //반복문 끝나는 부분 사이에 html 태그 넣기 위해서 분리
%>
</body>
+ 주석
- html 주석 <!-- html주석 --> : html 주석은 다 바뀌고, 응답에까지도 들어간다.
- jsp 주석 <%-- jsp 주석 --%> :java 파일에서 보이지 않는다.
- java 주석 //java 주석 : jsp 에서 java로는 바뀌지만, java 실행시킬때의 주석이므로 실행이 안된다.
* JSP 내장객체
JSP 에 입력한 코드는 생성되는 서블릿 소스의 _jspservice() 메소드 안에 삽입되는 코드로 생성된다.
-> Service 메소드에 미리 선언된 객체들을 jsp 에서 사용 가능 하다.
-> request, response, application, session, out 과 같은 내장 객체들
<%
StringBuffer url = request.getRequestURL();
//내장객체 request 사용
out.println("url:"+ url.toString());
//내장객체 out 사용
out.print("<br>");
%>
+) JSP 선언문에서 내장객체를 사용할 수 있을까?
-> JSP 선언문은 _jspService() 메소드 이외의 클래스 바디 공간에 쓰여지는데, 내장 객체는 service 메소드에 기본적으로 내장되어있어서 해당 service 메소드 내에서 사용할 수 있으므로, 메소드 밖에서는 사용할 수 없다.
'WEB > JSP' 카테고리의 다른 글
| HttpServlet Class- service/doGet/doPost 메소드 (0) | 2019.10.11 |
|---|---|
| Scope에 대하여-[Page/Request/Session/Application] (0) | 2019.10.07 |
| Redirect/Forward/서블릿파일과JSP파일 연동 (0) | 2019.10.06 |