본문 바로가기
코딩/JSP

JSP] GET으로 데이터를 보낼경우 문법과 GET의 인코딩, 글자깨짐 현상 해결법

by YDDE- 2021. 11. 9.

URL뒤에 같이 보낼 데이터를 붙여서 다른 페이지로 넘길경우, GET형식으로 보낸다라고 한다.

 

문법 : <a href="xxxxxx.jsp? [보낼 데이터의 변수]= [보낼 데이터]"> [링크를 표시할때 표기할 데이터]</a>

 [링크를 표시할때 표기할 데이터]

예시 : <a href="handleBean1.jsp?byLink=<%= obj.getId() %>"><%= obj.getId() %>

 

 

 

버튼일 경우에도 마찬가지로 적용된다.

 

문법 : <button onclick="location.href='xxxxxx.jsp? [보낼 데이터의 변수]= [보낼 데이터]'">[링크를 표시할때 표기할 데이터]</button>

 

예시 : <button onclick="location.href='handleBean1.jsp?byLink=<%= obj.getId()%>'"><%= obj.getId() %></button>

 

 

 

 

여러가지 데이터를 보낼때는 &로 묶어준다.

 

문법 : <a href="xxxxxxx.jsp?[보낼 데이터의 변수]= [보낼 데이터] &[보낼 데이터의 변수2]= [보낼 데이터2]"> [링크를 표시할때 표기할 데이터]

 

예시 : <a href="foodBean1.jsp?byLink=<%= obj.getCode() %> &byLink2=<%=obj.getName() %> &byLink3=<%= obj.getPrice() %>&byLink4=<%= obj.getphoto() %>"><%="링크" %></a>

 

 

 

 

 

그런데 이때, 넘기는 데이터가 한글, 일어, 중국어 등일 경우,

각나라에서 만든 로컬 디지털문자[KO, JP등]를 쓰기때문에 자바가 못 알아듣는다.

따라서 표준 언어인 UTF-8로 바꿔줘야 한다.

 

POST의 경우에는 데이터를 받는 jsp쪽에만 인코딩 명령을 해주면 되는데,

GET의 경우에는 데이터를 보내는 쪽도 인코딩을 해줘야 한다.

 

 

먼저 보내는 쪽에서 처리해줘야 할 것

 

1. import추가 ⇒ <%@ page import="java.net.URLEncoder" %>

 

2. 한글이 넘어가는 URL데이터에 UTF-8인코딩 직접명령 

⇒ &byLink2=<%=URLEncoder.encode([보낼 한글 데이터],"UTF-8") %>

 

 

이것만 하고 넘어가면 데이터가 처리되지만(실행도 가능하지만) 받는 쪽에서 인코딩을 안한상태이므로

출력결과가 ??? 물음표로 표시됨.

 

 

 

그래서 받는 쪽에서 처리해줘야 할 것

 

1. 제일 선두에 전체 페이지 인코딩한다는 명령 추가

⇒ <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>  
<!DOCTYPE html>

 

2. 바디 부분에 받은 데이터 인코딩 명령 추가 ⇒ <%request.setCharacterEncoding("UTF-8"); %>

 

 

 

끝.

 

이로서 한국어든 일본어든 중국어든 모든 로컬언어들이 잘 표시된다.

 

 

 

 

 

GET으로 데이터를 수송신할경우, 받는쪽, 주는쪽 모두 인코딩 작업을 해야 한다는 점을 꼭 명심하자.

 

 

 

댓글