<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

request.setCharacterEncoding("EUC-KR");

String value1 = request.getParameter("key1");

String value2 = request.getParameter("key2");

out.println("this is server response");

out.println("key1=" + value1);

out.println("key1=" + value2);

%>

<!-- jsp는 단순히 보내는   -->

</body>

</html>

블로그 이미지

왕왕왕왕

,

자바 -> jsp -> DB 를 연결해서 서버처럼 jsp를 사용하려고함


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.URL;

import java.net.URLConnection;

import java.net.URLEncoder;


public class Localhostjava {


public static void main(String[] args) {

// TODO Auto-generated method stub

OutputStreamWriter wr = null;

BufferedReader rd = null;

try {

// Construct data

String data = URLEncoder.encode("key1", "EUC-KR") + "=" + URLEncoder.encode("value1", "EUC-KR");

data += "&" + URLEncoder.encode("key2", "EUC-KR") + "=" + URLEncoder.encode("홍길동", "EUC-KR");

//데이터를 만든다 보내는 데이터는 이렇다 key1=value1&key2=%C8%AB%B1%E6%B5%BF


// Send data

URL url = new URL("http://localhost:8080/sendReciver/was.jsp");

      URLConnection conn = url.openConnection();


//URL 접속을 입출력에 사용할 수 있습니다. URL 접속을 사용해 출력을 실시하는 경우에는 DoOutput 플래그를 true 로 설정합니다. 입력을 실시하는 경우에는 false 로 설정합니다. 기본값는 false 입니다. 

conn.setDoOutput(true);

wr = new OutputStreamWriter(conn.getOutputStream());

wr.write(data);

wr.flush();


// Get the response

rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "EUC-KR"));

String line;

while ((line = rd.readLine()) != null) {

System.out.println(line);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}



'JAVA > 자바' 카테고리의 다른 글

자바 데이터 - 스트링 변환  (0) 2016.04.26
자바 자바 jsp 호출(was) - jsp소스  (0) 2016.02.26
자바 POI라이브러리로 엑셀파일 읽고쓰기  (0) 2016.02.10
자바 JFileChooser  (0) 2016.02.10
자바 오류  (0) 2015.11.21
블로그 이미지

왕왕왕왕

,
첨부 http://neosm.tistory.com/entry/JAVA-POI-%EC%97%91%EC%85%80%ED%8C%8C%EC%9D%BC-%EC%9D%BD%EA%B8%B0-xlsx-%ED%99%95%EC%9E%A5%EC%9E%90


다운경로 http://poi.apache.org/download.html

binary distribution에 .zip 으로된걸 다운


xls는 2007이전버전

POIFSFileSystem fileSystem = new POIFSFileSystem(new FileInputStream(new File(excelFile)));

SSFWorkbook work = new HSSFWorkbook(fileSystem);

xlsx는 2007이후버전

XSSFWorkbook work = new XSSFWorkbook(new FileInputStream(new File(excelFile)));




import java.io.FileInputStream;


import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class XlsxRead {

public static void main(String[] args) {

XSSFRow row;

XSSFCell cell;


try {

FileInputStream inputStream = new FileInputStream("XlsxRead.xlsx");

XSSFWorkbook workbook = new XSSFWorkbook(inputStream);


//sheet수 취득

int sheetCn = workbook.getNumberOfSheets();

System.out.println("sheet수 : " + sheetCn);

for(int cn = 0; cn < sheetCn; cn++){

System.out.println("취득하는 sheet 이름 : " + workbook.getSheetName(cn));

System.out.println(workbook.getSheetName(cn) + " sheet 데이터 취득 시작");

//0번째 sheet 정보 취득

XSSFSheet sheet = workbook.getSheetAt(cn);

//취득된 sheet에서 rows수 취득

int rows = sheet.getPhysicalNumberOfRows();

System.out.println(workbook.getSheetName(cn) + " sheet의 row수 : " + rows);

//취득된 row에서 취득대상 cell수 취득

int cells = sheet.getRow(cn).getPhysicalNumberOfCells(); //

System.out.println(workbook.getSheetName(cn) + " sheet의 row에 취득대상 cell수 : " + cells);

for (int r = 0; r < rows; r++) {

row = sheet.getRow(r); // row 가져오기

if (row != null) {

for (int c = 0; c < cells; c++) {

cell = row.getCell(c);

if (cell != null) {

String value = null;

switch (cell.getCellType()) {

case XSSFCell.CELL_TYPE_FORMULA:

value = cell.getCellFormula();

break;

case XSSFCell.CELL_TYPE_NUMERIC:

value = "" + cell.getNumericCellValue();

break;

case XSSFCell.CELL_TYPE_STRING:

value = "" + cell.getStringCellValue();

break;

case XSSFCell.CELL_TYPE_BLANK:

value = "[null 아닌 공백]";

break;

case XSSFCell.CELL_TYPE_ERROR:

value = "" + cell.getErrorCellValue();

break;

default:

}

System.out.print(value + "\t");

} else {

System.out.print("[null]\t");

}

} // for(c) 문

System.out.print("\n");

}

} // for(r) 문

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

'JAVA > 자바' 카테고리의 다른 글

자바 자바 jsp 호출(was) - jsp소스  (0) 2016.02.26
자바 자바 JSP 호출 하기 (was) - 자바 소스  (0) 2016.02.26
자바 JFileChooser  (0) 2016.02.10
자바 오류  (0) 2015.11.21
자바 ARC4 암호화  (0) 2015.11.21
블로그 이미지

왕왕왕왕

,

자바 JFileChooser

JAVA/자바 2016. 2. 10. 15:29

출처: http://202psj.tistory.com

JFileChooser 생성

JFileChooser fileDlg = new JFileChooser();

    int result  = fileDlg.showOpenDialog(null);
            if(result == JFileChooser.APPROVE_OPTION) //파일을 선택하고 열었을때 이벤트
            {



            }


필터

// 필터설정 png, jpg 다이렉트만 보이고 나머지는 않보이게 한다.

fileDlg.setFileFilter(new javax.swing.filechooser.FileFilter() {
               
                @Override
                public String getDescription() {
                    // TODO Auto-generated method stub
                    return null;
                }
               
                @Override
                public boolean accept(File f) {
                    // TODO Auto-generated method stub
                    String fileName = f.getName();

                    if(fileName.indexOf(".png") != -1)
                    {
                        return true;
                    }
                    else if(fileName.indexOf(".jpg") != -1)
                    {
                        return true;
                    }
                    else if(f.isDirectory())
                    {
                        return true;
                    }
                   
                    return false;
                }
            });


///////////////////////////////////////////////////////////////////////////////


FileChooser는 사용자로 하여금 읽어들일 파일이나 저장할 파일을 선택하도록 도와주는 선택창이다. JFileChooser는 아래의 그림처럼 FileSystemView, FileView, FIleFileter 그리고 Accessory등과 같은 복합적인 구조로 되어 있다.(아래의 그림에서는 Accessory는 보이지 않음)

 

파일을 선택하기 위해서 사용되는 대표적인 메소드는 showOpenDialog(), 와 showSaveDialog()를 사용한다.

창이 열리고 "열기"버튼이나 "저장"버튼을 클릭하게되면 APPROVE_OPTION이 반환되고, 취소 버튼을 클릭하게 되면 CANCEL_OPTION 이 반환된다.

 

선택한 파일에 대한 정보는 getSelectedFile()메소드를 사용하므로 알 수 있다.



 

 

[주요생성자]

JFileChooser() 사용자의 홈 디렉토리를 가리키는 창을 만든다.
JFileChooser(File dir)
JFileChooser(String dir)
주어진 dir을 가리키는 창을 만든다.

 

 

[ 기본 설정 관련 주요메소드]

void setCurrentDirectory(File dir) 현재 사용 디렉토리를 지정한다.
void setDialogTitle(String title) 창의 제목을 정한다.
void setApproveButtonText(String txt) 열기 또는 저장 버튼의 텍스를 지정한다.

 

 

[대화창 관련 주요 메소드]

int showOpenDialog(Component parent) 열기용 창을 만든다.
int showSaveDialog(Component parent) 저장용 창을 만든다.

이때 반환값 int는 JFileChooser.APPROVE_OPTION 또는 JFileChooser.CANCEL_OPTION 값을 반환한다.

 

 

[파일 선택관련 주요 메소드]

void setFIleSelectionMode(int mode)

파일 선택 모드를 정한다.

  • JFileChooser.FILES_ONLY : 파일만 선택 가능
  • JFileChooser.DIRECTORIES_ONLY : 디렉토리만 선택 가능
  • JFileChooser.FILES_AND_DIRECTORIES : 파일과 디렉토리 모두 가능
void setMultiSelectionEnabled(boolean b) 파일을 다중 선택하고자 할 때 사용한다.

void setSelectedFIle(File file)
void setSelectedFIles(File[] file)

주어진 파일을 선택 상태로 창을 생성한다.
File getSelectedFile()
FIle[] getSelectedFiles()
선택된 파일을 가져온다.

 

[컨트롤 관련 주요 메소드]

void addChoosableFileFilter(FileFilter filter) 파일 필터를 추가한다.
void setFileFilter(FileFilter filter) 파일 필터를 지정한다.
void setAccessory(JComponent accessory) 액세서리를 지정한다.
void setFileSystemView(FileSystemView fs) FIleSystemView를 지정한다.
void setFileView(FileView fv) FileView를 지정한다.

 

[사용예]

JDK 6.0
         JFileChooser chooser = new JFileChooser();
            FileNameExtensionFilter filter = new FileNameExtensionFilter(
                "JPG & GIF Images", "jpg", "gif");  //description,......확장자
            chooser.setFileFilter(filter);    //필터 셋팅
            int returnVal = chooser.showOpenDialog(parent);
            if(returnVal == JFileChooser.APPROVE_OPTION) {
               System.out.println("You chose to open this file: " +
                    chooser.getSelectedFile(). getName());
            }

JDK 6.0 이전버전

읽기창 만들기

  1.     public void fileOpen()
  2.     {
  3.         JFileChooser fc;
  4.         File fileName;

  5.         if(fileName !=null)
  6.         {
  7.             String dir = fileName.getAbsolutePath(); //현재 파일이 위치하는 디렉토리를 가져온다.
  8.             fc = new JFileChooser(dir);
  9.         }
  10.         else
  11.         {
  12.             fc = new JFileChooser();
  13.         }
  14.         
  15.         int yn = fc.showOpenDialog(this);
  16.         if(yn != JFileChooser.APPROVE_OPTION) return;
  17.         
  18.         fileName = fc.getSelectedFile();
  19.     }

저장창 만들기

  1.     public boolean fileSave()
  2.     {
  3.         File fileName;
  4.         JFileChooser fc = new JFileChooser();
  5.         int yn = fc.showSaveDialog(this);
  6.         
  7.         if(yn != JFileChooser.APPROVE_OPTION)
  8.         {
  9.              fileName = null;
  10.              return false;
  11.         }
  12.         
  13.         fileName = fc.getSelectedFile();
  14.         
  15.         this.setTitle("MyEditor[" + fileName + "]");
  16.         
  17.         return true;
  18.     
  19.     }

파일 필터 만들기

먼저 아래와 같은 소스를 만들어 컴파일 한다.

  1. package classes;
  2. import java.io.*;

  3. class MyFilter extends javax.swing.filechooser.FileFilter
  4. {
  5.     String type;
  6.     String desc;
  7.     public MyFilter(String type, String desc)
  8.     {
  9.         this.type = type;
  10.         this.desc = desc;
  11.     }
  12.     public boolean accept(File f)
  13.     {
  14.         return f.getName().endsWith(type) || f.isDirectory();
  15.     }
  16.     
  17.     public String getDescription()
  18.     {
  19.         return desc;
  20.     }
  21. }

필터가 필요한 부분에서 아래 소스의 5,6행 처럼 원하는 필터를 지정하여 창을 열면 된다.

  1.         JFileChooser fc;
  2.         fc = new JFileChooser();
  3.         
  4.         // file filtering
  5.         fc.addChoosableFileFilter(new MyFilter(".txt","Text Files"));
  6.         fc.addChoosableFileFilter(new MyFilter(".java","Java Files"));

 



'JAVA > 자바' 카테고리의 다른 글

자바 자바 JSP 호출 하기 (was) - 자바 소스  (0) 2016.02.26
자바 POI라이브러리로 엑셀파일 읽고쓰기  (0) 2016.02.10
자바 오류  (0) 2015.11.21
자바 ARC4 암호화  (0) 2015.11.21
자바 멀티파트  (0) 2015.11.02
블로그 이미지

왕왕왕왕

,

자바 오류

JAVA/자바 2015. 11. 21. 14:52
오류:java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM

해결:32bit JVM을사용해야된다. 라이브러리가 32bit이기때문에

 

오류:java.security.NoSuchProviderException No such provider: BC'

해결:

//bcprov-jdk jar 라이브러리를 찾아서 넣어주고 아래코드 작성하면된다.

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());


 

'JAVA > 자바' 카테고리의 다른 글

자바 POI라이브러리로 엑셀파일 읽고쓰기  (0) 2016.02.10
자바 JFileChooser  (0) 2016.02.10
자바 ARC4 암호화  (0) 2015.11.21
자바 멀티파트  (0) 2015.11.02
자바 스트림 종류  (0) 2015.10.29
블로그 이미지

왕왕왕왕

,

자바 ARC4 암호화

JAVA/자바 2015. 11. 21. 14:33

package runtime;

import java.security.Security;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public class RutimeTest {

 public static void main(String[] args) throws Exception{
  // TODO Auto-generated method stub

  byte[] input = "1234567890".getBytes();
  byte[] keyBytes = "input123".getBytes();

  
  SecretKeySpec key = new SecretKeySpec(keyBytes, "ARC4");
  Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
  Cipher cipher = Cipher.getInstance("ARC4", "BC");

  //인코딩
  byte[] cipherText = new byte[input.length];

  cipher.init(Cipher.ENCRYPT_MODE, key);

  int ctLength = cipher.update(input, 0, input.length, cipherText, 0);

  ctLength += cipher.doFinal(cipherText, ctLength);

  System.out.println("cipher text: " + new String(cipherText));
  
  //디코딩

  byte[] plainText = new byte[ctLength];

  cipher.init(Cipher.DECRYPT_MODE, key);

  int ptLength = cipher.update(cipherText, 0, ctLength, plainText, 0);

  ptLength += cipher.doFinal(plainText, ptLength);

  System.out.println("plain text : " + new String(plainText));

 }
}

 

라이브러리 다운받고해야됨


 

bcprov/bcprov-jdk15on-1.52.jar.zip( 2,482 k)

 

'JAVA > 자바' 카테고리의 다른 글

자바 JFileChooser  (0) 2016.02.10
자바 오류  (0) 2015.11.21
자바 멀티파트  (0) 2015.11.02
자바 스트림 종류  (0) 2015.10.29
자바 이미지파일 전송 클라이언트쪽  (0) 2015.10.29
블로그 이미지

왕왕왕왕

,

자바 멀티파트

JAVA/자바 2015. 11. 2. 21:58

http://egloos.zum.com/ultteky/v/3945848

파일 업로드를 위한 기본적인 폼 형태

 

웹 브라우저를 통해서 파일은 전송하기 위해서 폼 구성에 대해서 알아보자. form  태그의 속성돌중 input 태그들이 있는데

이들중 <input type="file"> 태그는 파일을 선택할 수 있는 창을 만든다.

또한 이렇게 선택된 파일을 전송하기 위해서 form 태그의 속성들 중 method외 enctype을 다음과 같이 지정한다.

 

<form name="formName" method="post" enctype="multipart/form-data">

 

<input type="file" name="selectfile">

 

Warn

 

<form method="post" enctype="multipart/form-data">으로 지정한 폼 요소에서 파일 업로드를 위한

파일 요소를 지정해야한다.

<input type="file" name="filetype"> input 태그의 속성으로 type은 file로 지정하고,

 이 태그에 대한 이름을 명시 해야한다.

 

<form method="post">의 형태로 전송한 폼에 담겨진 파라미터들은 request 객체를 통해서 이름에 해당되는 값을 얻어낼 수 있다.

하지만 이렇게 <form name="formName" method="post" enctype="multipart/form-data">에서 enctype="multipart/form-data"로

지정한 폼을 전송했을때, request 객체로 파라미터의 값을 얻어 낼수 없다.

 

그래서 enctype="multipart/form-data" 로 전송한 폼에 담겨진 파라미터들에 대한 이름과 값을 얻어내기 위해,그리고

<input type="file">로 지정된 파일을 서버상의 한 폴더에 업로드하기 위해서 특별한 컴포넌트가 필요하다.

http://servlets.com 에서 제공하는 cos.jar 파일에는 필요한 컴포넌트가 있다.

이 컴포넌트를 설치하자.

 

Tip

파일업로드 및, 폼 데이터를 파싱하는 컴포넌트로 cos.jar 이에외도 많은 컴포넌트가 있다.

 

cos.jar를 myapp/WEB-INF/lib폴더에 복사하는 이유

 

JSP에서 cos.jar의 패키지를 이용하게 되는데 , cos.jar는 톰켓에 기본적으로 내장되어 있지 않은 외부의 패키지이다.

외부의 패캐니는 WEB-INF/lib 폴더에 위치해야 하는데, 이때 WEB-INF는 각각의 웹 어플리케이션에 이 폴더가

존재한다. 본이이 작성하는 모든 예제는 myapp로 이름 지어진 웹 어플리케이션에 위치하는데, 이 어플리케이션이 실행될

때 사용되는 패키지가 해당 어플리케이션 /WEB-INF/lib 폴더에 있는 패키지 이다.

 

Constructor Summary

 

MultipartRequest(javax.servlet.http.HttpServletReqeust request,

                         java.lang.String.saveDirectory,

                         int maxPostSize,

                         java.lang.String encoding,

                         FileRenamePolicy policy)

 

Method Summary

 

java.lang.String                              getContentType(java.lang.String name)

                                                    업로드된 파일의 컨텐트 타입을 반환, 업로드된 파일이 없으면 null을 반환

 

java.io.File                                    getFile(java.lang.String name)

                                                    서버 상에 업로드된 파일의 파일 객체를 반환, 업로드된 파일이 없다면 null을 반환

 

java.util.Enumeration                      getFileNames()

                                                   폼 요소 중 input 태그 속성이 file로 된 파라미터의 이름들을 반환, upload 된

                                                   파일이 없으면 비어있는 Enumeration을 반환

 

java.lang.String                             getFilesystemName(java.lang.String name)

                                                   사용자가 지정해서 서버 상에 실제로 업로드된 파일명을 반환

 

java.lang.String                             getOrignalFileName(java.lang.String name)

                                                   사용자가 지정해서 서버상에 업로드된 파일명을 반환, 이때의 파일명은 파일 중복을

                                                   고려한 파일명 변경 전의 이름을 말한다.

 

java.lang.String                             getParameter(java.lang.String name)

                                                   스트링으로 주어진 이름에 대한 값을 반환. 값 없이 파라미터가 전송되었거나 해당되는

                                                   이름의 파라미터가 전송이 안 되었을 경우 null 를 반환

 

java.util.Enumeration                      getParameterNames()

                                                   모든 파라미터 이름을 Enumeration 으로 반환 한다.

 

java.lang.String[]                          getParameterValues(java.lang.String name)

                                                   주어진 이름에 대한 값을 스트링 배열로 반환, 파라미터가 전송되지 않았을 때는 null 반환

 

 첫 번째로 해야 할 부분은 폼 enctype 속성을 multipart/form-data로 지정한 폼에 담겨진 파라미터를 읽어오기 위해서

MultipartRequest 의 객체를 생성해야 한다. 이 객체를 통해서 파일 업로드를 구현 할 수 있다.

MultipartRequest 객체를 생성한후 객체를 통해서 MultiPartRequest 클래스에서 제공하는 메소드들을 사용하면 쉽게 파일 업로드와 파라미터를 읽어 올 수 있다.

MultipartRequest 객체를 생성한 뒤, 메소드 사용의 예를 들어 파일 업로드와 파라미터에 대한 처리를 위한 절차를 설명 하겠다.

 

MultipartRequest의 생성자

 

MultipartRequest의 생성자를 종류가 많다.

cos.jar 에 있는 MultipartRequest 클래스의 생성자 중 다음의 생성자는 한글 인코딩,업로드되는 파일이 기존에 파일과 중복될때

의 단점을 해결한 생성자이다.

 

그래서 이 생성자를 사용하여 MultipartRequest 의 객체를 생성한다.

 

MultipartRequest multi = new MultiPartRequest(request,

                                                                   folderDirectory,

                                                                   1024*10,

                                                                   "euc-kr",

                                                                   new DefaultFileRenamePolicy());

 

첫 번째 인자는 Request 객체이고,

두 번재 인자는 업로드된 파일이 저장될 파일폴더 경로 이다.

세 번째 인자를 업로드할 파일의 최대 크기이다.( 1024=1024Bytes, 즉 1KB, 1024*10 = 10KB )

네 번째는 인코딩 타입

다섯 번째 인자는 업로드 될 파일명이 기존에 업로드된 파일명과 같은 경우 덮어쓰기를 방지하기 위해 설정하는 부분이다.

 

이 객체가 생성되면서 폼에서 지정한 파일이 서버상의 폴더에 저장된다.

 

Warn!!!

 

파일 업로드를 위한 파일 선택을 위해서 <input type="file">을 사용합니다.

그리고 이 <input type="file">라는 폼 요소를 포함하는 폼은 파일 전송을 위해서

<form method="post" enctype="multipart/form-data"> 로 속성을 지정해야 한다.

 

 

 

getParameterNames() 메소드

 

Enumeration params = multi.getParameterNames();

 

multi 라는 이름을 가지는 객체를 통해서 MultipartRequest  클래스에 있는 메소드를 사용 할수 있는데,

getParameterNames() 메소드는 폼에서 전송한 파라미터들의 이름을 Enumeration 타입으로 반환한다.

폼에 있는 input 태그중 file 속성이 아닌 모든 파라미터들의 이름을 반환하는 메소드 이다.

 

 

getParameter() 메소드

 

String paramValue = multi.getParameter(java.lang.String name);

 

getParameter 메소드는 request 객체에서 사용되는 getParameter 메소드처럼 파라미터의 이름을 인자로 받아서 그 파라미터

의 값을 반환하는 메소드이다.

이 메소드에 전달될 인자는 getParameterNames() 메소드를 통해서 얻어온 파라미터 이름을 인자로 주면 그 파라미터에 담긴 값을반환한다.

 

getFileNames() 메소드

 

Enumeration files = multi.getFileNames();

 

getFileNmaes() 메소드는 폼 요소 중 file 속성으로 지정된 input 태그의 이름, 즉 file 속성을 가진 파라미터의 이름을 Enumeration 타입

으로 반환한다.

예를 들면 <input type="file" name="uploadfile"> 태그가 폼 요소에 있었다면 getFileNmaes() 메소드는 uploadfile

이란 파라미터의 이름을 담긴 Enumeration을 반환한다.

 

 

getFilesystemName() 메소드

 

String filename = multi.getFilesystemNmae(name);

 

file 속성으로 지정된 input 태그에 의해 서버 상에 실제로 업로드된 파일 이름을 스트링 타입으로 반환한다.

이 메소드가 반환하는 파일명의 file 속성을 가진 input 태그에서 사용자가 지정한 파일 이름이 아니고

사용자가 선택한 파일이 실제 서버 상의 폴더에 저장 되었을 때의 파일명을 반환한다.

아래의 getOriginalFileNmae() 메소드에서 비교 설명 하겠다.

 

getOriginalFileName() 메소드

 

String original = multi.getOriginalFileName(name);

 

getOriginalFileName() 메소드는 사용자가 직접 지정한 파일명을 반환한다.

MultipartRequest 의 생성자 중 중복된 파일을 덮어쓰는 것을 방지하기 위해 사용되는 FileRenamePolicy 인터페이스를

구현한 DefaultFileRenamePolicy 에 의해서 파일명이 변경되기 전의 파일명을 반환한다.

 

getFileSystemName() 메소드는 기존에 업로드된 파일명들 중에 새로 업로드할 파일명이 중복될 경우 파일명 뒤에

filename1.***, filename2.*** 식으로 변경된 이름을 반환한다.

중복되는 경우가 없다면 원래의 파일명을 반환한다.

 

getOriginalFileName() 은 사용자가 지정해서 업로드되는 파일명을 반환하고,

getFileSystemName()  메소드는 파일명이 중복되는 경우 변경된 파일명을 반환한다.

 

 

getContentType() 메소드

 

String type = multi.getContentType(name);

 

getContentType() 메소드는 업로드된 파일의 컨텐트 타입을 반환한다.

 

 

getFile() 메소드

 

File f = multi.getFile(name);

 

getFile() 메소드는 서버 상에 업로드된 파일에 대한 파일 객체를 반환한다.

 

'JAVA > 자바' 카테고리의 다른 글

자바 오류  (0) 2015.11.21
자바 ARC4 암호화  (0) 2015.11.21
자바 스트림 종류  (0) 2015.10.29
자바 이미지파일 전송 클라이언트쪽  (0) 2015.10.29
자바 이미지파일 전송 서버쪽  (0) 2015.10.29
블로그 이미지

왕왕왕왕

,

자바 스트림 종류

JAVA/자바 2015. 10. 29. 23:15

I/O 입출력 클래스의 종류


JAVA의 I/O는 java.io 패키지에 클래스가 정의되어 있는 경우가 대부분이다. (최근에는 nio 등이 나왔다.)


JAVA의 초기에는 입출력 클래스도 단순하였다. 단순히 바이트 단위의 입출력만 지원했지만, 현재는 계속적으로 확장되며 문자 단위의 입출력 뿐만 아니라 다양한 기능을 지원하는 클래스들이 생겨났다.


1. I/O 클래스의 이름과 의미


Stream으로 끝나는 클래스 : 바이트 단위로 입출력을 수행하는 클래스

Reader / Writer로 끝나는 클래스 : 캐릭터 단위로 입출력을 수행하는 클래스

File로 시작하는 클래스 : 하드디스크의 파일을 사용하는 클래스

Data로 시작하는 클래스 : 자바의 원시 자료형을 출력하기 위한 클래스

Buffered로 시작하는 클래스 : 시스템의 버퍼를 사용하는 클래스


1차 스트림 : 입/출력 통로를 직접 만드는 클래스

2차 스트림 : 기존의 통로를 이용하여 새로운 기능을 더하는 클래스



2. InputStream / OutputStream (바이트 입출력)



(1) InputStream


 클래스

설 명 

 Stream

InputStream 

 바이트 입력 스트림을 위한 추상 클래스 

2차 Stream 

FileInputStream

 파일에서 바이트를 읽어들여 바이트 스트림으로 변환 

1차 Stream 

PipedInputStream 

 PipedOutputStream에서 읽어들임 

1차 Stream

FilterInputStream 

 필터 적용(filtered) 바이트 입력을 위한 추상 클래스 

2차 Stream

LineNumberInputStream 

 바이트 입력시 라인 번호를 유지 (비추천)

2차 Stream

DataInputStream 

 기본 자료형 데이터를 바이트로 입력

2차 Stream

BufferedInputStream 

 바이트 버퍼 입력

2차 Stream

PushbackInputStream 

 읽어들인 바이트를 되돌림 (pushback) 

2차 Stream

ByteArrayInputStream 

 바이트 배열에서 읽어들임 

1차 Stream

SequenceInputStream

 t서로 다른 InputStream을 입력받은 순서대로 이어줌

2차 Stream

StringBufferInputStream 

 문자열에서 읽어들임 (비추천)

1차 Stream

ObjectInputStream 

 객체로 직렬화된 데이터를 역직렬화 하여 읽는다. 

2차 Stream


(2) OutputStream


 클래스

설 명 

 Stream

OutputStream 

 바이트 출력 스트림을 위한 추상 클래스 

2차 Stream 

FileOutputStream

 바이트 스트림을 바이트 파일로 변환 

1차 Stream 

PipedOutputStream 

 PipedOutputStream에 출력

1차 Stream

FilterOutputStream 

 필터 적용(filiterd) 바이트 출력을 위한 추상 클래스 

2차 Stream

DataOutputStream 

 바이트를 기본자료형으로 출력

2차 Stream

BufferedOutputStream 

 바이트 스트림에 버퍼 출력

2차 Stream

PrintStream

 Stream 값과 객체를 프린트

2차 Stream

ByteArrayOutputStream 

 바이트 스트림에 바이트 배열 출력

1차 Stream

ObjectputStream 

 데이터를 객체로 직렬화 하여 출력

2차 Stream



3. Reader / Writer (문자 입출력)


* 문자 입출력에는 문자 Encoding이 관여된다.


(1) Reader


 클래스

설 명 

 Stream

Reader

 바이트 입력 스트림을 위한 추상 클래스 

2차 Stream 

 BufferedReader

 문자 버퍼 입력, 라인 해석 

 2차 Stream

 LineNumberReader

 문자 입력시 라인 번호를 유지 

 2차 Stream

 CharArrayReader

 문자 배열에서 읽어들임 

 1차 Stream

 InputStreamReader

 바이트 스트림을 문자 스트림으로 변환 

 2차 Stream

 FileReader

 파일에서 바이트를 읽어들여 문자 스트림으로 변환 

 1차 Stream

 FilterReader

 필터 적용(filtered) 문자 입력을 위한 추상 클래스 

 2차 Stream

 PushbackReader

 읽어들인 문자를 되돌림 (pushback) 

 2차 Stream

 PipedReader

 PipedWriter에서 읽어들임 

 1차 Stream

 StringReader

 문자열에서 읽어들임 

 1차 Stream


(2) Writer


 클래스

설 명 

 Stream

Writer

 문자 출력 스트림을 위한 추상 클래스

 2차 Stream

BufferedWriter

 문자 스트림에 버퍼 출력, 줄바꿈 사용

 2차 Stream

CharArrayWriter 

 문자 스트림에 문자배열 출력 

 1차 Stream

OutputStreamWriter 

 문자 스트림을 바이트 스트림으로 변환 

 2차 Stream

FileWriter

 문자 스트림을 바이트 파일로 변환

 1차 Stream

FilterWriter 

 필터 적용(filtered) 문자 출력을 위한 추상 클래스 

 2차 Stream

PipedWriter 

 PipedReader에 출력 

 1차 Stream

StringWriter 

 문자열 출력 

 1차 Stream

PrintWriter 

 Writer 값과 객체를 프린트 

 2차 Stream



4. 그외의 java.io 클래스


클래스

설 명 

console 

명령행에서 쉽게 입력을 받고, 정형화된 출력을 명령행에 쉽게 출력할 수 있다. 

File

파일 객체를 생성한다. 

FileDescriptor 

물리적 파일에 대한 현재의 연결을 나타내기 위한 클래스

FilePermission 

파일 및 디렉토리에 액세스접 권한을 관리하는 클래스

RandomAccessFile 

랜덤 액세스 파일로부터 읽기와 쓰기가 동시에 이루어질 수 있다.

SerializablePermission

직렬화 가능 액세스 권한을 위한 클래스

StreamTokenizer

입력 스트림을 인수에 취해, 그것을 [토큰]에 구문 분석 해, 한 번에 1개 토큰을 읽는다. 



출처http://hyeonstorage.tistory.com/250

'JAVA > 자바' 카테고리의 다른 글

자바 ARC4 암호화  (0) 2015.11.21
자바 멀티파트  (0) 2015.11.02
자바 이미지파일 전송 클라이언트쪽  (0) 2015.10.29
자바 이미지파일 전송 서버쪽  (0) 2015.10.29
자바 tess4j import 하기  (0) 2015.10.27
블로그 이미지

왕왕왕왕

,