반응형

자바스크립트를 이용해 현재 날짜와 시간을 가져오는 방법입니다.

 

  • 현재 날짜와 시간 구하기
var nowDate = new Date();
document.write(nowDate);

 

실행 결과 : Fri Jun 23 2023 15:55:24 GMT+0900 (한국 표준시)

 

 

  • 현재의 년도, 월, 일, 요일 구하기
var nowDate = new Date();

var year = nowDate.getFullYear(); // 년도
var month = nowDate.getMonth() + 1; // 월
var date = nowDate.getDate(); // 일
var day = nowDate.getDay(); // 요일
var dayText = ['일', '월', '화', '수', '목', '금', '토']; 

document.write(year + "." + month + "." + date + " (" + dayText[day] + ")");

 

실행 결과 : 2023.06.23 (금)

 

- getFullYear() : Date 객체의 년도를 가져옴

- getMonth() : Date 객체의 월을 가져옴 1월은 0으로 나오므로 +1을 해주면 됨

- getDate() : Date 객체의 일자를 가져옴

- getDay() : Date 객체의 요일을 가져옴 결과는 0~6 으로 나오는데 0의 경우 일요일, 1의 경우 월요일임

 

 

  • 현재 시간 구하기
var nowDate = new Date();

var hour = nowDate.getHours();
var minute = nowDate.getMinutes();
var second = nowDate.getSeconds();
var millisecond = nowDate.getMilliseconds();

document.write(hour + ":" + minute + ":" + second + " " + millisecond);

 

실행 결과 : 16:5:23 401

 

- getHours() : Date 객체의 시간을 가져옴 (0~23)

- getMinutes() : Date 객체의 분을 가져옴 (0~59)

- getSeconds() : Date 객체의 초를 가져옴 (0~59)

- getMilliseconds() : Date 객체의 밀리초를 가져옴 (0~999)

 

 

반응형
반응형

자바스크립트로 원하는 만큼 날짜를 더하고 빼는 방법입니다.

 

1. 년 단위

var now = new Date();
var n = 더하거나 뺄 값;
now.setFullYear(now.getFullYear() + n );

n 에 더하거나 뺄 정수를 설정해 주시면 됩니다.

 

2. 월 단위

var now = new Date();
var n = 더하거나 뺄 값;
now.setMonth(now.getMonth() + n);

월 단위도 마찬가지로 n 에 더하고 뺄 정수를 설정해 줍니다.

 

3. 일 단위

var now = new Date();
var n = 더하거나 뺄 값;
now.setDate(now.getDate() + n);

일 단위도 동일합니다.

 

반응형
반응형

켄도 에디터를 이용할 때 value 값 변경하는 방법입니다.

 

아래와 같이 소스를 작성할 경우 해당 아이디의 밸류 값만 변경되고 에디터의 내용은 변경되지 않습니다.

$("#editor").val("test");

 

다음과 같이 작성하면 에디터의 값도 변경된 것을 확인할 수 있습니다.

var editor = $("#에디터 id").data("kendoEditor");
editor.value("변경할 값");

 

반응형
반응형

kendo grid 에서 제공하는 테이블 excel export 기능을 같이 사용할 때가 있는데

그대로 쓰면 화면에 보이는 테이블 컬럼을 다 가져오기 때문에 원하는 컬럼을 삭제하는 방법을 공유합니다.

 

var exportFlag = false;
$("#grid").data("kendoGrid").bind("excelExport", function (e) {
    if (!exportFlag) {
        e.sender.hideColumn(0); // 숨길 컬럼 index 넣어줌
        e.preventDefault();
        exportFlag = true;
        setTimeout(function () {
            e.sender.saveAsExcel();
        });
    } else {
        e.sender.showColumn(0); // 숨길 컬럼 index 넣어줌
        exportFlag = false;
    }
});

 

소스에

e.sender.hideColumn(n);

을 넣어주면 엑셀 내보내기 시 해당 인덱스의 컬럼이 삭제되는 것을 볼 수 있습니다.

반응형
반응형

자바를 이용해서 엑셀 다운로드 기능을 구현하는 방법입니다.

샘플 엑셀파일 없이 자체적으로 생성하는 방법입니다.

.xlsx 확장자를 생성합니다.

 

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;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

@RequestMapping("/excelDown.do")
public void excelDown(HttpServletResponse response) throws IOException{

    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet();
    XSSFRow row = null;
    XSSFCell cell = null;

    int rowIndex = 0;
    int cellIndex = 0;
    
    row = sheet.createRow(rowIndex++);
    
    String[] colName = {"컬럼1", "컬럼2", "컬럼3"};
    int[] colWidth = {3000, 5000, 10000};

    // 헤더 추가
    for (int i = 0; i < colName.length; i++){
        cell = row.createCell(i);
        cell.setCellValue(colName[i]);
        sheet.setColumnWidth(i, colWidth[i]); // 컬럼 너비 설정
    }

    // 바디 추가
    String[] row1 = {"값1", "값2", "값3"};
    String[] row2 = {"값4", "값5", "값6"};
    String[] row3 = {"값7", "값8", "값9"};

    List<String[]> testList = new ArrayList<>();
    testList.add(row1);
    testList.add(row2);
    testList.add(row3);

    for (String[] test : testList){
        cellIndex = 0;
        row = sheet.createRow(rowIndex++);

        cell = row.createCell(cellIndex++);
        cell.setCellValue(test[0]);

        cell = row.createCell(cellIndex++);
        cell.setCellValue(test[1]);

        cell = row.createCell(cellIndex++);
        cell.setCellValue(test[2]);
    }

    String fileName = URLEncoder.encode("엑셀 다운 테스트", "UTF-8");
    fileName = fileName.replaceAll("\\+", "%20"); // 파일명에 공백 + 로 나오는거 공백으로 변환

    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

    workbook.write(response.getOutputStream());
    workbook.close();
}

 

해당 소스로 돌려보시면 바로 기능 구현 확인 가능합니다.

샘플 소스라 하드코딩으로 작성하였는데 헤더와 바디부분을 수정하면 원하는 형식으로 활용할 수 있습니다.

반응형
반응형

자바로 파일 다운로드 기능 구현 시 파일명에 공백을 설정할 경우 +로 변환되어 나오는 경우를 보신적이 있으실텐데요.

이는 의외로 간단하게 수정할 수 있습니다.

 

소스에서 파일명을 설정하는 부분에 이렇게 적용해 주시면 됩니다.

String fileName = "샘플 파일명.txt";
			
fileName = URLEncoder.encode(fileName, "UTF-8");
fileName = fileName.replaceAll("\\+", "%20"); // 파일명에 띄어쓰기가 있을 때 + 를 공백으로 바꿔줌

 

파일명에 replaceAll 을 이용하면 + 대신 공백으로 정상적으로 노출되는 것을 확인할 수 있습니다.

 

fileName = fileName.replaceAll("\\+", "%20");

반응형
반응형

자바 파일 다운로드 기능 구현할 수 있는 소스입니다.

package sample.a.b.c;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/download.do")
	public void fileDown(HttpServletRequest request, HttpServletResponse response) throws Exception {

		try {
			 // 파일명
			String fileName = "샘플 파일명.hwp";

			// 파일이 있는 경로
			String filePath = "D:\\webapps\\project\\document"; 
			
			File file = new File(filePath, fileName);
			
			int fileSize = (int) file.length();
			
			fileName = URLEncoder.encode(fileName, "UTF-8");
			fileName = fileName.replaceAll("\\+", "%20"); // 파일명에 띄어쓰기가 있을 때 + 를 공백으로 바꿔줌
			
			if(fileSize > 0){
				String encodedFileNm = "attachment; filename*=" + "UTF-8" + "''" + fileName;
				
				response.setContentType("application/octet-stream; charset=utf-8");
				
				response.setHeader("Content-Disposition", encodedFileNm);
				response.setContentLength(fileSize);
				
				BufferedInputStream in = null;
				BufferedOutputStream out = null;
				
				in = new BufferedInputStream(new FileInputStream(file));
				
				out = new BufferedOutputStream(response.getOutputStream());
				
				try {
					byte[] bf = new byte[4096];
					int br = 0;
					
					while((br = in.read(bf))!= -1){
						out.write(bf, 0, br);
						out.flush();
					}
				} finally {
					// 오류
				}
			}
					
		} catch (Exception e) {
			// 오류
		}
		
	}

 

이것도 역시나 파일 다운로드에만 필요한 소스이기 때문에 적절히 잘 활용해서 쓰시면 됩니다.

반응형
반응형

자바로 첨부파일 업로드 하는 기능 구현 방법입니다.

불 필요한 것들은 다 빼고 오직 파일 업로드 기능을 위한 소스라 활용해서 쓰시면 됩니다.

 

  • html
<form name="fileForm" id="fileForm" method="post" action="/fileUpload.do" enctype="multipart/form-data">
    <input type="file" name="file">
</form>

 

  • java
import java.io.File;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

@RequestMapping("/fileUpload.do")
public String fileUpload(MultipartHttpServletRequest mhsr, HttpServletRequest request){
    
    MultipartFile mf = mhsr.getFile("file");
    String path = "C:\\attachment\\"; // 파일 업로드할 경로
    String fileName = mf.getOriginalFilename(); // 저장할 파일 이름, 다른 걸로 변경해서 올릴 수도 있음
    
    String fullPath = path + fileName;

    try {
        mf.transferTo(new File(fullPath)); // 파일 저장하는 부분
    } catch(Exception e) {
        e.printStackTrace();
    }

    return "";
}
반응형

+ Recent posts