일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 완전 탐색
- 알고리즘
- 최소공배수
- 문자열
- 프로그래머스
- 2017 카카오 코드
- 동적계획법
- 어려웠던 문제
- 완전탐색
- Dynamic Programming
- 순열
- 보이어무어
- dfs
- 점프와 순간이동
- python
- 튜플
- HashSet
- 후위 표기법
- 규칙찾기
- Stack
- 메뉴리뉴얼
- 반복문
- 영문자 확인
- HashMap
- pandas
- 쿼드압축 후 개수세기
- Java
- fragment identifier
- 에라토스테네스의 체
- 조합
- Today
- Total
csmoon1010의 SW 블로그
JSP의 기초 - (부스트코스) 본문
1. JSP(Java Server Page)란?
- 모든 jsp는 서블릿으로 바뀌어 사용됨
- <%@ page... %> : page 지시자
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
language : 사용하는 프로그래밍 언어
contentType : 출력되는 결과의 문서type, charset 등을 포함
pageEncoding : 인코딩 타입
- <% ... %> : Scriptlet = 자바 코드를 입력할 수 있는 부분
<%
int total = 0;
for(int i = 1; i <= 10; i++){
total = total + i;
}
%>
- <%= 변수 %> : 표현식
응답 결과에 넣고 싶은 자바 코드(변수)를 포함
1부터 10까지의 합 : <%=total %>
- out.print() 형태로 바뀌게 됨
※ JSP가 Servlet으로 바뀔 때 어떻게 바뀔까를 생각하기 --> 서블릿으로 바뀐 후에는 같은 라이프사이클로 실행
2. JSP 라이프싸이클
1) 생성 원리
이클립스 워크스페이스 아래의 .metadata 폴더에 java 파일 생성
- jsp파일의 내용이 변환되어 들어감
- 서블릿 소스를 자동으로 컴파일 되면서 실행 → 브라우저에 show
2) 실행순서
- 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
- 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 파일 생성)
- 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
- 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
- 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.
3) 라이프싸이클
- 기본적인 Scriptlet의 내용은 Service 메소드에 들어가게 됨
(∵ 매번 호출되는 메소드가 Service 뿐)
- init(), destroy() 일 때 동작을 추가하고 싶다면, <%! %> 선언문을 활용 = _jspService가 아닌 바깥쪽에 작성됨
<%!
public void jspInit(){
System.out.print("jspInit()");
}
%>
<%!
public void jspDestroy(){
System.out.print("jspDestroy()!!!");
}
%>
3. JSP 문법
1) 선언문(Declaration)
- <%! 문장 %>
- JSP 페이지 내에서 필요한 멤버변수나 메소드가 필요할 때 선언해 사용하는 요소
- Servlet으로 변경 시 service() 메소드 바깥에 생성
<%!
String id = "u001";
public String getId(){
return id;
}
%>
2) 스크립트릿(Scriptlet)
- <% 문장%>
- 가장 일반적으로 많이 쓰이는 스크립트 요소
- 주로 프로그래밍의 로직을 기술할 때 사용
- 스크립트릿에서 선언된 변수는 지역변수 (service() 메소드 내부)
<%
for(int i = 1; i <= 5; i++){
%>
<H<%=i %>>아름다운 한글</H<%=i %>>
<%
}
%>
3) 표현식(Expression)
- <%= %>
- JSP 페이지에서 웹 브라우저에 출력할 부분을 표현 (즉, 화면에 출력하기 위한 것)
- 스크립트릿내에서 출력할 부분은 내장객체인 out 객체의 print() 또는 println() 메소드를 사용해서 출력
4) 주석(Comment)
(1) HTML 주석
- <!-- html주석 -->
- 웹에서 서비스할 때 화면에 주석이 내용이 표시되지는 않음
- [소스보기] 수행 시 주석 내용 표시
(2) Java 주석
- //, /**/
- 스크립트릿, 선언문에 사용
- JSP가 Servlet으로 바뀌었을 때 표시
- [소스보기] 수행 시 표시X
(3) JSP 주석 : Servlet으로 바뀌지 않음
- <%-- JSP 주석 --%>
- Servlet, 웹 브라우저 [소스보기] 모두에 표시X
4. JSP 내장 객체(Implicit Objects)
- _jspService()에 삽입된 코드의 윗부분에 미리 선언된 객체들 → 해당 객체들은 jsp에서도 사용 가능
- response, request, application, session, out과 같은 변수
- 종류
- 예시
<%
StringBuffer url = request.getRequestURL(); //request 내장객체 활용
out.print("url :" + url.toString()); //out 내장객체 활용
out.print("<br>");
%>
※ 단, 내장객체를 선언문에서는 사용 불가. 내장객체는 _jspService() 메서드 내의 객체이므로!!
'웹 > 백엔드' 카테고리의 다른 글
JSP의 JSTL & EL - (부스트코스) (0) | 2021.04.05 |
---|---|
JSP의 Scope - (부스트코스) (0) | 2021.03.30 |
JSP의 redirect & forward - (부스트코스) (0) | 2021.03.23 |
Servlet _ 작성 방법 / 라이프 싸이클 / Request, Response 객체 (부스트코스) (0) | 2021.01.29 |
Servlet _ 개발환경 (부스트코스) (0) | 2021.01.27 |