Search

반응형

'Software/JSP'에 해당되는 글 1건

  1. 2023.09.24 [JSP]실행하면 저장이 되는 jsp파일/ 해결법 중 하나 발견. 1
반응형

구독하면 필요한 정보를 받을 수 있어요!

안녕하세요 신기한 연구소입니다.

 

1. 증상

최근 개발하다가 이상한 현상을 발견했습니다. 제목처럼 jsp파일을 브라우저에서 다음과 같이 호출했는데 jsp파일이 저장되는 상황이 발생했습니다.



http://localhost:8080/test.jsp

 

<%
	out.print("Hello!");
%>

 

이렇게 test.jsp를 생성하고 서버 Start 후 실행을 하면 브라우저에 "Hello!"가 보여야 하는데 test.jsp 파일이 다운로드가 됩니다. 그래서 구글링, 네이버 등 검색을 해서 다양한 해결 방법을 찾아봤습니다.

 

2. 시도한 방법들

파일명에 "-"를 제거해서 해결한 경우도 있고

빌드에서 설정을 바꿔서 해결한 경우도 있고

tomcat-embed-jasper와 tomcat의 두 버전이 일치하면 해결된다고 하고

Implementation의 오타를 찾아서 해결한 경우도 있고

서버를 재시작해서 성공한 경우도 있고

<@page contentType...%> 설정을 최상단으로 이동해서 해결된 경우도 있었답니다.

하지만 이 모든 것을 해봐도 계속 jsp 파일이 실행이 안되고 다운로드가 되더군요.

 

3. 특이한 점

우연히 다운로드 한 jsp 파일을 열어봤습니다. 그런데 jsp 파일이 실행이 되어있더군요.

무슨 말이냐면 jsp 파일이 다운로드가 되긴 했지만 실행한 결과가 기록되어 있었습니다.

실행이 안되고 다운로드가 된 test.jsp 파일을 열어보니 코딩된 소스가 있는 것이 아니고 실행 결과인 Hello! 가 타이핑되어 있었습니다. 헐헐헐~

결국 실행은 되는데 우리가 원하는 페이지로 열리는 것이 아니라 결과를 jsp 파일로 받게 된 것이었습니다.

 

4. 해결

그렇다면 설정에서 문제를 찾을 수 있다는 결론을 내렸습니다. 소스를 다시 확인해 봤습니다.  

<%@page language="java" contentType="application/x-www-form-urlencoded; charset=UTF-8"%>

"contentType"이 "application/x-www-form-urlencoded"로 되어있더군요. 물론 기존 개발자가 코딩한 소스입니다. 그래서 검색해 보니 예전에 form 데이터 전송을 위해 사용한 타입이라고 합니다. "key=value&key=value"형식으로 key와 value를 전달하는 구조입니다. json과 약간 다릅니다. (json은 {key:value, key:value})

데이터 전송을 위한 타입이라는 의미로 그래서 jsp가 실행되고 결과를 jsp로 넘겨준 뒤 브라우저에서 다운로드가 된 것으로 보입니다.

"contentType"을 "application/json"으로 변경 후 테스트하니 더 이상 다운로드 되지 않고 브라우저에서 실행이 됩니다.

 

5. 결론

잘 되니 그대로 사용할까 했지만 기존에 개발되었고 잘 사용하고 있던 소스여서 우선 그대로 두고 다운 받은 jsp를 열어 결과를 확인해도 되지만 불편하더군요.

같은 파일을 복사한 후 contentType을 변경해서 작업 중입니다.

혹시 다양한 방법을 시도했음에도 jsp 파일이 실행 안되고 다운로드가 된다면 contentType을 변경해 보세요.

 

내일도 출근해서 즐거운 코딩을 하고 싶지만, 출근하는 그 자체는 즐겁지가 않네요..ㅎㅎㅎ

공감하면 하트~!

 

반응형