sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

서블릿 컨테이너에서 JSP 페이지가 한글을 제대로 처리할 수 있도록 설정하려면 다음 단계를 따라야 합니다.

이는 JSP 파일, 서블릿, 웹 애플리케이션 전체에서 인코딩 설정을 올바르게 구성하는 것을 포함합니다.

 

### 1. JSP 파일에서 인코딩 설정

 

각 JSP 파일의 맨 위에 페이지 지시어를 추가하여 인코딩을 UTF-8로 설정합니다.

 

```jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

```

 

또는 XML 구문을 사용하는 경우:

 

```jsp

<jsp:directive.page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" />

```

 

### 2. 서블릿에서 요청 및 응답 인코딩 설정

 

서블릿에서 처리하는 모든 요청과 응답에 대해 인코딩을 설정합니다.

이는 `doGet`이나 `doPost` 메서드 내에서 설정할 수 있습니다.

 

```java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    request.setCharacterEncoding("UTF-8");

    response.setContentType("text/html; charset=UTF-8");

    response.setCharacterEncoding("UTF-8");

    // your code here

}

 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    request.setCharacterEncoding("UTF-8");

    response.setContentType("text/html; charset=UTF-8");

    response.setCharacterEncoding("UTF-8");

    // your code here

}

```

 

### 3. `web.xml`에 필터 설정

 

웹 애플리케이션 전체에서 인코딩 문제를 방지하기 위해 `web.xml`에 인코딩 필터를 설정할 수 있습니다.

이렇게 하면 모든 요청과 응답에 대해 인코딩이 자동으로 설정됩니다.

 

#### `web.xml`

 

```xml

<filter>

    <filter-name>CharacterEncodingFilter</filter-name>

    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <init-param>

        <param-name>encoding</param-name>

        <param-value>UTF-8</param-value>

    </init-param>

    <init-param>

        <param-name>forceEncoding</param-name>

        <param-value>true</param-value>

    </init-param>

</filter>

 

<filter-mapping>

    <filter-name>CharacterEncodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

```

 

Spring을 사용하지 않는 경우, 직접 인코딩 필터를 작성할 수 있습니다.

 

#### Custom CharacterEncodingFilter

 

```java

import javax.servlet.*;

import java.io.IOException;

 

public class CharacterEncodingFilter implements Filter {

    private String encoding;

 

    public void init(FilterConfig filterConfig) throws ServletException {

        encoding = filterConfig.getInitParameter("encoding");

        if (encoding == null) encoding = "UTF-8";

    }

 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

            throws IOException, ServletException {

        request.setCharacterEncoding(encoding);

        response.setCharacterEncoding(encoding);

        chain.doFilter(request, response);

    }

 

    public void destroy() {

        // nothing to do

    }

}

```

 

그리고 이를 `web.xml`에 등록합니다:

 

```xml

<filter>

    <filter-name>CharacterEncodingFilter</filter-name>

    <filter-class>your.package.CharacterEncodingFilter</filter-class>

    <init-param>

        <param-name>encoding</param-name>

        <param-value>UTF-8</param-value>

    </init-param>

</filter>

 

<filter-mapping>

    <filter-name>CharacterEncodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

```

 

### 4. 데이터베이스 연결 시 인코딩 설정 (Optional)

 

만약 데이터베이스와의 통신에서도 인코딩 문제가 발생한다면, 데이터베이스 URL에 인코딩 설정을 추가합니다.

예를 들어, MySQL을 사용하는 경우:

 

```properties

jdbc:mysql://localhost:3306/yourdatabase?useUnicode=true&characterEncoding=UTF-8

```

 

### 요약

 

1. JSP 파일에서 인코딩을 UTF-8로 설정합니다.

2. 서블릿에서 요청 및 응답의 인코딩을 UTF-8로 설정합니다.

3. `web.xml`에 인코딩 필터를 설정하여 모든 요청과 응답에 대해 인코딩을 강제합니다.

4. (필요한 경우) 데이터베이스 연결 시 인코딩 설정을 추가합니다.

 

이렇게 설정하면 JSP 페이지에서 한글이 제대로 표시되며, 클라이언트와 서버 간의 통신에서 인코딩 문제가 발생하지 않습니다.

번호 제목 글쓴이 날짜 조회 수
63 [ChatGPT] javax.* 패키지와 jakarta.* 패키지의 혼합 사용 방안 황제낙엽 2025.04.15 27
62 [ChatGPT] *.servlet.http.HttpServlet 클래스를 사용할 수 있는 주요 WAS 목록 황제낙엽 2025.04.14 36
61 jakarta.servlet 패키지를 이용한 File Upload 구현 (2024.03.03, Servlet 5.0) 황제낙엽 2025.01.02 177
60 [ChatGPT] Java EE가 Jakarta EE로 전환 황제낙엽 2025.01.01 239
59 [ChatGPT] <jsp:include>에서 flush="true"를 설정시의 몇 가지 문제점 과 대안 황제낙엽 2024.07.19 208
» [Copilot] JSP, Servlet, web.xml, mysql 한글 설정 황제낙엽 2024.07.12 179
57 Base64 클래스의 encode, decode 에서 URL-safe 황제낙엽 2024.07.10 273
56 [Copilot] JSP 에서 다른 페이지를 현재 페이지에 포함시키는 문법 (include) 황제낙엽 2024.06.26 224
55 [Gemini] HttpURLConnection 클래스를 이용한 데이터 전송 방식 비교 황제낙엽 2024.03.14 556
54 servlet name 에 camel case 를 사용해서는 안되는 이유 황제낙엽 2023.10.24 209
53 org.apache.commons.fileupload.servlet.ServletFileUpload 이용 예시 황제낙엽 2023.08.25 503
52 ServletFileUpload.parseRequest() 실행 결과 리스트가 비어있는 오류 황제낙엽 2023.08.25 659
51 어떤 multi-part 설정도 제공되지 않았기 때문에, part들을 처리할 수 없습니다. file 황제낙엽 2023.08.23 891
50 (Bard) the request was rejected because no multipart boundary was found file 황제낙엽 2023.08.23 337
49 (Bard) multipart/form-data 요청 처리를 위한 MultipartHttpServletRequest file 황제낙엽 2023.08.21 210
48 ajax 로 post 데이터를 servlet 으로 전달 받기 (with nexacro) [1] secret 황제낙엽 2023.02.26 0
47 HttpServletRequest, HttpServletResponse, JSONObject, POST 황제낙엽 2022.01.12 389
46 [JSP] 파일 다운로드 테스트 file 황제낙엽 2021.04.12 3560
45 [HttpURLConnection] Authorization 헤더를 넣어 GET Request 황제낙엽 2020.08.12 1062
44 [AWS, 웹 프로젝트] AWS+MySQL+SpringFrameWork5+JAVA8+ React+Gradle+Webpack+GIT+Jenkins file 황제낙엽 2020.04.08 553