JSP : HTML코드에 자바 코드가 들어가 있다. 웹 서버에서 동적으로 웹 페이지 생성해서 브라우저에 돌려준다. PHP, ASP와 유사하다.
웹 브라우저에서 요청을 보내면 웹 서버에서는 JSP파일을 서블릿 파일로 변환해서 메모리에 올린 후 응답한다.
이 때 JSP -> 서블릿 변환은 미리 해둬서 로딩 시간을 줄일 수 있다.
즉, 서블릿 문법 = JSP 문법
JSP에는 9개의 기본객체, 내장객체가 있다!
예를 들어, JSP에서 out.print 사용하면 기본객체 out을 사용했기 때문에 제대로 출력된다.
JSP 는 한글이 안 깨진다. 왜냐하면 페이지 인코딩을 해줬기 때문에
JSP가 빠를까? 서블릿? 실질적으로 JSP가 서블릿으로 바뀌는건 최초의 1 번 (init) 이기 때문에 결과적으로 별 차이 없다.
스크립트기반 언어 : php, asp 같은거 :
컴파일 기반 언어: jsp. 스크립트보다 효율적
------
JSP에는 크게 3가지가 있다.
1. 선언
<%! 멤버변수와 메소드 작성 %>
JSP가 서블릿으로 바뀔 때, 선언되는 영역으로 변환된다.
서블릿 파일에서, 선언이 서블릿 클래스 맨 위에 선언!!!!!! 전역변수가 된다.
(<% 이건 선언인지 처리인지 알 수 없어서 서비스 메소드 내부로 변환된다. %>)
2. 처리 - 스크립트릿
서블릿으로 변환 시, 서비스 메소드에 해당되는 영역
<% request나 response에 연관된 작업이 여기에 해당된다 %>
3. 표현식 - 출력
화면에 데이터 출력
<%= 문자열 %> ( 세미콜론 사용 안함 )
<%= 문자열 %> 이거랑 <% out.print(문자열); %> 이거랑 같다!!!!!!!!!!/
근데 HTML 있는 부분 HTML 주석 처리하면, 주석처리된 부분은 데이터가 보내진다. 눈에 안보이는 거다. HTML주석은 자바 코드 실행을 못막는다.
근데 JSP로 주석처리하면 데이터가 보내지지 않는다!!!!!!!. 아예 실행이 안된다.
4. 주석
<%-- 주석주석 --%>
****** 실행 순서를 잘 기억해준다. JSP -> 서블릿 -> 웹 브라우저에서 HTML 불러온다.
자바가 자바스크립트나 HTML보다 먼저 실행된다!!!!!!!!!!!!!!!
그러므로, HTML주석은 브라우저에서 확인 가능하지만, JSP주석은 확인 불가능하다
JSP지시자 (Directive)
1. page Directive : 컨테이너에게 현재 JSP페이지를 어떻게 처리할 것인지 정보 제공
<%@ page attr1=~~ %>
2. include Directive : 특정 JSP 파일을 페이지에 포함. 반복 코드 줄일 수 있따.
<%@ include%>
3.tablib Directive
JSTL 이용하기 위해 필요. 커스텀 태그
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- pageDirective
실제로 쓰는건 2개정도이다. 그것마저 이클립스가 해줘서 만질일은 별로 없다.
결과적으로 import 정도만 만진다. MVC패턴으로가면 이것도 안한다.
language : 사용언어
ContentType: text/html;charset=utf-8 : 브라우저 MIME형식 지정 및 인코딩형식 지정
info : JSP페이지 설명
import : 자바에서의 import과 동일하다. import="java.sql.*" ( 세미콜론 쓰지마1!!!!!!!!!!!!)
session : 세션의 사용유무 . 기본값이 true이다
errorPage : 에러가 발생할 때 대신 처리될 JSP페이지. 근데 사용안한다
isErrorPage : 기본값 false, 현재 JSP페이지가 에러 핸들링 하는 페이지인지 지정한다.
buffer
autoflush: true
isThreadsafe: true
extends
- JSP 기본객체
request
response
pageContext
session: 지시자에서 false로 설정하면 session은 만들어지지 않는다.
application
out
config
page
exception : 모든 JSP에서 만들어지는게 아니라 isErrorPage가 true여야만 만들어진다!!!!!
-JSPSCOPE
pageContext: JSP페이지 하나 처리할 때 사용. 페이지 벗어나면 사라짐
request : HTTP 리퀘스트 처리할 때 사용. 요청에 대한 response 완료되면 사라짐
session : 웹 브라우저와 관련
application: 하나의 웹 앱과 관련
공통 메소드
셋어트리뷰트 겟어트리뷰트 리무브어트리뷰트 겟어트리뷰트네임스
문자열 이름으로 Object 저장!! 겟 할때도 Object로 가져온다.
웹 페이지 이동
forward(request, response) : 데이터 유지: request. response 그대로 전달 .빠름
sendRedirect(location) : 단순 페이지 이동. 기존 데이터 전부 다 버림. forward보다 느림. 세션이나 쿠키이용해 데이터유지
web-inf에 사용하고자 하는 라이브러리 넣어야 한다. ( jar 파일로)
'JAVA > JSP' 카테고리의 다른 글
MVC 패턴 (0) | 2022.04.03 |
---|---|
Java Servlet (0) | 2022.04.03 |