
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>RequestParameterMain</title>
</head>
<body>
<%
String name = "홍길동";
int age = 20;
%>
<form action="RequestParameterResult.jsp" method="post">
이름 : <input type="text" name="name" value="<%=name %>"> <br />
나이 : <input type="number" name="age" value="<%=age %>" > <br />
취미 :
<input type="checkbox" name="hobby" value="game"> 게임
<input type="checkbox" name="hobby" value="movie"> 영화
<input type="checkbox" name="hobby" value="travel"> 여행<br />
<button type="submit">전송</button>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>RequestParameterResult</title>
</head>
<body>
<%
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
String[] hobby = request.getParameterValues("hobby");
%>
<%=name %>님의 나이는 <%=age %>살이며 취미는
<%
for(String hobbys : hobby){
out.print(hobbys + " ");
}
%>
입니다.
</body>
</html>


request.getParameter로 한글이 깨질 경우, 그 전에
request.setCharacterEncoding("utf-8"); 를 먼저 추가하면 해결이 되지만,,,
계속해서 추가할 수는 없으니 필터를 적용해보자
💡 why?
request.getParameter은 기본적으로 ISO-8859-1로 디코딩하는데, 보내는 쪽 charset이 utf-8이기 때문에 utf-8로 보내게 된다.
따라서 받는 쪽에서도 utf-8로 입력된 한글을 받게되는데
request.getParameter은 ISO-8859-1로 디코딩하기때문에 한글이 깨져 나온다.
https://tomcat.apache.org/tomcat-9.0-doc/config/filter.html

톰캣 홈페이지에 설정 적용 방법이 나와있다!

<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<!-- utf-8로 인코딩 값 설정 -->
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<!-- 모든 url에 필터를 적용시키겠다 -->
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>