Contents

1 file download jsp header
2 include 방법 두 가지
3 import
4 jsp코딩시 줄바꿈문자가 자동으로 들어가는 현상에 관해


1 file download jsp header #

response.setHeader("Content-Disposition", "attachment;filename=gimslab.com.xls");
response.setHeader("Content-Description", "JSP Generated Data");

2 include 방법 두 가지 #


  • 컴파일시 파일포함 - 정적 인클루드
<%@ include file="relativeURL" %>

  • 실행시 결과 포함 - 동적 인클루드
<jsp:include page="relativeURL" flush="true" />



3 import #

<%@ page language="java" import="java.sql.*,java.io.*" %>





4 jsp코딩시 줄바꿈문자가 자동으로 들어가는 현상에 관해 #

작성자:kikistyle@gmail.com
작성일:20040211수091805

얼마전 시스템에서 이상한 현상 하나를 발견했다. jsp에 관한 문제였다.
그 jsp는 파일 다운로드를 수행하는 놈이었다.

만약에 서버상에 a.hwp라는 파일이 있고 사이즈가 100byte였다면
이 jsp를 통해서 그 파일을 다운로드 받으면 사이즈가 101byte가 되는 것이었다.
모든 파일이 서버상의 실제 파일보다 1byte커지게 다운로드가 되는 것이었다.

신기해서 해당 jsp의 컴파일된 java소스를 봤더니
마지막에 out.print("\n");
이것이 붙어 있는것이다. 아하 이것때매 그랬구나 해서 해당 jsp를 vi로 열어봤다.
근데 마지막에는 전혀 그런게 없었다. %>로 정확히 끝나고 있었고 새 라인도 없었다.
%>를 마지막으로 더 이상 어떠한 문자도 없었다.

그래서 vi로 새 파일을 만들어봤다. 그랬더니 항상 마지막에 \n 문자가 붙는것이 발견되었다.
물론 vi로 열었을때는 마지막라인의 그 문자는 줄바꿈 효과를 보여주지 않고 있었다.

그렇다면 vi로는 위와 같은 jsp코딩은 못하게 되는것인가...

echo x > a

이렇게 수행하면 파일 a의 사이즈는 얼마가 될까? 1 이라고 예상을 했으나
2가 된다. 자동으로 파일끝에 \n이 붙어버리는 것이다.

vi 도 마찬가지


유닉스에 대해 모르는것이 더 많은 나는 여러가지 꼼수를 생각하다가 결국엔 마지막 라인의 \n문자를 지워버리는 방법을 선택했다.
만약에 위와같은 jsp에서 마지막에 한 개의 \n이라도 들어가버리면 jsp컨테이너는 해당 jsp를 컴파일할때 마지막에 out.print("\n")을 붙여버린다. 그러므로 해당 jsp를 vi로 편집할때는 마지막 라인 쓰지말고 파일을 저장하고 빠져나온다.

예를 들면 a.jsp라는 파일을 vi로 만들고 있고

end of file %>

라는 줄로 끝나는 파일을 만들고 싶은경우 위의 마지막줄은 쓰지말고 마지막줄 바로 전까지만 코딩을 하고 저장하고 빠져나온다.
그리고 마지막 라인은 약간 특이한 방법으로 추가를 해준다. 이렇게

echo 'end of file %>' | tr -d '\r\n' >> a.jsp

이렇게 하면 마지막라인의 줄바꿈문자는 없어진 상태로 a.jsp가 만들어진다.
이렇게 만들어진 jsp는 컴파일된 java를 열어보면 마지막에 out.print("\n")이 없다.


간단히 메모하려고 했는데 길어졌다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-09-04 10:27:23
Processing time 0.0070 sec