: 웹은 기본적으로 클라이언트-서버 구조
: 클라이언트는 브라우저 서버는 웹서버가 동작하며 그 사이에서 통신을 위해서는 HTTP가 필요함.
: 가장 많이 쓰이는 웹서버로는 아파치(Apache), 톰캣(Tomcat),IIS(Internet Information Server)
1) HTTP메세지구조
GET(존재하는 자원에 대한 요청 ), POST(새로운 자원 생성) 전송방식
2) URL(Uniform Resource Location)
: HTML문서의 주소를 표현
: URL = 프로토콜://서버주소:포트번호/파일경로
정적웹페이지
: 컴퓨터에 저장된 텍스트 파일을 그대로 보는 것(HTML)
: 사용자 요청 → 서버에서 html파일검색 → 이미 준비된 문서를 브라우저로 전달 → 브라우저에서 html 보여줌.
동적 웹페이지
: 저장된 내용을 다른 변수로 처리하여 보는 것(PHP, ASP, JSP)
: 사용자 요청 → 서버에서 요청분석 및 처리 → 결과를 html 로 생성 → 요청에 맞춰 작성된 html을 브라우저로 전달 → 브라우저에서 html 보여줌.
JSP :자바를 기반으로 하는 서버측 웹프로그래밍 언어중 하나.
Servlet(Server Applet) : 자바 기반의 동적 웹 프로그래밍 기술로 클라이언트의 요청을 처리하고 결과를 반환하는 Sevlet 클래스의 규칙을 따름.
==> Servlet 을 기반으로 JSP가 개발되었으며, JSP는 내부적으로 Servlet으로 변환되어 수행됨.
JSP의 특징.
1)서블릿 기술을 확장해줌.
2) 유지 관리가 용이
3) 빠른 개발이 가능
4) 코드의 길이가 줄어듦.
JSP 생명주기
: Sevlet을 통해 사용자의 요청을 받고 처리하여 가공된 html 문서를 브라우저에 결과로 전달.
: 사용자요청 → .jsp → 번역 →.java →컴파일 →.class →로딩및 초기화 → 실행 →응답 → 소멸
:<%......%>
사용
: JSP 페이지가 서블릿 프로그램에서 서블릿 클래스로 변환할 때 사용
==> 자바 코드 부분만 스크립트 태그로 처리하고 나머지는 html 코드 또는 일반 텍스트로 간주.
<%!.... ;%>
<%......%>
<%=...%>
: 서버나 클라이언트에게 행동을 명령하는 태그
: JSP페이지에서 페이시 사이의 관계 제어
: 다른 페이지의 실행 결과 내용을 현재 페이지에 포함.
: <jsp: ...../>
<jsp:forward page="파일이름"/>
<jsp:include page= "파일이름" flush:"false"/>
<jsp:param name= "매개변수명" value= "값"/>
: 동적 콘텐츠 개발을 위해 자바 코드로 로직을 작성.
: JSP페이지에서 화면을 표현하기 위한 계산식 또는 자료의 처리를 담당하는 코드를 따로 분리하여 작성.
: html과 같이 쉽고 간단한 코드로만 구성.
작성 규칙
1) 자바 클래스는 java.io.Serializable 인터페이스를 구현해야함 ==> class는 pakage 안에 src/main/java/pakage/class
2) 인수가 없는 기본 생성자가 있어야함.
3) 모든 멤버 변수인 프로퍼티는 private로 설정
4) 모든 멤버 변수인 프로퍼티는 getter/setter 메소드가 존재해야함.
=>getter() 값을 가져오는 메소드, setter() 값을 저장하는메소드.
<jsp:useBean id= "식별이름" class= "자바빈즈이름" scope= "범위"/>
: JSP 페이지에서 자바빈즈를 사용하기 위해 클래스를 선언하고 초기화 하는 태그
: id 속성과 scope 속성을 바탕으로 자바빈즈의객체를 검색하고, 없으면 빈객체 생성.
: class는 패키지 이름을 포함한 이름을 쓰고, 인수가 없는 디폴트생성자가 있어야하며 추상클래스는 사용 불가.
: scope는 자바빈즈가 저장되는 범위이며 기본값은 page
<jsp:setProperty name="식별이름" property= "프로퍼티이름" value= "값"/>
: 자바빈즈의 setter() 메소드에 접근하여 프로퍼티의 값을 저장하는 태그
: form 페이지로부터 전달되는 파라미터값을 직접 저장하거나 프로퍼티로 변경하여 저장할수 있음.
: 모든 자바빈즈 프로퍼티이름과 동일하게 파라미터를 설정 할 수 있음.
<jsp:getProperty name="식별이름" property= "프로퍼티이름"/>
: name 은 useBean태그의 id 속성값과 일치해야함.
: prorperty에는 자바빈즈의 프로퍼티중가져올 프로퍼티의 이름을 적으면 getter() 메소드로 요청이 됨.
: JSP 페이지에서 사용할 수 있도록 컨테이너 내에 미리 정의된 객체
: JSP 페이지가 서블릿 프로그램으로 번역될때 자동으로 내장 객체를 각종 참조변수로 포함함.
: 별도의 import 문 없이 사용가능.
: 스크립틀릿태그나 표현문태그에 선언하거나 직접호출하여 사용가능.
: 사용자 요청의 매개변수에 대한 정보 저장
: 사용자와 서버에 대한 정보 읽기
: 사용자 요청 헤더 및 쿠키정보 읽기.
: http 요청메세지의 내용을 참조하기위한 메소드 제공.
: 메시지의 헤더 정보를 얻어오기 위한 메소드와 바디 정보를 위한파라미터 관련 메소드로 구성됨.
=>주요메소드
getParameter(String name)
: 파라미터값 가져오기getParameterValues(String name)
: 값이 여러개인 (array, vector등) 파라미터값 가져오기 getParameterNames()
getHeaderNames()
getCookies()
: 요청에 대한 응답을 저장
: 정보를 담고 페이지 이동하는 역할
: 처리 결과로 응답 메세지를 구성하기 위한 다양한 메소드를 제공.
: 주로 메세지의 헤더정보를 얻기위한 메소드, 응답컨텐츠 관련 메소드, 페이지 이동 관련 메소드로 구성.
: 헤더 정보 관련 메소드중 set계열은 데이터 업데이트 기능을 add계열은 데이터를 추가하는 기능.
=> 주요메소드
setContextType()
: 문자열 형태의 type에 지정된 MIME type 으로 content type 을 설정함. sendRedirect(String url)
<a></a>
태그location
객체response.sendRedirect()
: 페이지에 출력할 내용.
: javax.servlet.jsp,JspWriter객체의 참조변수
: 버퍼 관련 메소드와 출력관련 메소드로 구성.
: print(), write() 를 사용하면 JSP에서 생성한 결과를 HTTP 응답메시지의 body 부분에 추가하여 사용자에게 전달.
: <% out.print(내용) %> = <%=내용 %>
=>주요메소드
print(String str)
/println(String str)
: str 을 웹 브라우저에 출력getBufferSize()
: 현재 출력버퍼의 크기 반환getRemaining()
: 현재 남아있는 출력버퍼의 크기 반환.clearBuffer()
: 현재 출력 버퍼에 저장된 내용을 그냥 비움.flush()
: 출력버퍼에 저장된 내용을 브라우저에 전송하고 비움.close()
: 브라우저의 정보를 유지하기 위한 기능 제공.(사용자와 서버의 관계를 유지)
: http프로토콜의 비연결 문제를 해결하기 위해 등장.
: http요청 메시지로 부터 전달된 파라미터 값을 서버에 저장할 수 있도록 지원함.
: 페이지간의 연결이 끝난 후에도 정보 저장.
: 쿠키는 사용자의 컴퓨터에 로컬파일로 저장되어 사용자에게 편의를 제공하지만 보안성이 떨어지고,
세션은 서버에 저장이 되어 보안성이 확보된다는 점에서 쿠키보다 많이 사용됨.
: 어플리케이션의 context 정보를 저장.
: 웹 어플리케이션(Dynamic project) 하나당 하나만 생성.
: 모든 jsp페이지에 접근할 수 있음.
: 서버의 정보, 물지적 경로 등 중요 정보 저장.
: web.xml에서 설정(배포서술자 (deployment descriptor))==> 웹 어플리케이션에 대한 여러가지 설정정보를 저장하는 파일.
(컨텍스트 초기화 매개변수, 폴더의 물리적 경로 정보, 파일 업로드나 입출력 작업시 사용.)
: 서비스의 실행기간동안 유지될 필요가 있는 값을 설정하거나 가져오기위해 메소드 제공
=>주요메소드
setAttribute(String name, Object value)
: name 속성의 값을 value로 지정. ==>void로 반환.getAttribute(String name)
: name속성값을 가져옴emoveAttribute(String name)
: name속성값을 삭제 ==>void로반환.getAttributeNames()
: 모든 속성의 이름을 가져옴 getRealPath(String url)
: 주어진 url에 대한 실제 시스템 경로반환.getRealPath()
는 업로드 파일이나 이미지 저장할때 사용(서버가 동자되는 시스템의 절대 경로가 필요해서): 응답 페이지 실행에 필요한 context 정보를 저장.
: 특정 페이지의 서블릿객체 (인스턴스)
: 환경설정 정보 저장
: 예외 발생 처리