티스토리 뷰
GET방식 vs POST방식
HTTP 프로토콜에서 GET 방식과 POST 방식은 클라이언트와 서버 간의 데이터 전송 방법 중 가장 많이 사용되는 두 가지. 각 방식의 차이점과 사용 예시는 다음과 같다.
GET 방식과 POST 방식의 차이
구분 | GET | POST |
데이터 전달 | URL 뒤에 파라미터를 추가하여 전달 | HTTP 요청 본문(body)에 데이터를 추가하여 전달 |
데이터 길이 | URL 길이에 제한이 있음 (2,048자 이하) | HTTP 요청 본문(body)의 크기에 제한이 있음 (2GB 이하) |
보안성 | URL에 데이터가 노출되기 때문에 보안성이 낮음 | HTTP 요청 본문(body)에 데이터가 포함되어 전달되므로 보안성이 높음 |
캐싱 | 브라우저에서 자동으로 캐싱됨 | 브라우저에서 캐싱되지 않음 |
사용 상황 | 데이터 조회, 사용자가 입력한 정보가 노출되어도 괜찮을 때 | 데이터 추가, 수정, 삭제, 사용자가 입력한 정보가 노출되지 않아야 할 때 (로그인 등) |
GET 방식 예시
- 쿼리스트링 사용 예:
<form action="http://example.com/search" method="GET">
<input type="text" name="query">
<button type="submit">검색</button>
</form>
- 검색어 "cat"을 입력하면 URL은 다음과 같이 구성됨: http://example.com/search?query=cat
- 활용 예:
- 데이터 조회 (예: 검색 기능)
- 페이지 이동 (브라우저에서 다른 페이지로 이동)
- 작은 데이터 전송 (예: 쿠키)
POST 방식 예시
- 쿼리스트링 사용 예:
<form action="http://example.com/login" method="POST">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit">로그인</button>
</form>
- 사용자가 입력한 사용자 이름과 비밀번호는 HTTP 요청 본문(body)에 포함되어 전송됨. URL은 그대로 http://example.com/login으로 유지됨.
- 활용 예:
- 회원가입, 로그인 (사용자가 입력한 정보 전송)
- 게시글 작성 (게시글 내용 전송)
- 파일 업로드 (파일 데이터 전송)
요약
- GET 방식: URL에 데이터를 포함하여 전송, 보안성이 낮고 캐싱이 가능, 주로 데이터 조회와 같은 간단한 작업에 사용.
- POST 방식: HTTP 본문에 데이터를 포함하여 전송, 보안성이 높고 캐싱되지 않음, 주로 데이터 추가, 수정, 삭제와 같은 중요한 작업에 사용.
GET 방식으로 전송하는 한글 데이터의 인코딩 문제를 해결하기 위한 방법
문제 설명
GET 방식으로 한글 데이터를 서버에 전송할 때 한글 데이터가 깨지는 문제가 발생할 수 있다. 이를 해결하기 위해 Tomcat의 server.xml 파일에서 인코딩 설정을 변경해야 한다.
해결 방법
Tomcat의 server.xml 파일에서 Connector 설정에 URIEncoding 속성을 추가하여 인코딩 방식을 지정.
기존 설정:
<Connector connectionTimeout="20000" maxParameterCount="1000"
port="8007" protocol="HTTP/1.1" redirectPort="8443" />
변경된 설정:
<Connector connectionTimeout="20000" maxParameterCount="1000"
port="8007" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="EUC-KR"/>
설명
URIEncoding 속성을 추가하여 인코딩 방식을 설정하면 GET 요청으로 전달되는 URI의 인코딩 방식을 지정할 수 있다.
- URIEncoding="EUC-KR": 한글 데이터를 EUC-KR 인코딩 방식으로 처리.
JSP에서 페이지에 다른 페이지를 포함하는 방법: include
여러 화면을 개발할 때, 모든 페이지에 중복되는 부분을 각각 수정하는 것은 번거로울 뿐만 아니라 실수로 일부를 빠뜨릴 수도 있다. 이를 방지하기 위해 공통 부분을 별도의 페이지로 만들어 <include>를 사용해 각 페이지에 삽입한다. 이렇게 하면 공통 부분을 수정할 경우 해당 페이지만 수정하면 모든 화면에 자동으로 적용되어 유지보수가 훨씬 용이해진다.
JSP (JavaServer Pages)에서 다른 페이지나 파일을 현재 페이지에 포함시키는 방법은 주로 두 가지가 있다:
- 정적 포함 (Static Include)
- 동적 포함 (Dynamic Include)
1. 정적 포함 (Static Include)
정적 포함은 컴파일 시점에 포함된 페이지의 내용을 현재 페이지에 그대로 복사한다.
이를 위해 <%@ include file="file.jsp" %> 지시자를 사용.
사용법:
<%@ include file="header.jsp" %>
<%@ include file="footer.jsp" %>
- 장점: 컴파일 시점에 포함되기 때문에 성능이 좋다.
- 단점: 포함된 파일이 변경되면, 이를 포함하는 페이지를 다시 컴파일해야 한다.
2. 동적 포함 (Dynamic Include)
동적 포함은 런타임 시점에 포함된 페이지의 내용을 현재 페이지에 삽입합니다.
이를 위해 jsp:include 액션 태그를 사용합니다.
사용법:
<jsp:include page="header.jsp" />
<jsp:include page="footer.jsp" />
- 장점: 포함된 파일이 변경되더라도 이를 포함하는 페이지를 다시 컴파일할 필요가 없습니다.
- 단점: 런타임 시점에 포함되기 때문에 약간의 성능 저하가 있을 수 있습니다.
차이점 요약
특징 | 정적 포함 (<%@ include %>) | 동적 포함 (<jsp:include />) |
포함 시점 | 컴파일 시점 | 런타임 시점 |
포함 방식 | 파일 내용을 그대로 복사 | 요청을 통해 포함 |
성능 | 더 좋음 | 약간 낮음 |
파일 변경 시 반영 | 포함하는 페이지를 다시 컴파일해야 함 | 자동으로 반영됨 |
예제
정적 포함 예제:
<%@ include file="header.jsp" %>
<body>
<h1>Welcome to My Website</h1>
<p>This is the main content of the page.</p>
</body>
<%@ include file="footer.jsp" %>
동적 포함 예제:
<jsp:include page="header.jsp" />
<body>
<h1>Welcome to My Website</h1>
<p>This is the main content of the page.</p>
</body>
<jsp:include page="footer.jsp" />
JSP의 주요 태그 요약
1. 스크립트릿 (Scriptlet) <% %>
- 정의: JSP 페이지에서 자바 코드를 삽입할 때 사용.
- 용법: 자바 코드 작성
<%
int count = 10;
String message = "Hello, JSP!";
%>
2. 표현식 (Expression) <%= %>
- 정의: 자바 표현식을 평가하고 그 결과를 HTML 페이지에 출력할 때 사용.
- 용법: 평가 결과 출력
<%= "Hello, World!" %>
<%= 1 + 2 %>
- 예제:
<p>The sum of 2 and 3 is <%= 2 + 3 %>.</p>
3. 지시자 (Directive) <%@ %>
- 정의: JSP 페이지에 대한 전역 설정을 정의.
- 주요 유형:
1)페이지 지시자 (Page Directive): 페이지의 전반적인 설정을 정의.
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
2) include 지시자 (Include Directive): 정적 포함을 통해 다른 파일의 내용을 포함.
<%@ include file="header.jsp" %>
3) taglib 지시자 (Taglib Directive): 커스텀 태그 라이브러리를 선언.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
4. 선언문 (Declaration) <%! %>
- 정의: JSP 페이지에 메서드나 변수를 선언할 때 사용. 선언된 내용은 JSP 페이지의 서블릿 클래스의 멤버로 포함.
- 용법: 메서드 및 변수 선언
<%!
private int counter = 0;
public void incrementCounter() {
counter++;
}
%>
5. 주석 (Comment)
- 정의: JSP 코드에 주석을 추가하여 코드의 설명이나 메모를 작성할 때 사용.
- 유형:
1) HTML 주석: 클라이언트에게도 전달됩니다.
<!-- This is an HTML comment -->
2) JSP 주석: 서버 측에서만 보이고 클라이언트에게 전달되지 않는다.
<%-- This is a JSP comment --%>
요약
- <% %> (스크립트릿): JSP 페이지에 자바 코드를 삽입
- <%= %> (표현식): 자바 표현식을 평가하고 결과를 출력
- <%@ %> (지시자): JSP 페이지에 대한 전역 설정 정의
- <%@ page %>: 페이지 설정
- <%@ include %>: 정적 포함
- <%@ taglib %>: 커스텀 태그 라이브러리 선언
- <%! %> (선언문): 메서드나 변수 선언
- 주석:
- <!-- -->: HTML 주석
- <%-- --%>: JSP 주석
'개발자교육' 카테고리의 다른 글
24_07_16 오늘의 수업내용 (0) | 2024.07.19 |
---|---|
24_07_18 오늘의 수업 (0) | 2024.07.19 |
24_07_12 오늘의 수업내용 (0) | 2024.07.12 |
24_07_11 오늘의 수업내용 (0) | 2024.07.11 |
24_07_10 오늘의 수업내용 (0) | 2024.07.10 |
- Total
- Today
- Yesterday
- 반복문
- 테이터베이스 설계
- 참조타입vs기본타입
- resultsetimpl
- 필드 초기화와 사용
- 클래스의 구성 멤버
- javascript자료형
- 데이터베이스(mysql)
- jdbc
- 함수범위vs블록범위
- 오버로딩vs오버라이딩
- 배열(Array)
- stored program
- 호이스팅(hoisting)
- JavaScript
- 변수표기법
- http 프로토콜:get vs post
- jsp의 주요 태그
- cte ( common table expression )
- 조건문
- Java
- 문자열비교메서드
- ㅎgroupbyvs윈도우함수
- 가변 길이 매개변수와 리턴
- 데이터변환함수
- get한글인코딩
- let-const-var
- 제어흐름함수
- 객체 지향 프로그래맹의 특징(캡슐화|상속|다형성)
- 뷰(view)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |