본문 바로가기
뉴렉처 과정 기록 (Backend)/Servlet _JSP

04/13 Servlet 출력 형식(한글깨짐 문제 해결)

by yeonee3219 2021. 4. 13.

 

저번시간까지 위의 사진처럼 나오는 계산기를 만들었다 

 

-> 이 계산기는 덧셈 한번 하면 흰창에 7이 나오고 끝이다 -> 다시 계산하고 싶으면 뒤로가기 창을 눌러줘야 한다

 

-> 계산 결과와 함께 다시 계산할 수 있는 화면이 나오도록 만들어 보자

 

 

 

calc.html에 있던 거 그대로 복사해서 , 출력하는 함수로 결과 result와 함께 출력하게 해주었다

이건 간단한 거라 이렇게 해줄 수 있는데... 너무 귀찮다

 

 

한글깨짐 문제가 생김!

 

-> 한글 깨짐 문제부터 고치고 나서 다른 방법으로 해보자

 

 

 

 

 

 

 

한글을 1byte씩 쪼개서 전달되기 때문에 읽었을 때 물음표가 나옴

 

2byte로 보낼수있도록 인코딩방식 변경해야겠다

 

 

 

2바이트씩 보내도 정상적으로 해석을 못할 경우 이상한 언어로 나옴..

 

 

 

 

 

 

res.setCharacterEncoding("UTF-8");

                   

-> 출력버퍼를 담는 표테이블이 utf-8이되도록 해준것

 

 

한글 깨짐 없이 잘 나온다

 

 

 

 

내가 보낸 데이터는 숫자로 가는 것인데 읽을 때 내가 원하는 것과 맞는 표테이블이 아니라면 이상한 글자가 나오겠구나!

 

 

 

 

운이 좋게 utf로 보냈을 때 , 잘 나왔지만 

 

 

 

인터넷 익스플로러로 켜보면 난리난다

이런식으로 깨질 경우에는 정상적으로 데이터가 왔으나 인코딩 언어가 달라 제대로 해석이 안된 것이다

 

 

 

인코딩 방식만 설정해주면 바로 잡을 수 있음

 

 

 

 

accept 범주 내에서 있는 것들에 대해서 읽을 수 있다는 것..

 

응답헤더에는  "utf-8로 읽어줘"라고 심어줘야 브라우저가 그것에 맞게 읽어주게 되는데

심어주지 않으면 브라우저가 자의적으로 해석하게 되는 것

 

 

 

 

서버에서 심어주자

 

 

서버단에 심어주기 

 

 아래에 있던거는 최근 브라우저에서 생긴 것이다/  두가지 모두 포함시키는 것이 좋겠다

 

 

 

 

 

 

 

 

2번까지 했다! gogo

 

 

 

 

 

 

 

 

 

 

이제 계산기에서 한가지 기능을 더 해보자

 

 

내가 뭘 더했었는지 알 수 있게 보여줘야 하지 않을까? 하는 필요성을 느낄 수 있겠다

 

 

 

 

 

나는 저런식으로 추가를 해서 기록이 남을 수 있도록 해보았다 -> 저문장을 따로 빼서 한줄로 추가 해주는게나음

 

 

 

 

 

 

 

calc.html에서 실행하면 오류가 나지 않던 계산기가 

Calc.java에서 실행하면 오류가난다  ->  값을 받아와서 계산처리를 해야하는데 그 값이 null이라는 것

 

 

 

 

서버가 예기치 않은 요청을 만남 / 일반적으로 서버프로그램에서 이루어진 오류 / 컴파일 문제에서 자주 나옴

 

 

 

 

 

 

그래서 조건문으로 값들이 null이 아닐 경우에만 parser해주면 오류나지 않는다

 

 

 

 

 

 

-> 그런데 값을 아예 넣지 않고 덧셈 버튼 누르면 null이 아닌 아예 빈 공간이기 때문에 또 오류

 

 

 

 

 

 

조건추가 해주기

 

 

아무것도 안넣고 덧셈을 누르면 오른쪽 사진처럼 나온다

 

 

 

 

 

그런데 맨처음에 값을 넣지도 않았는데 0+0=0 떠있는거 없애주고싶다

-> 처음화면에는 없어야하지

 

 

아까 내가 했던것과 다르게 한줄로 x+y= 를 빼버려야 해결할 수 있다

나중에 나왔으면 하는 한 줄을 조건문을 줘서 처음에는 못나오게 하였다

 

 

 

첫화면과 값을 넣고 나서 결과화면 -> good

 

 

 

 

 

 

 

 

 

3번까지 했다