일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- mybatis
- JSON
- java
- jsp
- 오라클
- 마스킹
- JQuery
- github
- 구멍가게코딩단
- NoSQL
- bulkinsert
- query
- 기출문제
- spring
- jdbc
- mysql
- 정보처리산업기사
- vue.js
- 부스트코스
- Ajax
- INSERT
- vscode tutorial
- insertAll
- egov
- vue Carousel
- swipe 배너
- checkbox
- Tomcat
- JAXBContext
- MariaDB
- Today
- Total
개발새발
3. [DB 연결 웹 앱] JSP - BE 본문
1) JSP란?
마이크로소프트의 ASP(Active Server Pages)와 같은 스크립트 형태의 개발 방법이 인기를 얻게 되면서,
자바 진영에서도 대항하기 위해서 JSP를 발표하게 된다.!
JSP = 스크립트 언어
<%@ %> = page import 또는 include 이런거 할때
<% %> = 자바코드가 들어가는 부분
<%= %> = 표현식 (=out.print)
<%! %> = 선언식 //이 클래스에 메서드를 선언한다던가 필드를 선언할때 만들어주면 메서드 바깥쪽에 코드를 만들어지게
[생각해보기]
1. 1부터 10까지의 합을 구하는 서블릿과 JSP를 비교해봤을 때 JSP가 어떤 부분에서 편리한거 같나요?
서블릿은 브라우저에 출력할려면 out.print("<br>"+total+"</br>"); 이렇게 일일이 써줘야함
JSP는 scriptlet을 써서 쉽게 표현 할수 있다.
2) JSP 라이프싸이클
WAS는 웹 브라우저로 JSP에 대한 요청을 받게 되면, JSP코드를 서블릿 소스코드로 변환한 후 컴파일 하여 실행된다.
jsp 파일에 Scriptlet을 썼든 표현식을 썼든 Service라는 메서드에 해당부분 코드가 추가 된다.
init 이나 destroy가 존재하지만 뭘 쓰든간에 Service 메서드 안에만
-> 응답에 포함 되는건 Sevice밖에 없기때문 (매번 호출되는게 Service밖에 없다.)
but, <%! %> 선언식을 쓰면 Service 내에 만들어지는게 아니라 바깥쪽에 만들어지게 할수 있다.
[JSP로 요청이 들어왔을때 ]
서버 : JSP에 해당되는 서블릿이 존재해? (요청이 첨인지 아닌지 체크)
if( 존재) {
서블릿엔진이 요청받아서 서블릿 라이프 사이클대로 실행
}else(존재하지 않는다){
JSP엔진이 그것을 받아서 알맞는 서블릿으로 만들고 컴파일하고 서블릿 객체 생성
}
[JSP의 실행순서]
- 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
- 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 파일 생성)
- 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
- 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
- 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.
[생각해보기]
서블릿 라이프 사이클 = init(), service(), destroy()
JSP 라이프 사이클 = _jspinit(), _jspservice(), _jspdestroy()
3) JSP 문법
[선언문] : <%! %>
[스크립트릿] : <% %>
많이씀
프로그래밍 로직을 기술할때 사용
스크립트릿에서 선언된 변수는 지역변수
스크립트릿안에서 선언된 변수는 다 Service라는 메서드 안에 선언되는 변수일 거다.
[주석 (Commnet) ]
1. HTML : <!-- -->
2. JSP : <%-- --%>
3. JAVA : /* */
4) JSP 내장객체
: JSP에서는 개발자가 선언하지 않아도, 사용할 수 있는 미리 선언된 변수가 존재한다 -> 내장객체
- JSP를 실행하면 서블릿 소스가 생성되고 실행된다.
- JSP에 입력한 대부분의 코드는 생성되는 서블릿 소스의 _jspService() 메소드 안에 삽입되는 코드로 생성된다.
- _jspService()에 삽입된 코드의 윗부분에 미리 선언된 객체들이 있는데, 해당 객체들은 jsp에서도 사용 가능하다.
- response, request, application, session, out과 같은 변수를 내장객체라고 한다.
객체들을 따로 선언하거나 생성해주지 않았는데 오류가 나지 않는다.
왜? 내장객체잖아~.~ (필요에 따라 가따 쓸수있음.)
* jsp는 그냥 실행되는게 아니라 서블릿으로 바껴서 실행된다!
[생각해보기]
1. 내장객체를 JSP 선언문에서 사용할 수 있을까요? 사용할 수 없다면 왜 그럴까요?
선언문 이외의 표현식은 _jspService 메서드 안에 코드가 작성됨.
_jspService 메서드에는 출력(out), 세션(out), 요청(request), 응답(response) 등을 담당하는 내장객체가 있는데
내장객체는 _jspService 메서드 안에서 사용 가능하다 -> 지역변수라고 함.
지역변수는 해당 메서드 '안'에서 사용되고 '밖'에서는 사용할 수 없다.
'[부스트코스] 웹프로그래밍 > DB 연결 웹 앱' 카테고리의 다른 글
6. [DB 연결 웹 앱] JSTL & EL - BE (0) | 2019.11.23 |
---|---|
5. [DB 연결 웹 앱] scope - BE (0) | 2019.11.22 |
4. [DB 연결 웹 앱] redirect & forward - BE (0) | 2019.11.21 |
2. [DB연결 웹 앱] WEB UI 개발 - FE (0) | 2019.11.21 |
1. [DB 연결 웹 앱] JavaScript - FE (0) | 2019.11.21 |