브래의 슬기로운 코딩 생활
JAVA 웹 프로그래밍 3주차 정리 (Servlet & JSP) 본문
Servlet & JSP
Tomcat 서버 충돌
Tomcat 10.1.x vs Tomcat 9.x.x
Tomcat 10.1.x
- servlet 6.x 지원
- jakarta 패키지 사용
- import jakarta.servlet.http.*;
- import jakarta.servlet.annotation.*;
Tomcat 9.x.x
- servlet 4.x
- javax 패키지 사용
- import javax.servlet.http.*;
- import javax.servlet.annotation.*;
build.gradle
dependencies {
compileOnly('jakarta.servlet:jakarta.servlet-api:6.0.0') // Tomcat 10 버전
...
// compileOnly 'javax.servlet:javax.servlet-api:4.0.1' //Tomcat 9 버전
JSP 구성 요소
Directive, 지시자
정의
JSP 페이지의 속성을 지정하는데 사용하는 태그
웹 컨테이너가 처리 방법을 결정하는데 필요한 정보를 제공
종류
<%@ page ~ %> : 페이지 관련 다양한 프로퍼티를 지정한다.
<%@ include ~ %> : 변환 시점에 현재 페이지에 포함할 코드나 문서를 지정한다.
<%@ taglib ~ %> : JSP에서 이용 가능한 태그 라이브러리를 지정한다.
한글 문제 해결
해결 방법
Run/Debug Configuations의 'VM options' 항목
-Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8으로 지정
Actions 검색 (Ctrl + Shift + a)하여 'Edit VM Options' 항목 선택
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8
JSP 페이지에서 한글 처리
응답(클라이언트에게 보낼 때)
<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>
요청(클라이언트의 요청을 읽을 때)
<% request.setCharacterEncoding(“utf-8”) %>
사용자 요청 처리
HTTP 개요
분산되고, 협업가능한 하이퍼미디어 정보 시스템을 위한 통신규약으로 클라이언트의 요청과 서버의 응답을 처리하는 클라이언트-서버 방식을 사용한다.
클라이언트 요청 방식 비교
GET 방식 (기본값)
- 서버에 있는 정보를 가져오기 위해 설계된 방법이다. HTML, 이미지 등을 웹 클라이언트에게 가져올 때 사용된다.
- 서버로 전달할 수 있는 데이터 크기는 최대 2048 Byte까지이다.
- 서버로 데이터를 전송하는 경우 URL을 이용한다. 형식은 URI?“속성=값&속성=값 ... ”
- 요청 URL에 값들이 노출되기 때문에 보안 문제가 발생할 수 있다.
- 결과페이지를 북마크 또는 즐겨찾기에 저장할 수 있다.
- 웹 클라이언트들이 결과를 캐쉬에 저장할 수 있다.
POST 방식
- 서버로 정보를 전달하기 위해 설계된 방법이다. HTML 폼에 입력한 내용을 서버에 전달할 때 사용된다. 요청이 서버상에 존재하는 데이터들의 수정하는 경우 항상 사용되어야 한다.
- 서버에 전달할 수 있는 데이터 크기에 대한 제한이 없다.
- URL이 간결해진다.
- URL에 전달하려는 정보 값이 표시되지 않기 때문에 상대적으로 높은 보안성을 제공한다.
- 특별한 문자들 또는 업로드 파일 등을 전송할 수 있다.
- 웹 클라이언트들이 결과를 캐쉬에 저장할 수 없다.
'2-2 > JAVA 웹 프로그래밍 실무' 카테고리의 다른 글
JAVA 웹 프로그래밍 7주차 정리(EL/JSTL) (2) | 2023.10.14 |
---|---|
JAVA 웹 프로그래밍 6주차 정리 (JSP) (0) | 2023.10.11 |
JAVA 웹 프로그래밍 4주차 정리 (Servlet) (0) | 2023.09.28 |
JAVA 웹 프로그래밍 2주차 정리 (JAVA 웹 프로그래밍) (2) | 2023.09.13 |
JAVA 웹 프로그래밍 1주차 정리 (평가 계획, 개발 환경 구축) (0) | 2023.09.06 |