2016-07-13 4 views
0

제 서버는 Tomcat 7, HttpServlet 및 JSP를 사용하여 html 페이지를 구성합니다.일부 프로세스는 JSP 파일에서 백 슬래시가 처음 나타나는 것을 제거합니다. 그게 뭐야?

나는 지금까지 웹 페이지에 <script src="source.js" /> 접근 방식으로 자바 스크립트 파일을로드하고 있습니다.

이제 요구 사항 변경으로 인해 JSP 파일 내에 자바 스크립트가 직접 임베드됩니다. 이렇게하면 javascript와 html은 단일 http 호출로로드됩니다.

이 한 가지 문제가있는 것을 제외하면 모든 것이 예상대로 작동합니다. 여기서 문제는 웹 페이지가로드 될 때 JSP 파일에서 백 슬래시가 처음으로 나타나는 것을 제거하는 것입니다.

<script>${string}.match(/\$/)</script> 

<script>${string}.match(/$/)</script> 

이 두 정규 표현식에 완전히 다른 의미가 될 것이다 예를 들어

. 이것은 많은 정규 표현식이 더 이상 예상대로 작동하지 않게합니다.

<script src="" /> 접근 방식으로 JavaScript 파일을로드 할 때 브라우저에서 JS 파일을 서버에서 직접로드하므로 이 발생하지 않았습니다. 그러나 일단 자바 스크립트를 JSP에 삽입하면 \의 첫 번째 항목이 제거됩니다.

저는 Tomcat에 익숙하지 않습니다. & Sevlet & JSP 그래서이 세 가지 구성 요소 중 어느 것이이 문제를 일으키는 지 잘 모르겠습니다. 로드 될 때 Tomcat이 JSP 파일에서 \을 제거하지 못하도록 설정해야하는 구성이 있습니까?

\을 tomcat/JSP에서 제거 할 수 없다면 실제로 로직을 추가하여 \을 이스케이프 처리하여 브라우저에 성공적으로로드되도록 할 수 있습니다. 그렇다면 tomcat/JSP가 이스케이프/제거하는 모든 문자 목록을 어디에서 찾을 수 있습니까?

+0

어떻게 생각하십니까? – Pointy

+0

또한 '$ {string}'은 JavaScript 구문 오류입니다. – Pointy

+0

임베디드를 처리하는 과정에서 문제가있는 것 같습니다. HTML 구문 분석기는 스크립트 구문을 변경하지 않습니다. – charlietfl

답변

0

jsp 파일의 맨 위에 <%@ page isELIgnored="true" %>을 추가하여이를 해결했습니다. JSP의 표현 언어는 javascript에서 백 슬래시 \을 제거하는 기능이었습니다.