2022-07-26

강아람·2022년 7월 26일
0

Kakao Cloud School

목록 보기
16/30
post-thumbnail

-복습-

  • Internet 상에서 HTTP를 사용하는 WWW(World Wide Web) Service

C/S 구조

  • 상대적으로 다수의 Client가 소수의 Server에 접속해서 Service를 제공받는 형태

HTTP Request

  • request method : GET, POST, PUT, DELETE
    1. GET 방식
      • browser 주소창에 직접 url을 입력한 후, request 전달
      • <a href="~">를 click해서 request 전달
      • <form>의 method 속성을 'GET'으로 지정하여 request 전달
    2. POST 방식
      • <form>의 method 속성을 'POST'로 지정하여 request 전달

▶ GET : Client의 추가적인 data를 'Query String'이라는 형식으로 server에 전달하는데 String 길이의 제한으로 인해 정상적인 전달이 되지 않을 수 있음
▶ POST : Client의 추가적인 data를 request 안에 포함시켜 server에 전달하기 때문에 길이 제한이 없고, url에 직접적으로 노출되지 않음


정적 Web(Static Web)

  • HTTP Request Message : Web Server가 가지고 있는 Static Resource(html, css, js, image...)를 요청
    1) request line
    2) request header
    3) request body

  • HTTP Response Message
    1) status line
    2) response header
    3) response body

동적 Web(Dynamic Web)

  • web server 측에서 web client가 요청한 program을 실행한 후 그 결과를 HTTP Response로 돌려준다.
  • CGI(Common Gateway Interface ▶ Process 단위
    • Client가 request할 때마다 process가 생성되어 요청에 대한 데이터 처리를 수행하기 때문에 자원의 고갈이 빨라짐 -> Thread 단위로 처리)

구조


Apache Tomcat

(HTTP Server + Servlet Container)

Web 상에서 동작하는 java program을 만들기 위한 규칙

  • Servlet : HTTPServlet 을 상속해서 구현 -> eclipse의 도움을 받아 Servlet 생성

Servlet 실행 순서

Servlet 단점

  • response에 포함될 결과 HTML을 Java program 내에서 기술 => 노동 집약적

▶ JSP


JSP

JSP 동작

1) Client가 request(.jsp 호출)
2) web server가 request를 servlet container에 전달(forwarding)
3) jsp 파일을 servlet(java)으로 translation
4) servlet 파일을 class로 compile (servlet 객체를 만들기 위한 class)
5) Thread가 이 class로 servlet instance를 만들어 servlet method인 service()를 호출

  • JSP의 성능이 훨씬 좋고, 구현이 더욱 간편하기 때문에 Servlet을 사용하지 않게 됨

JSP 구조

  • HTML + JSP Element(JSP 요소)
  • JSP Element : 특정한 표기법으로 HTML 안에 삽입
    • 주석 <%-- 주석 --%> : 주석
    • Directive <%@ 지시어 %>
      • <%@ page ~ %> : setContentType
    • Declaration <%! 변수, method %> : 변수, 메소드의 선언, 정의
      • servlet class의 field와 method
    • Scriptlet <% 코드 %> : 일반적인 자바 Logic code
      • _jspService()로 들어감
    • Expression <%= 식 %>
      • out.println()에 들어감
  • JSP Element로 구성된 HTML 파일이 한 번에 out.println()으로 전달됨
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	이름을 입력하세요. <br />
	<form action="http://localhost:8080/html/hello.jsp" method="post">
		이름 : <input type="text" name="userName" /><br />
		<input type="submit" value="서버로 전송" />
	</form>
</body>
</html>
<%@ page language="java" 
	contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    import="java.util.ArrayList"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
<%	request.setCharacterEncoding("UTF-8");
	String name = request.getParameter("userName"); // 내장 객체가 존재하기 때문에 request 사용 가능 %>
	받은 데이터는 : <%= name %>
	
</body>
</html>

JSP의 내장객체

JSP 코드 내에서 사용할 수 있는 객체

  • request : HttpServletPequest class type의 객체
  • response : HttpServletResponse class type의 객체
  • out : PrintWriter 객체
  • session : HttpSession class 객체 - web client당 1개씩 할당됨
    • client의 작업을 지속적으로 tracking (Servlet에서는 직접 코드로 할당해야 했음)
  • application : ServletContext 객체 - 모든 servlet에 의해 공유되는 객체
  • page : this

Layered Architecture

프로그램을 역할별로 나누어 만들자!

Presentaion Layer
Business Logic Layer
Persistence Layer
Database Layer

▶ MVC Pattern

software system 3가지 type의 component로 분할하는 소프트웨어 패턴

Model

  • Domain Model : 데이터(IO, DO, DTO, Entity)
  • Business Model : 조직(Service)

View

사용자 interface 담당

  • JSP, HTML

Controller

시스템의 흐름 제어

  • Login
  • 도서 검색

0개의 댓글