▶ 이번 시간에는 JSP 파일에서 한글을 정상적으로
인식 및 출력하도록 하는 방법에 대해서 학습해보겠습니다.
🔑 목차
🎉 1. 한글 처리 방법
🎉 2. Filter를 사용한 방법 (Chain 기법)
▶ 한글이 정상적으로 출력될 수 있는 방법에 대해서 학습해보자.
▶ servlet에서 setCharacterEncoding과 setContentType 함수를 호출 및 설정해준다.
▶ 사용될 .jsp 파일에서 setCharacterEncoding을 UTF-8로 설정해준다.
▶ server의 xml 파일에서 Connector 태그의 URIEncoding 속성을 추가해주고
해당 속성을 “UTF-8”로 설정한다..
▶ EUC-KR과 UTF-8 두 가지 중, UTF-8이 만국 언어를 다 지원하기에 더 잘 쓰인다.
🚩 1. 한글 처리 방법
< POST 방식 >
(1) JSP에서 Servlet으로 post 방식
▶ 우선, 요즘 모든 언어에 쓰이고 인기있는 UTF-8의 형식으로 바꿔주자.
<전송하는 jsp 파일>
<%@ 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="post">
이름 : <input type="text" name="m_name"><br>
별명 : <input type="text" name="m_nick"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
▶ contentType, pageEncoding 모두 UTF-8로 바꿔준다..
▶ meta 태그의 charset 또한 UTF-8로 바꿔준다.
▶ form 태그의 action을 해당 Servlet으로 설정해준다.
<전송받는 servlet 파일>
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String m_name = request.getParameter("m_name");
String m_nick = request.getParameter("m_nick");
PrintWriter out = response.getWriter();
out.print("<p>이름 : " + m_name + "</p>");
out.print("<p>별명 : " + m_nick + "</p>");
}
▶ 위는, 전송된 request에서 m_name과 m_nick 라는 이름으로 저장된 파라미터를
변수에 저장 및 출력하는 구문이다.
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
▶ 이렇게 2줄만 작성해주면 된다.
(가장 위에 작성되어야 한다.)
▶ 항상 동일하기 때문에, 복/붙을 추천한다.
(2) JSP에서 JSP로 post방식
<전송하는 jsp 파일>
<%@ 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.jsp" method="post">
이름 : <input type="text" name="m_name"><br>
별명 : <input type="text" name="m_nick"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
▶ 위는, 처음 로그인 화면의 .jsp 코드이다.
<form action="mSignUp.jsp" method="post">
...
</form>
▶ 전송받는 파일이 jsp이므로, .jsp 확장자명을 추가해줘야 한다.
<전송받는 jsp 파일>
<% 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 m_name;
String m_nick;
%>
<%
m_name = request.getParameter("m_name");
m_nick = request.getParameter("m_nick");
%>
<p>이름 : <%=m_name %></p>
<p>별명 : <%=m_nick %></p>
</body>
</html>
▶ 위는, 로그인 성공 시 출력할 화면의 .jsp 코드이다.
<% request.setCharacterEncoding("UTF-8"); %>
▶ 가장 윗 줄에, 위 구문을 추가해주면 된다.
< GET 방식 >
▶ GET 방식은 POST 방식처럼 할 수 없고,
server.xml 파일을 통해서 할 수 있다.
- server.xml 파일에서 Ctrl+F 단축키로 Connector connection ... 내용을 찾는다.
▶ Connector 태그의 부분은 위와 같다.
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8090" protocol="HTTP/1.1" redirectPort="8443"/>
<!-- A "Connector" using the shared thread pool-->
...
▶ Connector 태그에 URLEncoding=”UTF-8” 속성만 넣어주면 된다.
▶마지막으로 Tomcat 클릭 후, Publish to server 버튼을 통해 싱크를 맞춰준다.
(eclipse에 있는 server.xml 파일은 임시 복사본이기 때문에, 서버에 넘겨주는 작업)
🚩 2. Filter를 사용한 방법
▶ Filter는 브라우저에서 오는 데이터를 한 번 걸러서 웹 서버로 보내고,
웹 서버에서 오는 데이터를 한 번 걸러서 브라우저로 보내는 역할을 한다.
▶ 이 Filter라는 것을 이용하면, 조금 전에 배웠던 한글 처리 작업을
좀 더 쉽게 할 수 있다.
▶ Filter는 인터페이스이기 때문에, 이를 사용하기 위해서는
따로 사용자 정의 class를 만들어서 Filter를 implements 해야 한다.
▶ Filter를 implements하게 되면, 3가지 메소드를 구현해야 한다.
1) init(), 2) doFilter(), 3) destory()
▶ 폴더 - New - Filter 선택
<filter 파일>
public class TempFilter implements Filter {
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("---filter init---");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("---do filter---");
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void destroy() {
System.out.println("---filter destroy---");
}
}
▶ Filter 파일의 코드는 위와 같다.
request.setCharacterEncoding("UTF-8");
▶ 앞의 방법들과 동일하게 위의 문장만 추가해주면 된다.
(위에서 .jsp 파일의 가장 윗단에 선언했던 구문)
<web.xml 파일>
...
</web-app>
<filter>
<filter-name>tempFilter</filter-name>
<filter-class>com.servlet.filter.TempFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>tempFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
▶ filter 태그를 사용한 모습은 위와 같다.
<url-pattern>/*</url-pattern>
▶ “/*“ 는 모든 파일에 대해 Filter 적용한다는 의미이다.
✋ JSP를 주제로한 포스팅은 이 포스팅이 마지막입니다.
✋ 다음 주제를 기대해주세요! 😁
'(2022) 공부 (Study)' 카테고리의 다른 글
🔥 Spring Framework - #1 Spring 개요 (0) | 2020.12.31 |
---|---|
🔥 JSP 기본 정리 - #2 개발 환경 설정 (Eclipse) (0) | 2020.12.31 |
🔥 JSP 기본 정리 - #14 Session (0) | 2020.12.31 |
🔥 JSP 기본 정리 - #13 Cookie (0) | 2020.12.31 |
🔥 JSP 기본 정리 - #1 웹 프로그램 개요 (0) | 2020.12.30 |