날아라쩡글이의 블로그입니다.

Tomcat 연결(응답, 요청) 본문

중앙 HTA (2106기) story/JSP story(Apache)

Tomcat 연결(응답, 요청)

날아라쩡글이 2021. 11. 9. 22:58
반응형

Apache.org에서 Tomcat을 다운받고 설치하였고, 글씨를 encoding으로 UTF-8으로 변경을 전부 해주었다. 
모듈의 path는 localhost:8080 / sample  /  home.jsp로 webserver주소와/ 웹프로젝트의 식별자로 배포된이름 / jsp의 이름을 설정해주었다. 

http란 hyper text transfer protocal로 브라우져가 요청 주체가 되었고, 클리아이언트 역활을 한다. 
웹서버는 tomcat으로 제공주체, 분석처리, html으로 응답을 제공한다.

  • 정적 html content는 요청하는 클라이언트가 상관없이 시간은 상관없이, 같은 내용이 나온다. 
  • 동적 html content는 요청하는 클리어언트에 따라서 로그인, 사용자, 시간, 그리고 각기 다른 내용의 html의 로그인 화면을 보여준다. 

web은 개별요청으로 서버에 보내주며, 서버는 요청을 처리하고 응답이라고 불리우는 응답을 제공한다. 
http로 규정된 메세지에 대한 프로토콜으로 클라이언트서버와 웹서버가 대화를 진행한다고 할 수 있다. 

한개의 브라우저에는 요청메세지와 응답메세지의 대화가 이뤄지고 있다. 

클라이언트 

  • 보통 사용자의 브라우저다. 
  • 브라우저는 항상 요청을 보내는 개체다.
  • 브라우저는 결코 서버가 될 수 없다.
  • 웹 페이지를 표시하기 위해, 브라우저는 페이지의 html문서를 가져오기 위한 요청을 전송한 뒤 , 파일 구문을 분석하여 컨텐츠를 화면에 표시한다. 

웹서버

  • 클라이언트의 요청에 대한 응답을 제공하는 서버다. 
  • 서버는 클라이언트의 요청을 처리하고, 적절한 응답을 제공한다. 

http의 특징

  • http는 간단하다. 
    • http는 사람이 읽을 수 있으면서 간단하게 고안되었다. 
    • http메세지들은 사람이 읽고, 이해할 수 있으며, 테스트하기 쉽다.
  • http는 확장가능하다. 
    • http헤더는 http를 확장하고 실험하기 쉽게 설계되어있다. 
    • 클라이언트와 서버가 새로운 헤더에 대한 간단한 합의만 한다면, 언제든지 새로운 기능을 추가할 수 있다. 
  • http는 상태가 없지만, 세션은 있다. 
    • http는 상태를 저장하지 않는다.(Stateless프로토콜), 상태를 유지않는 프로토콜이다.
    • http의 핵심은 상태가 없는 것이지만, http쿠키는 상태가 있는 세션을 만들도록 지원한다. 
  • http의 메세지 
    • http메세지는 클리이언트와 서버가 서로 교환하는 데이터이다. 
    • 요청메세지 
      • 클라이언트 (웹 브라우져)가 서버로 보내는 메세지이다. 
      • 요청 메세지 : Request Header + 빈줄 + Request Body로 구성되어 있다. 
      •  
      • Request Header : 서버전달 데이터 포함한다.
        • 요청메세지 관련 부가적인 정보를 포함하고 있다.
        • header의 method 가 get이면 body부가 존재하지 않는다. 
        • header의 method 가 post이면 body부가 존재한다. 
      • 빈줄 : 구별하는 선
      • Request Body : body부를 담을 것이라면 post로 변경 후 입력폼에서 값을 입력한다. 
        • get 으로 메소드가 지정되면 주소신청url 보낸다. 링크를 클릭하는 것이다.
          •  요청메세지로 서버전송을 한다. 
          • name : value으로 값을 전송하여, name_value쌍으로 주고 받는다.
  • 응답메세지
    • 서버가 클라이언트로 보내는 메세지 
    • 응답 메세지 = Response Header + 빈줄 + Response Body
    • 응답 헤더부 = 응답라인 + 응답헤더정보
    • header 은 응답라인과 응답헤더부 로 나뉜다.
      응답라인 : http응답코드가 존재한다.
      응답 헤더부 : Content의 부가적인 정보가 존재한다. web 서버의 정보가 들어있다. 
    • 응답코드 부분
      • 100 : 요청 처리 중이다. 거의 볼 수 없다.
      • 200 : 요청 처리 완료 , 성공적으로 완료했다. 
      • 300 : 요청한게 다른 곳으로 옮겨감, 다른 곳으로 이전되었다. 
        • 재요청 URL을 응답으로 보냄
        • insert, update, delete
      • 400 : 클라이언트의 요청이 잘 못되었다. 
        • 404 메세지 : 권한이 없다는 error메세지
      • 500 : 서버에러 (요청처리 중 오류 발생함)
      • 100 / 300은 브라우져끼리 보낸다.
    •  
    • 서버는 클라이언트의 요청이 접수되면 요청객체와 응답객체를 생성한다.
    • 클라이언트가 서버로 보낸 요청메세지의 모든 정보를 분석해서 요청 객체에 저장한다. 
      • 요청객체에는 그 정보를 조회하는 메소드가 포함되어 있다.  
    • 서버는 클라이언트의 요청을 처리할 JSP를 찾아서, JSP의 _jspService(requst, response)메소드를 실행한다. 
      앞에서 생성한 요청객체와 응답객체를 request와 response에 각각 전달한다.
    • JSP의 스크립틀릿에서는 request와 response로 전달받은 요청객체와 응답객체 사용할 수 있다. 

JSP

  • Java Server Pages
  • 동적 웹 컨텐츠를 응답으로 제공하는 웹애플리케이션을 개발할 때 사용되는 자바의 웹 기술
    • 동적 웹 컨텐츠 = Html, Xml, JSON, 바이너리 파일
  • JSP는 Html태그로 구성된 문서내에서 자바코딩이 가능한 파일이다. 
    • 자바코딩이 가능하기 때문에 DB Acess작업, 동적으로 태그를 생성하는 것도 가능
  • JSP를 사용해서 개발된 웹 애플리케이션을 실행하기 위해서는 웹 애플리케이션 서버가 필요하다.
    • 대표적인 웹 애플리케이션 서버 
      • Tomcat, Jetty, Jboss, Weblogic, JEUS

JSP의 실행 순서

  1. 브라우저의 주소창에 JSP의 실행을 요청하는 URL을 적는다. 
  2. 브라우저는 주소창의 URL이 포함된 HTTP 요청메세지를 만들어서 서버로 보낸다. 
  3. Tomcat의 브라우저의 요청메세지를 접수받는다. 
  4. 요청객체 (HttpServletRequest) 와 응답객체(HttpServletResponse)를 생성한다. 
    1. 요청메세지를 분석해서 요청객체에 전부 저장한다.
    2. 응답메세지 제공을 책임질 응답객체도 함께 생성한다. 
  5. Tomcat이 요청 URL을 분석해서 JSP 파일을 찾아서 로드한다. 
  6. JSP파일을 java파일로 변환한다. 
  7. java파일을 컴파일해서 class파일을 만든다.
  8. 컴파일된 class파일 로드해서 객체를 생성한다.
    • home_jsp.class
      home_jsp.java를 삭제시 다시 생기는 것이다. 
  9. Tomcat이 _jspService(HttpServletRequest request, HttpServletResponse response)를 실행한다.
    • 실행시 4번에서 생성된 요청객체와 응답객체를 각각 request와 response변수에 전달한다. 
      • _jspService 메소드는 jsp에서 진입점이 되는 메소드다. 
      • _jspService 메소드에는 jsp파일에서 작성한 모든 자바코드와 html태그가 포함되어 있다. 
      • jsp의 실행을 요청하는 것은 결국, _jspService 메소드의 실행을 요청하는 것이다.
      • jsp 파일을 작성한다는 것은 결국, _jspService 메소드에 포함될 코드 및 태그를 작성하는 것이다.
  10. _jspService 메소드가 실행되면 응답컨텐츠가 스트림을 통해서 클라이언트로 보내진다. 
  11. 브라우저는 응답메세지에 포함된(응답컨텐츠)를 화면에 표시한다. 

Dynamic Web Project 구성

  • _jspService
    • java의 main 부분이다.
    • 진입점이 되는 메소드이다.
    • 모든 자바코드란 html태그가 포함된다. 
    • jsp의 진입점이 되는 메소드이다. 
    • jsp의 파일이 실행되고, 파일이 작성되는 곳이다. 메소드의 실행요청 코드 및 태그를 작성하는 곳이다. 
      • out.write으로 내보내진다

JSP의 구성요소

  • 디렉티브 (지시어)
    • <%@ jsp 페이지 설정 정보%>
    • <%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
      • Jsp page에 대한 설정정보를 정의하는 지시어이다.
      • language : JSP에서 사용하는 프로그래밍 언어는 java이다.
      • contentType : 응답으로 내려줄 켄텐츠 타입 , 필수로 지정해야한다. 
        • default 값은 text/html; charset=ISO-8859-1이다.
        • 한글이 전부 깨지는 상태이다. 
        • 반드시 지정해주어야한다. UTF-8과 EUC-kr ->독자적인 방식 한글가능하다.
        • 응답컨텐츠의 타입의 html이고, 한글은 utf-8방식으로 변환해라
      • pageEncoding 
        • default 값은 ISO-8859-1 이다.
        • 어떻게 저장할지 설정하는 것이다. 
        • 한글이 포함되어 있기 때문에 UTF-8 으로 설정해주어야한다. 
        • JSP 파일을 저장할 때 한글은 UTF-8방식으로 변환해서 저장해라.
    • <%@ include file="common/header.jsp" %>
      • Jsp페이지에 포함시킬 다른 Jsp페이지를 정의하는 지시어이다.
      • jsp에 common폴더의 header.jsp를 포함시킨다.
    • <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      • Jsp페이지에서 사용할 태그, 라이브러리 를 정의하는 지시어이다.
    • JSP 페이지에 대한 설정정보를 정의하는 JSP의 구성요소다.
  • 스크립틀릿
    • <%
                 스크립틀릿으로 표시된 부분에는 자바코딩 가능하다.
      %>
      • <%
          BoardService service = new BoardService();

          Board board = service.getBoartdDetail(10);
        %>
      • 자동으로 실행할 _jspService에 포함될 자바코드로 변환된다.
      • JSP페이지에서 java 코딩영역을 생성하는 JSP의 구성요소다
  • 표현식
    • <%=변수명 혹은 반환값이 있는 메소드%>
    • 표현식의 포함된 변수 혹은 반환 값이 있는 메소드가 반환된 값을 출력에 포함시켜서 브라우저로 전달한다. 
    • <td><%=product.getNo() %></td>
    • 변수의 값을 출력에 포함시킬 때 사용하는 JSP의 구성요소다.
  • 선언식
    • <%! 변수 선언 혹은 메소드 정의%>
    • 쓸일이 절대 없어야한다.
    • 스크립틀릿이나 표현식에서 사용가능한 메소드를 작성할 때 사용하는 JSP의 구성요소다.
    • JSP가 자바로 변환시 필드나 메소드로 추가되는 것을 정의한다. 
    • 별도의 멤버변수 정적메소드를 선언한다. 
    • 그러나 멤버변수로 선언하는 것이다. 
      • 절대 선언해서는 안된다. 
    • <%! private DecimalFormat df = new DecimalFormat("##,###");
      private String numberToCurrency(long number){ return df.format(number); } %>
  • 주석
    • <%--주석문--%>
    • JSP페이지의 코드를 주석처리할 때 사용하는 JSP의 구성요소이다.
    • 주석처리된 부분은 JSP코드가 java코드로 변환될 때 제외된다. 

패키지의 이름을 작설할 때에는 도메인을 역순으로 작성하는 것이 관례이다. 
클래스의 이름 제외하고는 전부 소문자로 작성한다. 

클라언트 서버는 값을 어떻게 전달할지 알아야한다. 
JSP의 내장객체 : 빌트인 객체로 자바로 변환시 _JSPService로 사용가능한다. 

JSP의 내장객체 

  • JSP 페이지가 자바로 변환될 때 _jspService 메소드에서 사용가능한 객체를 의미한다. 
  • JSP는 웹 애플리케이션 개발에 필요한 객체를 미리 생성(획득)해서 적절한 변수에 저장하고, 
    스크립트릿에서 사용가능한 상태로 초기화시켜놓는다.
  • 변수명 클래스명 설명
    request HttpServletRequest 클라이언트가 보낸 요청메세지 정보를 저장한다. 
    response HttpServletResponse 클라이언트가 보낼 응답메세지 정보를 저장한다.
    session HttpSession 세션정보를 저장한다. (로그인처리와 관련이 되어있다.)
    out JspWriter 응답컨텐츠를 클라이언트로 출력하는 스트림
    application ServletContext 웹 애플리케이션을 나타내는 객체다
    config ServletConfig 서블릿의 초기화에 필요한 정보를 저장한다. 
    pageContext PageContext JSP 페이지에 대한 정보를 저장한다.
    exception Throwable 에러정보를 저장한다(isErrorPage="ture")에서만 사용가능하다.
    page Object JSP 페이지를 구현한 자바 객체가 저장된다.
    this를 담은 자기자신이 들어가야한다.
  • JSP는 이런과정을 거친다. 
    내장객체는 8가지이다. 변수의 이름이 정해져있고, 임의대로 변경이 불가능하다. 
    이름은 관여할 수 없다. 
  • 값을 전달하는 방법은 1. get 방식 2. post방식이다. 
  • form요청 -> content가 내려온다. -> 값을 입력하는 form이 존재한다. 
    form으로 값싼 후 method="post" action="insert.jsp"
    브러우져 입력 후 전달한다. form의 입력을 통해서 전송한다.
    name으로 속성으로 간다. 
    name을 꼭 붙이고, form입력요소을 받는다.
    form만 name으로 가진다. 
  • 요청객체의 꺼내는 방법만 알면된다. 
반응형

'중앙 HTA (2106기) story > JSP story(Apache)' 카테고리의 다른 글

paging처리하기, 페이징처리하기  (0) 2021.11.12
JSP tip  (0) 2021.11.11
HttpservletRequest, HttpservletResponse  (0) 2021.11.11
post,get2가지 방식  (0) 2021.11.11
톰 캣  (0) 2021.11.08
Comments