달력

102019  이전 다음

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  

commons-fileup 샘플

java/jsp 2014.01.03 20:25

요즘은 정말 스택오버플로우의 코드조각을 많이 참고합니다.

2000년에 만들어진 cos.jar를 보내드리고, 아파치 커먼스의 업로드 컴포넌트를 사용해 봤습니다.


https://github.com/kenu/oksample/tree/master/commons-fileup


/**
* code from: http://stackoverflow.com/questions/15432024/how-to-upload-a-file-using-commons-file-upload-streaming-api
*/
@WebServlet("/upload4")
public class UploadServlet4 extends HttpServlet {
        private static final long serialVersionUID = 1L;

        protected void doPost(HttpServletRequest request,
                        HttpServletResponse response) throws ServletException, IOException {
                PrintWriter out = response.getWriter();
                response.setHeader("Content-Type", "text/html");
                out.print("Request content length is " + request.getContentLength()
                                + "<br/>");
                out.print("Request content type is "
                                + request.getHeader("Content-Type") + "<br/>");
                boolean isMultipart = ServletFileUpload.isMultipartContent(request);
                if (isMultipart) {
                        ServletFileUpload upload = new ServletFileUpload();
                        try {
                                FileItemIterator iter = upload.getItemIterator(request);
                                FileItemStream item = null;
                                String name = "";
                                InputStream stream = null;
                                while (iter.hasNext()) {
                                        item = iter.next();
                                        name = item.getFieldName();
                                        stream = item.openStream();
                                        if (item.isFormField()) {
                                                out.write("Form field " + name + ": "
                                                                + Streams.asString(stream) + "<br/>");
                                        } else {
                                                name = item.getName();
                                                System.out.println("name==" + name);
                                                if (name != null && !"".equals(name)) {
                                                        String fileName = new File(item.getName())
                                                                        .getName();
                                                        out.write("Client file: " + item.getName()
                                                                        + " <br/>with file name " + fileName
                                                                        + " was uploaded.<br/>");
                                                        File file = new File(getServletContext()
                                                                        .getRealPath("/" + fileName));
                                                        FileOutputStream fos = new FileOutputStream(file);
                                                        long fileSize = Streams.copy(stream, fos, true);
                                                        out.write("Size was " + fileSize + " bytes <br/>");
                                                        out.write("File Path is " + file.getPath()
                                                                        + "<br/>");
                                                }
                                        }
                                }
                        } catch (FileUploadException fue) {
                                out.write("fue!!!!!!!!!");
                        }
                }
        }
}


Posted by 케누 kenu허광남

댓글을 달아 주세요

apache/bin/ab.exe 간편하고 쉬운 도구인데, 아파치를 윈도우에 설치해야 한다는 부담이 있죠.

http://www.apachefriends.org/en/xampp-windows.html#641


xampp 패키지에 있는 apache를 이용하면 됩니다.

xampp/apache/bin/ab.exe 를 호출할 수 있습니다.


물론 이것도 180MB라는 무시무시한 zip파일을 다운받아서 압축을 풀어야 합니다.



Posted by 케누 kenu허광남

댓글을 달아 주세요

버전이 맞지 않으면 이클립스의 다이나믹 웹 프로젝트가 컴파일 되지 않는 현상이 있습니다. Problems탭을 보면 다음과 같은 메시지가 보입니다.
Project facet Java 5.0 is not supported by target runtime Apache Tomcat v5.0
Java5.0은 Apache Tomcat v5.5 이상과 맞기 때문입니다.

해당 라인을 선택하고 Quick Fix 메뉴를 선택합니다. (ctrl+1 또는 command+1)

Quick Fix 창이 나오기는 합니다만 막막합니다. 그냥 Create a new runtime environment 선택된 상태에서 Finish 버튼을 클릭합니다.

Runtime Environment 에 Apache Tomcat v6.0을 선택합니다.

프로젝트 Clean...을 선택해서 다시 빌드합니다.

그냥 전체 class 다 지우고 빌드를 몽창 다 해버렸습니다.

말끔하게 해소되지 않는군요.
Java project facet과 자바컴파일러가 맞지 않는다는군요.

Quick Fix를 클릭하니 옵션이 두 개가 나왔습니다. 그냥 6.0을 하니 Apache Tomcat v6.0과 Java6.0은 또 어울리지 않는다는군요. 쩝.

프로젝트 프로퍼티창을 열어봅니다.

facet으로 검색을 해 봤습니다. Project Facets라는 것이 나옵니다.

이 항목에서 5.0으로 맞춰주었습니다.

Targeted Runtimes는 Apache Tomcat v6.0이 선택되어 있습니다.

Project > Clean... 과정을 다시 해보면 Facet 오류가 사라졌을 것입니다.

Posted by 케누 kenu허광남

댓글을 달아 주세요

평소에 들여다 보았으면 좋았을텐데 하는 아쉬움이 남습니다. CVS에서 SVN으로 모든 프로젝트가 이전하는 것은 몇 년 전에 알고 있었는데, 오늘 책을 쓰다가 아파치 소프트웨어 재단(Apache Software Foundation)의 저장소를 보고 놀랬습니다. 백 개가 넘는 모든 프로젝트들이 한 저장소에서 관리되고 있습니다. 각 프로젝트별로 trunk, branches, tags 를 각기 관리하고 있습니다.
리비전 번호에 신경을 쓰지 않아도 될 듯 합니다. 숫자는 다르다는 것만 표시하면 될 뿐, 통합 저장소로 인한 리비전 번호의 증가에 괜히 신경쓰지 않아도 될 것입니다.


톰캣 프로젝트 내에도 여러 서브프로젝트들이 존재합니다. 저장소 구성은 다음과 같습니다.

괜히 은근슬쩍 2002년이 떠오르는군요. 자카르타서울 프로젝트. 지금은 동면상태이죠.
http://www.apache-korea.org

Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. 토비  댓글주소 수정/삭제 댓글쓰기 2008.12.18 14:30

    별로 좋아보이지만은 않습니다. 일단 커뮤니케이션 하기 힘들죠.
    "리비전 넘버 칠십일만팔천오백육십사번을 참조하셈"
    "머.. 칠십...만 오백어쩌고..? 다시 불러주셈"

    좀 지나면 백만 넘어가겠군요. 숨도 같이 넘어가겠습니다. 리비전넘버치다 오타도 많이 나고.. @@

  2. kingori  댓글주소 수정/삭제 댓글쓰기 2008.12.18 15:27

    정말, 번호가 후덜덜하군요!

    그나저나, 저게 정말 좋은 구조인지 아니면 눈물을 머금고 어쩔수없이 선택하다보니 나온 구조인지에 대한 내용을 찾아볼 수 있다면 더 좋겠네요.

네이버 뉴스 개편하느라 고생들 많으신 듯 합니다.

서버는 아파치웹서버 2.2.4와 mod_jk/1.2.20 커넥터로 JSP,서블릿을 처리하는 아파치톰캣에 연결되어 있군요. 현재 메시지는 톰캣 서버가 내려가 있는 상태.

댓글 영역 서버가 memo.news.naver.com 이군요.
제 사이트의 코멘트들도 memo라고 명명했었는데.
잘 되시길 바랍니다.

사용자 삽입 이미지
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. 키엘  댓글주소 수정/삭제 댓글쓰기 2007.10.10 17:53

    뉴스 댓글 뿐 아니라 상당히 많은 서비스가 apache-tomcat 을 사용하고 있습니다.

    • 케누 kenu허광남  댓글주소 수정/삭제 2007.10.10 18:07 신고

      댓글 감사합니다.
      제품이 오픈소스라는 것은 그것을 잘 운영할 수 있는 엔지니어가 있다고 생각됩니다. 구글도 GWS(Google Web Server)를 자체적으로 만들어 서비스하는 것을 봐도 알 수 있죠.
      행복하세요. ^^