JSP 강의를 듣고 따라 하던 중 이상한 점을 발견했다
요런 html 입력 폼에서 한글 입력 시 깨짐 문제를 서블릿을 이용하여
xml 을 수정하기 or 서블릿에 인코딩 코드추가 or 서블릿 필터에 인코딩 코드 추가 등의 방법으로
해결하고 서블릿 필터에 대해서 배우던 중 이상한 점이 보였다
인풋폼에 입력하고 필터효과를 보기 위해 chain.dofilter() 전 후로 고구마를 출력하도록 했는데
내 이클립스 콘솔에 한번이 아닌 여러번 출력이 뜬것이다. 난 요청 응답 시 한번씩만 출력하게 했는데!
이 문제를 검색해보니
That’s very normal. You have an application listener that loads a the context, and you have a servlet that loads on startup and loads the context also. Remove load on startup from the servlet declaration in web.xml.
Houcem Berrayana 라는 분의 답변 / Stack Overflow 링크
요약하자면
"그 프로젝트의 톰캣 폴더 환경설정의 web.xml 파일에서 load 부분을 검색해서 찾아서 지워라. 아래 코드처럼" 이다
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup> // 요놈 요놈 이 코드때문에 시작시 멋대로 로드 되는 것이라고 한다. 지우자
</servlet>
저 load on start 부분을 지워주면 된다고 한다.
근데... 지우고 다시 서버를 재시작하고 새로고침해도 마찬가지 결과가 나오는것이다. 왜... 왜지?
한 10초간 콘솔창을 바라보며 생각하니 이유를 알 수 있었다
아직 폼을 전송하기 전에도 고구마들이 하나씩 출력되잖아? 아...
아니... 페이지마다 출력되는 거였어? 그러면...! 그래서 폼전송전 페이지, 전송후 페이지로 2번 출력된거였어?
xml 을 수정해서 페이지를 로드 할때마다 모든 페이지들이 필터를 거치게 하도록 했던걸 생각을 못했었다!
저 이유로 페이지마다 필터 적용이 되서 폼 전송 전, 폼 전송 후 페이지 모두에서 출력되니 2번 출력됐던것...
에휴...
'개발 노트 > 오답 노트' 카테고리의 다른 글
벡터, map 등의 동적 요소를 반복 대입 할 때 auto 자료형를 쓰자 (0) | 2022.06.15 |
---|---|
2차원 배열의 경우 선언 시 열은 꼭 입력해주자 (0) | 2022.06.13 |
c++ 배열을 인자로 받는 함수는 함수의 크기를 인자로 같이 받아야한다 (0) | 2022.06.13 |
[c] 전위, 후위 연산자 사용 시 주의사항 (0) | 2022.06.03 |
구구단 만들기 시 에러 원인 (0) | 2022.04.13 |
댓글