프로그래밍을 하면 대부분이 영어로 처리가 되어있습니다.
그럼에도 한글을 사용해야할수는 있어야되는데요.
영어는 기본적으로 1byte지만 한글은 기본적으로 2byte입니다.
그렇기 때문에 한글을 입력하면 브라우저에서 한글이 깨지거나 오류가 생기는 경우가 많은데요.
이러한 문제를 해결해주기위해 한글처리를 해줄 필요가 있습니다.
한글이 깨지지 않도록 하는 처리에서도 get방식과 post 방식으로 나뉘게 됩니다.
post방식의 경우 서블리셍 request.setCharacterEncoding("UTF-8"); 을 함으로서 처리할수있고 get방식의 경우 server.xml에 <Connector URIEncoding="UTF-8" />을 추가하는 방식이 있습니다.
post방식의 경우 해당하는 서블릿 마다 코드를 작성해서 처리를 해주어야하지만 get방식은 server.xml에 한번만 처리해주면 됩니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="mSignUp" method="get">
이름 : <input type="text" name="m_name"><br>
별명 : <input type="text" name="m_nickname"><br>
<input type="submit" value="sign up">
</form>
</body>
</html>
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/mSignUp")
public class SignUp extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
String mName = request.getParameter("m_name");
String mNickname = request.getParameter("m_nickname");
out.print("<p> mName : " + mName + "</p>");
out.print("<p> mNickname : " + mNickname + "</p>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
JSP에서 Servlet으로 받을때 한글처리를 해주는 방법입니다.
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
요청 받은 데이터를 UTF-8로 인코딩하고 응답할때는 ContentType을 "text/html; charset=UTF-8"로 하겠다는 의미로 해석이됩니다.
그렇다면 JSP에서 JSP로 보낼때는 어떻게 할까요??
<form action="mSignUp.jsp" method="get">
<% request.setCharacterEncoding("UTF-8"); %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
String mName;
String mNickname;
%>
<%
mName = request.getParameter("m_name");
mNickname = request.getParameter("m_nickname");
%>
이름 : <%= mName%>
</br>
별명 : <%= mNickname%>
</body>
</html>
mSignUp.jsp파일을 만들고 위와같이 코드를 작성하였습니다.
그리고 이전에 formEx.jsp파일에서 form태그 안에 action속성을 mSignUp.jsp로 이동하도록 변경하였습니다.
이처럼 코드를 작성하면 한글처리를 해줄 수 있습니다.
get방식으로 처리를 하게될 경우는 server.xml을 이용해야한다고 했습니다.
저는 tomcat을 연결해서 사용하고 있었는데요.
해당 서버안에 server.xml에 들어가서 <Connector> 태그에 URIEncoding="UTF-8"속성을 넣어주겠습니다.
이렇게 되면 get방식에 대한 인코딩은 모두 끝났습니다!
저는 이클립스로 작업을 하고 있는데 이클립스에서 서버를 연결하게 되면 생기는 Server라는 폴더는 복사본이라고 할수 있는데 이 복사된 것을 동기화 시켜주어야합니다.
이클립스 내에서 표시된 버튼을 눌러주게 되면
이렇게 상태가 바뀌게됩니다!
이 글은 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌를 수강하며 공부한 내용을 정리한 글입니다.
'Java 관련 > JSP & Servlet' 카테고리의 다른 글
[JSP & Servlet] JDBC (0) | 2022.08.23 |
---|---|
[JSP & Servlet] filter를 통한 한글처리 (0) | 2022.08.22 |
[JSP & Servlet] Session (1) | 2022.08.20 |
[JSP & Servlet] Cookie (0) | 2022.08.19 |
[JSP & Servlet] Servlet 데이터 공유 (0) | 2022.08.18 |