해결된 질문
작성
·
1K
·
수정됨
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
아니요
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
아니요
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
예
[질문 내용]
여기에 질문 내용을 남겨주세요.
다른 프로젝트를 실행하면 콘솔에 한글이 안 깨지는데 해당 강의 대로 진행한 프로젝트는 한글이 깨집니다.
https://velog.io/@hsjung2015/Intellij-or-Eclipse%EC%BD%98%EC%86%94%EC%B0%BD%EC%97%90-%ED%95%9C%EA%B8%80%EC%9D%B4-%EA%B9%A8%EC%A0%B8%EC%84%9C-%EB%82%98%EC%98%AC%EB%95%8C-%EC%B5%9C%ED%9B%84%EC%9D%98-%EB%B0%A9%EB%B2%95
해당 사이트에 있는 3번까지 진행 했는데 한글이 깨지네여 ㅠㅠ
package hello.servlet.basic.request;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header")
public class RequestHeaderServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
printStartLine(request);
printHeaderUtils(request);
printEtc(request);
response.getWriter().write("ok");
}
private static void printStartLine(HttpServletRequest request) {
System.out.println("--- REQUEST-LINE - start ---");
System.out.println("request.getMethod() = " + request.getMethod());
System.out.println("request.getProtocol() = " + request.getProtocol());
System.out.println("request.getScheme() = " + request.getScheme());
System.out.println("request.getRequestURL() = " + request.getRequestURL());
System.out.println("request.getRequestURI() = " + request.getRequestURI());
System.out.println("request.getQueryString() = " +
request.getQueryString());
System.out.println("request.isSecure() = " + request.isSecure()); //https 사용 유뮤
System.out.println("--- REQUEST-LINE - end ---");
System.out.println();
}
private void printHeaderUtils(HttpServletRequest request) {
System.out.println("--- Header 편의 조회 start ---");
System.out.println("[Host 편의 조회]");
System.out.println("request.getServerName() = " +
request.getServerName()); //Host 헤더
System.out.println("request.getServerPort() = " +
request.getServerPort()); //Host 헤더
System.out.println();
System.out.println("[Accept-Language 편의 조회]");
request.getLocales().asIterator()
.forEachRemaining(locale -> System.out.println("locale = " +
locale));
System.out.println("request.getLocale() = " + request.getLocale());
System.out.println();
System.out.println("[cookie 편의 조회]");
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
System.out.println(cookie.getName() + ": " + cookie.getValue());
}
}
System.out.println();
System.out.println("[Content 편의 조회]");
System.out.println("request.getContentType() = " +
request.getContentType());
System.out.println("request.getContentLength() = " +
request.getContentLength());
System.out.println("request.getCharacterEncoding() = " +
request.getCharacterEncoding());
System.out.println("--- Header 편의 조회 end ---");
System.out.println();
}
private void printEtc(HttpServletRequest request) {
System.out.println("--- 기타 조회 start ---");
System.out.println("[Remote 정보]");
System.out.println("request.getRemoteHost() = " +
request.getRemoteHost()); //
System.out.println("request.getRemoteAddr() = " +
request.getRemoteAddr()); //
System.out.println("request.getRemotePort() = " +
request.getRemotePort()); //
System.out.println();
System.out.println("[Local 정보]");
System.out.println("request.getLocalName() = " + request.getLocalName()); //
System.out.println("request.getLocalAddr() = " + request.getLocalAddr()); //
System.out.println("request.getLocalPort() = " + request.getLocalPort()); //
System.out.println("--- 기타 조회 end ---");
System.out.println();
}
}
답변 1
0
내장 톰캣의 방법 링크를 첨부드려 설명드렸네요 ^^;
스프링부트 내장톰캣의 VM OPTION 설정을 하기 위한 방법은 다음과 같습니다.
인텔리제이 화면 우측 상단의 프로젝트명+Application (화면 표기)를 클릭 후
Edit Configuration..을 클릭해주세요.
입력은 Program arguments 영역에 해주세요.
추가 시도 방법
resources 프로젝트 하위의
application.properties 파일에 아래 코드를 추가하여 확인해주세요
server.servlet.encoding.force-response=true
오류 발생 원인
문자 인코딩 설정 문제 때문에 발생하는데요,
인텔리제이는 기본적으로 시스템의 기본 인코딩을 사용하는 반면 이 설정이 한글을 지원하는 인코딩(예: UTF-8)으로 되어 있지 않으면 한글이 제대로 표시되지 않을 수 있습니다.
감사합니다.
답변 너무 감사합니다!!!!
귀찮게해서 죄송합니다 ㅠㅠㅠProgram arguments 영역
(혹시 몰라서 사진 첨부했습니다...ㅎㅎ)
말씀해주신 방법 적용 뒤 컴퓨터 재부팅하고 실행 결과 아직도 콘솔 창에 한글 깨짐 현상이 발생합니다.....
감사합니다 해결되었습니다 ㅎㅎㅎㅎ!!!
PDF 내용에 있는 해당 부분을 적용한 뒤
build.gradle 에 있는 다음 코드를 제거해도 된다. // providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
gradle 설정을 인텔리제이로 변경했더니 해결되었습니다 감사합니다 ㅎㅎ
늦은 시간에 답변 감사합니다.
보내주신 링크에 3번째 방법을 진행하는데 에러사항이 있어서 질문드려요 ㅠㅠㅠㅠ
저는 톰캣 서버가 보이지 않는데 혹시 무료 버젼이라서 안 보이는건지... 궁금합니다
추가적으로 테스트 코드를 작성하는 공간에서 작성한 코드는 한글이 잘 나옵니다ㅠㅠㅠㅠ
그리고 이런 오류가 왜 발생하는지 대략적이라도 설명해주시면 감사하겠습니다.