레이블이 오엔제이프로그래밍실무학원인 게시물을 표시합니다. 모든 게시물 표시
레이블이 오엔제이프로그래밍실무학원인 게시물을 표시합니다. 모든 게시물 표시

2013년 10월 19일 토요일

스프링MultipartFile멀티(다중 파일 업로드[Spring Framework3.X MVC multiple file upload]

스프링MultipartFile멀티(다중 파일 업로드[Spring Framework3.X MVC multiple file upload]

1. fileupload 라는 spring mvc 프로젝트 생성
 
[전체구조]
 

 
[pom.xml]
 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>onj.springframework.samples</groupId>
 <artifactId>springmvc</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <properties>
  <!-- Generic properties -->
  <java.version>1.7</java.version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <!-- Spring -->
  <spring-framework.version>3.2.3.RELEASE</spring-framework.version>
  <!-- Logging -->
  <logback.version>1.0.13</logback.version>
  <slf4j.version>1.7.5</slf4j.version>
  <!-- Test -->
  <junit.version>4.11</junit.version>
 </properties>
 <dependencies>
  <!-- Spring and Transactions -->
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>${spring-framework.version}</version>
  </dependency>
  
  <!-- Apache Commons file upload -->
  <dependency>
   <groupId>commons-fileupload</groupId>
   <artifactId>commons-fileupload</artifactId>
   <version>1.2.2</version>
  </dependency>
  <!-- Apache Commons IO -->
  <dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-io</artifactId>
   <version>1.3.2</version>
  </dependency>
  <!-- JSTL for c: tag -->
  <dependency>
   <groupId>jstl</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
  </dependency>
 </dependencies>
</project>

2. 모델 작성
 
fileupload.jsp에서 넘기는 폼 데이터를 받기 위한 객체
 
[FileForm.java]
 
package onj.spring.fileupload.model;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;

public class FileForm {
 private List<MultipartFile> files;
 public List<MultipartFile> getFiles() {
  return files;
 }
 public void setFiles(List<MultipartFile> files) {
  this.files = files;
 }

}

3. 컨트롤러 작성
 
[OnjController.java]
 
package onj.spring.fileupload.controller;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import onj.spring.fileupload.model.FileForm;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class OnjController {

 @RequestMapping(value = "/view", method = RequestMethod.GET)
 public String displayForm() {
  return "fileupload";
 }
 @RequestMapping(value = "/save", method = RequestMethod.POST)
 public String save(@ModelAttribute("uploadForm") FileForm uploadForm,
   Model map) throws Exception {
  List<MultipartFile> files = uploadForm.getFiles();
 
  //success.jsp 로 보낼 파일 이름 저장
  List<String> fileNames = new ArrayList<String>();
  if (null != files && files.size() > 0) {
   for (MultipartFile multipartFile : files) {
    String fileName = multipartFile.getOriginalFilename();
    String path = "c:/java/project/upload/" + fileName;
   
    File f = new File(path);
   
    multipartFile.transferTo(f);
      
    fileNames.add(fileName);
   }
  }
  map.addAttribute("files", fileNames);
  return "success";
 }
}

4.  /src/main/webapps/jsp/fileupload.jsp
 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
    <title>스프링 멀티 파일 업로드</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
<!-- jquery로 파일 첨부 추가 -->
$(document).ready(function() {
    //add more file components if Add is clicked
    $('#addFile').click(function() {
        var fileIndex = $('#fileview tr').children().length;     
        $('#fileview').append(
                '<tr><td>'+
                '   <input type="file" name="files['+ fileIndex +']" />'+
                '</td></tr>');
    });    
});
</script>
</head>
<body>
<h3>SpringMVC Muli File Upload example(oraclejavanew.kr)</h3>

<form:form method="post" action="save.html"
      modelAttribute="uploadForm" enctype="multipart/form-data">

    <input id="addFile" type="button" value="File Add" />
    <table id="fileview">
        <tr>
            <td><input name="files[0]" type="file" /></td>
        </tr>
        <tr>
            <td><input name="files[1]" type="file" /></td>
        </tr>
    </table>
    <br/><input type="submit" value="Upload" />
</form:form>
</body>
</html>

5. /src/main/webapps/jsp/success.jsp
 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>Spring MVC Multiple File Upload</title>
</head>
<body>
    <p>upload ok!!</p>
    <ol>
        <c:forEach items="${files}" var="file">
            <li>${file}</li>
        </c:forEach>
    </ol>
</body>
</html>

6. /WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 id="WebApp_ID" version="2.5">
 <!-- 디스패처 서블릿 정의 설정 -->
 <servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>*.html</url-pattern>
 </servlet-mapping>
</web-app>
 
7. /WEB-INF/springmvc-servlet.xml
 
 <context:annotation-config />
 <context:component-scan base-package="onj.spring.fileupload.controller" />
 <bean id="multipartResolver"
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
 <bean id="jspViewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass"
   value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/jsp/" />
  <property name="suffix" value=".jsp" />
 </bean>
</beans>

8. 실행(context명/view.html)
 
실행하면 파일은 c:\java\project\upload 폴더에 생성된다.

스프링MultipartFile멀티(다중 파일 업로드[Spring Framework3.X MVC multiple file upload]

스프링MultipartFile멀티(다중 파일 업로드[Spring Framework3.X MVC multiple file upload]

1. fileupload 라는 spring mvc 프로젝트 생성
 
[전체구조]
 

 
[pom.xml]
 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>onj.springframework.samples</groupId>
 <artifactId>springmvc</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <properties>
  <!-- Generic properties -->
  <java.version>1.7</java.version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <!-- Spring -->
  <spring-framework.version>3.2.3.RELEASE</spring-framework.version>
  <!-- Logging -->
  <logback.version>1.0.13</logback.version>
  <slf4j.version>1.7.5</slf4j.version>
  <!-- Test -->
  <junit.version>4.11</junit.version>
 </properties>
 <dependencies>
  <!-- Spring and Transactions -->
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>${spring-framework.version}</version>
  </dependency>
  
  <!-- Apache Commons file upload -->
  <dependency>
   <groupId>commons-fileupload</groupId>
   <artifactId>commons-fileupload</artifactId>
   <version>1.2.2</version>
  </dependency>
  <!-- Apache Commons IO -->
  <dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-io</artifactId>
   <version>1.3.2</version>
  </dependency>
  <!-- JSTL for c: tag -->
  <dependency>
   <groupId>jstl</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
  </dependency>
 </dependencies>
</project>

2. 모델 작성
 
fileupload.jsp에서 넘기는 폼 데이터를 받기 위한 객체
 
[FileForm.java]
 
package onj.spring.fileupload.model;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;

public class FileForm {
 private List<MultipartFile> files;
 public List<MultipartFile> getFiles() {
  return files;
 }
 public void setFiles(List<MultipartFile> files) {
  this.files = files;
 }

}

3. 컨트롤러 작성
 
[OnjController.java]
 
package onj.spring.fileupload.controller;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import onj.spring.fileupload.model.FileForm;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class OnjController {

 @RequestMapping(value = "/view", method = RequestMethod.GET)
 public String displayForm() {
  return "fileupload";
 }
 @RequestMapping(value = "/save", method = RequestMethod.POST)
 public String save(@ModelAttribute("uploadForm") FileForm uploadForm,
   Model map) throws Exception {
  List<MultipartFile> files = uploadForm.getFiles();
 
  //success.jsp 로 보낼 파일 이름 저장
  List<String> fileNames = new ArrayList<String>();
  if (null != files && files.size() > 0) {
   for (MultipartFile multipartFile : files) {
    String fileName = multipartFile.getOriginalFilename();
    String path = "c:/java/project/upload/" + fileName;
   
    File f = new File(path);
   
    multipartFile.transferTo(f);
      
    fileNames.add(fileName);
   }
  }
  map.addAttribute("files", fileNames);
  return "success";
 }
}

4.  /src/main/webapps/jsp/fileupload.jsp
 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
    <title>스프링 멀티 파일 업로드</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
<!-- jquery로 파일 첨부 추가 -->
$(document).ready(function() {
    //add more file components if Add is clicked
    $('#addFile').click(function() {
        var fileIndex = $('#fileview tr').children().length;     
        $('#fileview').append(
                '<tr><td>'+
                '   <input type="file" name="files['+ fileIndex +']" />'+
                '</td></tr>');
    });    
});
</script>
</head>
<body>
<h3>SpringMVC Muli File Upload example(oraclejavanew.kr)</h3>

<form:form method="post" action="save.html"
      modelAttribute="uploadForm" enctype="multipart/form-data">

    <input id="addFile" type="button" value="File Add" />
    <table id="fileview">
        <tr>
            <td><input name="files[0]" type="file" /></td>
        </tr>
        <tr>
            <td><input name="files[1]" type="file" /></td>
        </tr>
    </table>
    <br/><input type="submit" value="Upload" />
</form:form>
</body>
</html>

5. /src/main/webapps/jsp/success.jsp
 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>Spring MVC Multiple File Upload</title>
</head>
<body>
    <p>upload ok!!</p>
    <ol>
        <c:forEach items="${files}" var="file">
            <li>${file}</li>
        </c:forEach>
    </ol>
</body>
</html>

6. /WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 id="WebApp_ID" version="2.5">
 <!-- 디스패처 서블릿 정의 설정 -->
 <servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>*.html</url-pattern>
 </servlet-mapping>
</web-app>
 
7. /WEB-INF/springmvc-servlet.xml
 
 <context:annotation-config />
 <context:component-scan base-package="onj.spring.fileupload.controller" />
 <bean id="multipartResolver"
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
 <bean id="jspViewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass"
   value="org.springframework.web.servlet.view.JstlView" />
  <property name="prefix" value="/jsp/" />
  <property name="suffix" value=".jsp" />
 </bean>
</beans>

8. 실행(context명/view.html)
 
실행하면 파일은 c:\java\project\upload 폴더에 생성된다.

2013년 10월 17일 목요일

자바 상속(java inheritance) 상속은 IS-A 관계

자바 상속(java inheritance)
 
상속은 IS-A 관계(하위클래스는 완벽한 상위클래스)
상위 클래스의 모든 내용을 하위 클래스가 계승한다.
하위 클래스는 상속된 필드와 메소드 중에 private으로 선언된 것이 아닌 것에만 접근할 수 있다.
(private으로 선언된것도 상속되지만 단지 접근 못할 뿐)
원시 코드 및 외부 인터페이스 재사용
하위 클래스는 상위클래스를 처다볼 수 잇지만 상위클래스는 하위클래스가 여러 개가 될 수 있으므로 정할 수 없다.
상위 클래스는 오직 한 개만 존재(자바는 단일 상속, C++의 경우 여러 개의 상위 클래스가 존재할 수 있다)
상위클래스 자체 및 변수, 메쏘드의 재사용
 

[예제]
 
package onj;
class A
{
    int f;          // 인스턴스 변수
    void m() { System.out.println("m()"); }      // 인스턴스 메쏘드
    static int sf;  // 클래스 변수
    static void sm() { 
     System.out.println("A sm()"); 
    } // 클래스 메쏘드
}
class InheritanceTest extends A
{
    int f2;
    void m2() { 
     System.out.println("B sm()"); 
    }
    
    public static void main(String[] args)
    {
     InheritanceTest b = new InheritanceTest();
        b.f2++; // InheritanceTest의 필드
        b.m2(); // InheritanceTest의 메쏘드
        b.f++; // A로부터 상속된InheritanceTest의 필드
        b.m(); // A로부터 상속된 InheritanceTest의 인스턴스 메쏘드
        InheritanceTest.sf++; // A로부터 상속된 클래스 필드
        InheritanceTest.sm(); // A로부터 상속된 클래스 메쏘드       
    }
}

 
 
[결과]
 
B sm()
m()
A sm()

오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)