Servlet & JSP

천소진·2022년 11월 29일
0

Study

목록 보기
24/29

웹과 JSP 프로그래밍

1. 인터넷과 웹

  • 인터넷 : 다수의 컴퓨터를 연결시킨 네트워크 (하드웨어)
  • 웹 (World Wide Web) : 인터넷 상의 서비스 중 하나로 인터넷을 통해 연결된 사용자들이 정보르 공유할 수 있는 공간. (소프트웨어)
    이메일, 파일 송수신 서비스들을 사용하려면 통신망 규칙(Protocol) 이 필요.=HTTP

2. 웹의 동작원리

: 웹은 기본적으로 클라이언트-서버 구조
: 클라이언트는 브라우저 서버는 웹서버가 동작하며 그 사이에서 통신을 위해서는 HTTP가 필요함.
: 가장 많이 쓰이는 웹서버로는 아파치(Apache), 톰캣(Tomcat),IIS(Internet Information Server)

  • HTTP
    : HTML 문서를 전송하기 위한 프로토콜
    : 문서요청과정에서 URL이 이용.

1) HTTP메세지구조
GET(존재하는 자원에 대한 요청 ), POST(새로운 자원 생성) 전송방식

2) URL(Uniform Resource Location)
: HTML문서의 주소를 표현
: URL = 프로토콜://서버주소:포트번호/파일경로

  • REST (REpresentational State Trasnfer)
    : 네트워크 상에서 클라이언트와 서버사이의 통신을 구현하는 방법중 하나
    : 서버 응답을 다양한 형태로 전달.
    : 안정되고 검증된 웹기술을 그대로 사용할 수 있음.
    : 성능, 안정성, 보안, 백업, 분산등 여러 인프라의 재활용이 가능.
    ==> 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일

3. 정적 웹페이지와 동적웹페이지

  • 정적웹페이지
    : 컴퓨터에 저장된 텍스트 파일을 그대로 보는 것(HTML)
    : 사용자 요청 → 서버에서 html파일검색 → 이미 준비된 문서를 브라우저로 전달 → 브라우저에서 html 보여줌.

  • 동적 웹페이지
    : 저장된 내용을 다른 변수로 처리하여 보는 것(PHP, ASP, JSP)
    : 사용자 요청 → 서버에서 요청분석 및 처리 → 결과를 html 로 생성 → 요청에 맞춰 작성된 html을 브라우저로 전달 → 브라우저에서 html 보여줌.

4. JSP 와 Sevlet

  • JSP :자바를 기반으로 하는 서버측 웹프로그래밍 언어중 하나.

  • Servlet(Server Applet) : 자바 기반의 동적 웹 프로그래밍 기술로 클라이언트의 요청을 처리하고 결과를 반환하는 Sevlet 클래스의 규칙을 따름.
    ==> Servlet 을 기반으로 JSP가 개발되었으며, JSP는 내부적으로 Servlet으로 변환되어 수행됨.

  • JSP의 특징.
    1)서블릿 기술을 확장해줌.
    2) 유지 관리가 용이
    3) 빠른 개발이 가능
    4) 코드의 길이가 줄어듦.

  • JSP 생명주기
    : Sevlet을 통해 사용자의 요청을 받고 처리하여 가공된 html 문서를 브라우저에 결과로 전달.
    : 사용자요청 → .jsp → 번역 →.java →컴파일 →.class →로딩및 초기화 → 실행 →응답 → 소멸


스크립트 태그

:<%......%> 사용
: JSP 페이지가 서블릿 프로그램에서 서블릿 클래스로 변환할 때 사용
==> 자바 코드 부분만 스크립트 태그로 처리하고 나머지는 html 코드 또는 일반 텍스트로 간주.

1. 선언문 태그

  • <%!.... ;%>
    : 자바 변수나 메소드 정의

2. 스크립틀릿 태그

  • <%......%>
    : 자바코드로 이루어진 로직 부분 표현
    : out 객체 없이 쉽게 html 응답 만들기 가능.
    : 변수 선언만 가능.

3. 표현문 태그

  • <%=...%>
    : 처리 결과를 문자열 형태로 출력
    : 숫자, 문자, 불린등의 기본타입과 객체타입도 사용가능.

액션태그

: 서버나 클라이언트에게 행동을 명령하는 태그
: JSP페이지에서 페이시 사이의 관계 제어
: 다른 페이지의 실행 결과 내용을 현재 페이지에 포함.
: <jsp: ...../>

1. forward

  • <jsp:forward page="파일이름"/>
    : 다른페이지로 이동하는 태그
    : 출력버퍼에 저장된 내용을 모두 삭제하고 프로그램의 제어권 이동.
    : page에는 같은 디렉터리에 있는 파일이면 이름만쓰고 그렇지 않다면 전체 URL을 작성해줘야함.

2. include

  • <jsp:include page= "파일이름" flush:"false"/>
    : 현재 페이지에 종속적으로 포함되는 하위 파일로 이동할때 사용.
    : 제어권은 현재페이지에 유지됨.
    : flush 를 true로 하면 설정한 파일로 제어가 이동할 때 현재 페이지가 지금까지 버퍼에 저장한 결과를 처리하고 넘어감. default= false

3. param

  • <jsp:param name= "매개변수명" value= "값"/>
    : 현재페이지에서 다른페이지로 정보를 전달할 때 사용.
    : 단독으로 사용할 수 없고 forward나 include 태그 내부에 사용.
    : 여러개 사용가능.

4. 자바빈즈

: 동적 콘텐츠 개발을 위해 자바 코드로 로직을 작성.
: 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 문 없이 사용가능.
: 스크립틀릿태그나 표현문태그에 선언하거나 직접호출하여 사용가능.

1. request (HttpServletRequest request)

: 사용자 요청의 매개변수에 대한 정보 저장
: 사용자와 서버에 대한 정보 읽기
: 사용자 요청 헤더 및 쿠키정보 읽기.
: http 요청메세지의 내용을 참조하기위한 메소드 제공.
: 메시지의 헤더 정보를 얻어오기 위한 메소드와 바디 정보를 위한파라미터 관련 메소드로 구성됨.
=>주요메소드

  • getParameter(String name) : 파라미터값 가져오기
  • getParameterValues(String name) : 값이 여러개인 (array, vector등) 파라미터값 가져오기
  • getParameterNames()
  • getHeaderNames()
  • getCookies()

2. response (HttpServletResponse)

: 요청에 대한 응답을 저장
: 정보를 담고 페이지 이동하는 역할
: 처리 결과로 응답 메세지를 구성하기 위한 다양한 메소드를 제공.
: 주로 메세지의 헤더정보를 얻기위한 메소드, 응답컨텐츠 관련 메소드, 페이지 이동 관련 메소드로 구성.
: 헤더 정보 관련 메소드중 set계열은 데이터 업데이트 기능을 add계열은 데이터를 추가하는 기능.
=> 주요메소드

  • setContextType() : 문자열 형태의 type에 지정된 MIME type 으로 content type 을 설정함.
  • sendRedirect(String url)
    : forward 와 거의유사하지만 페이지 이동시 request, response 객체가 새로 생성되어 원래 요청에 있던 객체는 전달되지 않음.(1회용)
    ==> 페이지 강제이동 (이동시 문자 인코딩을 알맞게 설정해야함.)
    html = <a></a>태그
    javascript = location 객체
    jsp = response.sendRedirect()

3. out (javax.servlet.jsp.JspWriter)

: 페이지에 출력할 내용.
: javax.servlet.jsp,JspWriter객체의 참조변수
: 버퍼 관련 메소드와 출력관련 메소드로 구성.
: print(), write() 를 사용하면 JSP에서 생성한 결과를 HTTP 응답메시지의 body 부분에 추가하여 사용자에게 전달.
: <% out.print(내용) %> = <%=내용 %>
=>주요메소드

  • print(String str)/println(String str) : str 을 웹 브라우저에 출력
  • getBufferSize() : 현재 출력버퍼의 크기 반환
  • getRemaining() : 현재 남아있는 출력버퍼의 크기 반환.
  • clearBuffer() : 현재 출력 버퍼에 저장된 내용을 그냥 비움.
  • flush() : 출력버퍼에 저장된 내용을 브라우저에 전송하고 비움.
  • close()

4. session (javax.servlet.http.HttpSession)

: 브라우저의 정보를 유지하기 위한 기능 제공.(사용자와 서버의 관계를 유지)
: http프로토콜의 비연결 문제를 해결하기 위해 등장.
: http요청 메시지로 부터 전달된 파라미터 값을 서버에 저장할 수 있도록 지원함.
: 페이지간의 연결이 끝난 후에도 정보 저장.
: 쿠키는 사용자의 컴퓨터에 로컬파일로 저장되어 사용자에게 편의를 제공하지만 보안성이 떨어지고,
세션은 서버에 저장이 되어 보안성이 확보된다는 점에서 쿠키보다 많이 사용됨.

5. application (javax.servlet.ServletContext)

: 어플리케이션의 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에 대한 실제 시스템 경로반환.
    ===>위의 4개 메소드는 서비스 실행기간 동안 유지될 필요가 있는 이름-값 쌍 형태로 정의 관리하기 위함. getRealPath() 는 업로드 파일이나 이미지 저장할때 사용(서버가 동자되는 시스템의 절대 경로가 필요해서)

6. pageContext (javax.servlet.jsp.PageContext)

: 응답 페이지 실행에 필요한 context 정보를 저장.

7. page (java.lang.Object)

: 특정 페이지의 서블릿객체 (인스턴스)

8. config (javax.servlet.ServletConfig)

: 환경설정 정보 저장

9. exception (java.lang.Throwable)

: 예외 발생 처리

0개의 댓글