210930(목) JSP - diretive / 자바코드넣기 / 내장객체(자동서블릿생성) / 주석 / 글목록 숙제
JSP (Java Server Page) =====> 자바코드와 html코드를 섞어서 쓴다!!!!!
: 서버를 만드는?@!
: 웹에서 실행하는 프로그램
: java in HTML -> 자바 코드를 넣는 점이 중요
JSP 란 JavaServer Pages 의 약자이며
HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.
JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고
그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.
* 웹어플리케이션(Web Application)
웹어플리케이션은 웹에서 실행되는 응용프로그램을 뜻하며 인터넷을 통한 은행업무, 인터넷쇼핑, 등등 인터넷에서 하는 여러 서비스를 총칭
하며 사용자가 필요한 요청(Request) 를 하고 서버에서는 이에 해당하는 요청을 수행하고 그리고 요청한 데이터를 응답(Response) 한다.
웹 어플리케이션이 위와 같이 동작하기 위한 몇가지 구성요소가 있다.
웹 브라우저(Web Browser) : 클라이언트에서 요청을 하고 전달받은 페이지를 볼수있는 환경을 말한다. ( 크롬, IE, Safari, Firefox 등.. )
웹 서버(Web Server) : 클라이언트로 부터 요청받아 서버에 저장된 리소스를 클라이언트 에게 전달한다. 주로 정적컨텐츠롤 담당한다.
웹 어플리케이션 서버 ( Web Application Server ) : 줄여서 was 라고도 부르며 서버단에서 필요한 기능을 수행하고 그결과를 웹서버에게 전달한다.
데이터베이스 : 서비스에 필요한 데이터를 보관, 갱신 등 관리를 한다.
* 자바 서블릿(Java Servlet)
서블릿이란 웹페이지를 동적으로 생성하기 위해 서버측 프로그램을 말한다.
이는 자바 언어를 기반으로 만들지며 웹 어플리케이션 서버 ( Web Application Sever ) 위에서 컴파일 되고 동작한다.
서블릿 JSP
웹 웹
html in JAVA JAVA in html => 배경이 누구냐가 다르다~!!!!!!
cf) 자바빼고는 다 소문자로 시작!!!!
* directive
1. <%@ page %> - 환경설정
2. <%@ include %>
3. <%@ taglib %>
<JSP directive (지시자)>
JSP 페이지를 해당 서블릿으로 어떻게 변환하는지 웹 컨테이너에게 알려주는 메시지이다
응답에 대한 설정을 부여하는 것이다
- JSP page directive <%@ page %>
- JSP include directive <%@ include %>
- JSP taglib directive <%@ tablib %>
1. JSP page directive
현재 페이지에 대한 설정
JSP page directive 속성
이거두개만 자주쓴다?!
• import
• contentType
HTTP 응답의 MIME(Multipurpose Internet Mail Extension) 타입을 정의
기본값(default)은 “text/html; charset=ISO-8859-1”
• extends
extends 속성은 생성된 서블릿에서 상속할 상위클래스를 정의한다
extends는 거의 사용되지 않는 속성이다
• info
서블릿 인터페이스의 getServletInfo()에 의해 검색될 JSP 페이지의 정보를 설정한다
• buffer
JSP 페이지에 의해 생성될 결과를 처리하기 위한 버퍼 사이즈를 KB단위로 설정한다.
기본값(default)는 8KB 이다.
• language
• isELIgnored
default=false이므로 EL이 사용되도록 설정되어 있다
JSP에서 EL(Expression Language)를 무시하도록 한다
• isThreadSafe
default=true
JSP와 서블릿(servlet)은 모두 멀티쓰레드가 된다.
속성을 false로 설정하면, 웹 컨테이너는 다수의 요청(request)을 순차적으로 실행할 것이다.
즉, 하나의 요청에 대해 JSP가 응답한 후에 그 다음 요청을 하나씩 차례대로 수행하는 것이다
• autoFlush
default=true
출력할 내용이 굉장히 많아서 버퍼 용량을 넘을 경우, 자동으로 flush해서 자동으로 클라이언트에게 정보를 내보내게하는 속성이다
버퍼가 기본값이면 autoFlush가 적용될 일이 없기 때문에 보통 false로 준다.
• session
default=true
로그인 정보 저장
• pageEncoding
default=ISO-8859-1
• errorPage
에러 페이지를 지정한다.
현재 페이지에 exception이 발생하면 설정된 에러 페이지를 호출한다.
• isErrorPage
현재 페이지가 에러 페이지임을 선언한다
2. JSP include directive
JSP, HTML, TEXT 등의 리소스 파일을 불러올 때 사용한다.
include는 페이지 번역(translation) 시 리소스 파일의 실제 내용을 불러온다
똑같은 이름의 변수가 존재하면 error
3. JSP taglib directive
태그가 정의되어 있는 태그 라이브러리(tag library)를 지정할 때 사용한다.
태그를 정의하기 위해서는 TLD(Tag Library Descriptor)파일을 사용한다
<자바 코드라고 알려주는 것!!!>
# 선언문 <%! 전역, 1번 생성 %> => 출력할 곳에도 <%= %> 해줘야 한다!!! <%! 전역변수 or 메소드 - 1번 처리!! %> 서블릿으로치면 init() # 스크립트릿 (scriptlet) <% 지역, %> <% 지역변수 or service처리 - 요청시 마다 처리!! %> 서블릿으로는 service() # 출력 <%= 값 or 변수 %> cf) out.println() 지양하고 이거 사용 : MVC로 넘어가려면 out.print 안쓴다! cf) MVC (따로분리해서한다, 비즈니스 로직(java), 프리젠테이션(web)) 서블릿과 jsp는 자바와 웹이 섞여있는데...... => 배워야 스프링이 수월하다!!!!!!!! |
<jsp 구조>
hello.jsp
hello_jsp.java (서블릿) ->★ jsp를 쓰면 무거운 이유: 이중작업으로 자동으로 이걸 만들기 떄문에!!!!!!!!!!!
hello_jsp.class
hello.jsp
↓
hello_jsp.java (서블릿)
↓ 내용이 바뀔때만 컴파일
hello_jsp.class
여기서 서블릿 파일 열어보면
서블릿에서 PrintWriter로 만들고...
cf) jsp에서는 서블릿에서 자동으로 out이라는 객체를 JspWriter로 만든다.
이렇게 알아서 서블릿에 써주는 것을 내장객체라고 한다!!
<내장객체(자동으로 서블릿생성)>
1. request : javax.servlet.http.HttpServletReqeuest
2. response : javax.servlet.http.HttpServletResponse
3. out : javax.servlet.jsp.JspWriter
4. session : javax.servlet.http.HttpSession
5. application : javax.servlet.ServletContent
6. pageContent : javax.servlet.jsp.PageContext
7. page : javax.servlet.jsp.HttpJspPage
8. config : javax.servlet.ServletConfig
9. exception : java.lang.Throwable
<JSP 주석>
1. HTML
-> 매우 주의 ! 수행 된다 ~~~!!
<!--
웹브라우저에는 안보이나 소스보기(F12)하면 보인다
내부적으로는 처리( <% %> <%= %> 주의 : 수행한다~!!!)
-->
2. JSP
<%--
웹브라우저에도 안보이고 소스보기(F12)해도 안보인다 차이점 주의~!!!!
--%>
cf) Java
// 1줄
/*
2줄 이상
*/
<%@ page import="guestbook.dap.GuestDAO" %> 이렇게하든지~!@@@@@@@
<이어서 숙제로>
- 어레이 리스트 사용, db쪽은 똑같다