[BE/JAVA] JSP에서 엑셀파일 읽어서 DB에 저장하기 - 2

2021. 7. 1. 22:00
728x90
반응형

2021.07.01

46번째 포스팅

 

입사 115일차.

오늘은 업로드하려는 파일에 대한 여러가지 validation을 알아보려고 한다.

확장자, 파일명 정규표현식 등을 체크하는  validation을 <script> 태그에 작성해보자.

 

 

1. html/jsp 태그 작성

  ① 파일을 업로드한 뒤에 엑셀파일의 데이터를 읽어오기 때문에 <form> 태그를 사용해서 파일을 jsp로 전달할 것이다.

       ※ 필수로 작성해야 하는 코드는 11, 14, 15, 18 라인입니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div style="border: 1px solid #222;">
        <form id="frm" method="POST" enctype="multipart/form-data">
            <div style="padding: 10px;">
                <div>
                    <input type="file" id="inputExcelFile" name="inputExcelFile" />
                    <button type="button" id="uploadBtn">jsp로 전달!</button>
                </div>
            </div>
        </form>
    </div>
</body>
</html>
cs

 

  ② 완성된 View를 확인

 

 

2. 확장자 체크 스크립트

  ① 엑셀파일의 확장자인 .xls, .xlsx가 아니면 경고메세지를 표시한다.

  ② .split() 메소드를 사용해서 확장자만 받을 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function fn_xlsXlsxChk(fileName) {
 
    // 문자열.split() 메소드는 문자열을 파라미터에 적은 문자로 구분하여 배열로 저장한다.
    var tmp = fileName.split(".");
    var extensionType = tmp[1];
        
    // extensionType에 담은 확장자가 'xls' 또는 'xlsx'이면 true를 리턴. 아닐 경우 false를 리턴.
    if( extensionType == "xls" ){
        return true;
    } else if( extensionType == "xlsx" ){
        return true;
    } else{
        return false;
    }
}
cs

 

 

3. 파일명 정규표현식 스크립트

  ① 파일명에 영어, 숫자, 특수문자( . _ -) 를 제외한 문자가 포함되어 있으면 경고메세지를 표시한다.

  ② 정규표현식.test( 파일명 ) 메소드를 사용해서 정규표현식에 부합하는지 확인할 수 있다.

  ③ 정규표현식 관련 포스팅

 

[FE/JS] 정규표현식 정리

2021.04.15 20일차 입사 39일차. 일반적으로 정규표현식은 JS에서 처리한다. 전화번호나 주민번호, 사업자번호 등 숫자만을 입력하거나 ID나 PW에 특수문자를 제거하기 위해 사용한다. 매번 필요할때

limreus.tistory.com

1
2
3
4
5
6
7
8
9
function regularExpression( fileName ) {
        
    // -, _, ., 숫자, 알파벳 소문자가 아니면 체크
    var checkRegExp = /^[-_.0-9a-z]*$/;
        
    // 2. 허용된 범위의 문자만 사용했다면 true를 리턴. 그 외의 문자를 사용했다면 false를 리턴.
    if ( !checkRegExp.test( fileName ) ) return false;
    else return true;
}
cs

 

 

4. jsp로 전달하는 스크립트

  ① <form> 태그에 action속성을 입력해서 jsp로 <form> 태그 안의 value들을 전달한다.

  ② C:\Temp\ 라는 경로를 하드코딩한 후, 파일명을 뒤에 바꿔주는 방식으로 진행하기 때문에 파일명을 추가로 전달해야 한다.

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
function fn_chkNSubmit() {
 
    // input type="file"의 value는 선택한 파일의 경로!
    var filePath = $("#inputExcelFile").val();
 
    // input type="file"의 파일명은 .files[0].name 메소드를 사용
    var fileName = $("#inputExcelFile").files[0].name;
 
    // 파일명 체크 스크립트
    if ( !regularExpression( fileName ) ) {
        alert("파일명을 확인!");
        return false;
    }
 
    // 확장자 체크 스크립트
    if ( !fn_xlsXslxChk( fileName ) ) {
        alert("엑셀파일만 업로드 가능!");
        return false;
    }
 
    // 파일명을 "." 으로 나눠서 확장자를 제외한 파일명만 저장
    var tmp = fileName.split(".");
    var justFileName = tmp[0];
 
    // 파일명만 URI에 붙여서 URI를 완성한 후, action속성 추가 후 Submit!
    $("#frm").attr("action""jsp이름.jsp?justFileName=" + justFileName;
    $("#frm").submit[0]();
}
cs

 

 

5. 전송버튼을 누르면 스크립트가 실행되는 JQuery

  ① id="uploadBtn" 버튼을 클릭하면 fn_chkNSubmit() 스크립트가 실행된다.

  ② $(function() {}); JQuery는 페이지가 로드되는 순간 같이 로드된다.

  ③ 제일 먼저 로드되어야 하기 때문에, <script>태그 제일 상단에 작성해주는 것이 좋다.

1
2
3
4
5
$(function() {
    $("#uploadBtn").click(function() {
        fn_chkNSubmit();
    });
});
cs

 

 

다음포스팅의 주제

 

[BE/JAVA] JSP에서 엑셀파일 읽어서 DB에 저장하기 - 3

2021.07.03 48번째 포스팅 입사 117일차. 이제 jsp로 전달한 엑셀파일과 파일명을 사용해서 엑셀파일을 읽어올 수 있다. 파일을 업로드하는 코드는 다른 블로그에 더 자세하고 잘 설명되어있으니 엑

limreus.tistory.com

 

728x90
반응형

BELATED ARTICLES

more