간단한 BeanUtils 사용하기
자료형게시판을 만들다가 불현듯 잔머리가 생각이 났다.
자료형나름대로의 컨트롤로를 두면 어떨까 ? 하는 생각이다.
그래서 요기저기 머리를 굴리다가 MultipartRequest와 BeanUtils 를 이용해서 하기로 마음을 먹었다.
순서는 업로드해서 Bean에 담기까지의 과정이다.
1. 다중 파일을 을 업로드 시킨다.
2. MultipartRequest를 이용해서 받는다.
3. request.setAttribute 를 이용해서 request에 MultipartRequest의 내용을 담다.
4. request.getRequestDispatcher 를 이용해서 bean에 담을 페이지(또는 서블릿)으로 이동시킨다.
5. BeanUtils을 이용해 bean에 모든내용을 담는다.
1~4번까지는 그리 무리없이 진행이 되었지만 역시 5번에 막힌다.
모양이 심플해야 하기에 (본인은 복잡스러운거 싫어함) 그래서 머리를 굴리다가
BeanUtils를 써보면 어떨까 생각이 들었다.
일단 BeanUtils을 사용하기 위해서는 자카르타 프로젝트 홈페이지에서 다운을 받는다.
최신버전은 commons-beanutils-1.7.0 일듯..
그리고 이것을 사용하기 위해서 다른 패키지가 하나더 필요하다
commons-logging-1.0.4 요놈 도 자카르타에서 다운을 받자
위의 두개 패키지를 압축을 풀고 lib폴더에 보면 jar파일 있을거시다. 이것을 내 프로젝트의 lib로 이동시키자
그럼 일단 준비끝이라 할 수 있다.
그럼 소스부분을 보면..
1번 소스는 볼필요가 없기에 패스
2~4번 소스
String repository = "D://upload//"; // 저장할곳을 넣는다.
MultipartRequest multi = new MultipartRequest(request, repository, 1024*1024*1024, "euc-kr", new DefaultFileRenamePolicy());
java.util.Enumeration params = multi.getParameterNames();
while( params.hasMoreElements() ) {
String name = (String)params.nextElement();
String value = multi.getParameter(name);
request.setAttribute(name, value); // 요부분은 3번 부분
}
java.util.Enumeration files = multi.getFileNames();
while ( files.hasMoreElements() ) {
String name = (String)files.nextElement();
String filename = multi.getFilesystemName(name);
String type = multi.getContentType(name);
}
request.getRequestDispatcher("step2.jsp").forward(request, response); // 요부분이 4번부분
본인은 원래 저기서 파일관련 테이블에 참조키를 이용하여 파일을 관리하기로 했다. 그부분은 각자 알아서 처리하면될듯하다.
5번 소스
BoardBean board = new BoardBean();
BeanUtils beanutils = new BeanUtils();
java.util.Enumeration params = request.getAttributeNames();
while ( params.hasMoreElements() ) {
String name = (String)params.nextElement();
Object value = request.getAttribute(name);
BeanUtils.setProperty(board , name, value ); // 이부분이 5번부분이라고 할수있다.
}
확인은
out.println("<hr>board.getContent() = " + board.getContent() );
out.println( beanutils.getProperty(board, "content") );
이런식으로 확인을 해보면 알 수 있다.
setProperty 를 보면
setProperty(java.lang.Object bean, java.lang.String name, java.lang.Object value)
이런식으로 bean과 각 bean의 멤버, 그리고 해당 value를 각각 담을 수 있게 해준다.
반대로
getProperty는
getProperty(java.lang.Object bean, java.lang.String name)
bean과 멤버를 이용해서 value를 얻을 수있다.
생각보다 모양이 간단하다(?) 서블릿으로 만드는 건 각자가 하면 될 듯하다.
근데 위에 보면
commons-logging-1.0.4 이놈은 사용을 하지 않는 것 처럼 보이지만
commons-logging-1.0.4 이 없으면 BeanUtils 가 에러가 나기에 꼭 lib에 추가하도록 한다.
일반적인 request 받아서 빈에 넣기
BeanUtils beanutils = new BeanUtils();
GroupBean group = new GroupBean();
java.util.Enumeration params = request.getParameterNames();
while ( params.hasMoreElements() ) { [출처] 간단한 BeanUtils 을 사용해볼까나..|작성자 피바다
String name = (String)params.nextElement();
String value = CommonUtil.htmlNko2nulltrim(request.getParameter(name), "");
//out.println(name+" = " + value + "<br>");
if (!value.equals("")){
BeanUtils.setProperty(group , name, value );
}
}