728x90

개발을 하다보면 resource를 분리해서 사용할 경우가 필요합니다.

예를들어 로컬, 개발, 운영별로 resource를 분리시킬수도 있고

DB별로 oracle, mysql에 따라 쿼리문이 다르기때문에 resoure를 분리해서 사용할 수도 있습니다.

 

이번 포스팅에서는 maven빌드시 profile을 지정해서 패키징을하는 방법입니다.

저는 maria디비와 tibero디비를 같이 사용하는프로젝트가 있어서

그 프로젝트를 바탕으로 작성했습니다.

 

우선 아래 이미지처럼 2개의 resource폴더를 생성해줍니다

그런다음 pom.xml에 profile과 resources의 directory를 추가해 줍니다.

우선 <build> 블럭 위에 프로필즈를 추가하는데 id는 war파일을 생성할때 프로필에 입력할 id값이고

env는 resource폴더명에 들어갈 값입니다.

 <profiles>
        <profile>
            <id>maria</id>
            <properties>
                <env>maria</env>
            </properties>
        </profile>
        <profile>
            <id>tibero</id>
            <properties>
                <env>tibero</env>
            </properties>
        </profile>
    </profiles>

profiles를 추가했으면 다음에는 <build>블록 안에 가장위쪽에 resource를 추가해줍니다.

<build>
        <resources>
            <resource>
                <directory>src/main/resources-${env}</directory>
            </resource>
        </resources>
        
        ...
        
</build>

이렇게 작성을 해주면 directory의 ${env}에 위에 선언한 값이 들어가서 

profile에따라 resource-tibero 또는 resource-maria를 사용하게 됩니다.

 

intellij경우는 Tool Windows > maven 창이 있어서 창을 열면 아래 이미지처럼 profile을 따로 입력안하고 선택해서 

패키징을 할수 있습니다.

이클립스경우는 maven build에 들어가면 profile을 입력하는 부분이 있는거로 알고있습니다.

 

하지만 프로필을 바꾸면서 패키징을 해도 전에 사용하던 프로필로 패키징이 될때가 있어서

저는 패키징하전에 클린을 꼭 해줍니다.

 

이상 maven빌드시 resource를 분리해서 사용하는 방법이였습니다. 

728x90

node개발환경 세팅에 이어서 node프로젝트를 생성 후 express를 사용해서 웹서버를 띄워보겠습니다.

익스프레스(Express)는 node.js를 위한 웹프레임워크의 하나로 웹 어플리케이션, API 개발을 위해 설계되었습니다.

 

먼자 각자의 에디터에서 new -> project를통해 node프로젝트를 생성해 줍니다.

node.js project 클릭
프로젝트 이름 입력 후 finish

생성을 하면 프로젝트가 하나 생성이 되고, 프로젝트에서 node모듈을 사용할 수 있도록 npm init을 해줍니다.

 

해당 프로젝트 경로에 들어가서 npm init을 해주면 여러개의 입력하는게 뜨는데 그냥 다 엔터로 무시하고

마지막에만 yes를 눌러줍니다. 

그럼 아래 사진처럼 진행이 되고 package.json 파일이 생성될 것입니다.

npm init 과정

package.json은 프로젝트의 정보를 정의하고, 의존하는 패키지 버전 정보를 명시하는 파일입니다.

 

그 다음은 웹 서버를 위한 디렉토리 구성을 살펴보겠습니다.

사람마다 제 각기 다르게 구성을 하지만 저는 아래의 사진처럼 디렉토리를 구성 후 개발을 시작합니다.

프로젝트 디렉토리

그럼 위의 이미지처럼 디렉토리와 파일을 생성 해 줍니다.

www.js는 웹서버 실행을 위한 파일로 port를 지정해주고 http서버를 생성해 줍니다.

 

/* www.js */

var app = require('../server');
var http = require('http');
var port = '8080';

app.set('port', port);

var server = http.createServer(app);

server.listen(port);

그다음 server.js 소스입니다.

/* server.js */

const express = require('express');
const app = express();

const index = require('./routes/index');
app.use('/', index);

module.exports = app;

'/'에 접속하면 index.js라우터를 바라볼 수 있도록 선언을 해줍니다.

그 다음 index.js파일에서는 화면에 뿌려줄 데이터를 db에서 가져와 json형식으로 호출하는 클라이언트에 뿌려줄 수 있습니다.

이번 포스티에서는 데이터 뿌려주기는 안하고 단순 text를 뿌려주겠습니다.

/* routes/index.js */

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.json('node server start');
});

module.exports = router;

이제 터미널로 돌아가서 프로젝트 루트경로에 들어간 뒤

node bin/www.js 를 입력해줍니다.

 

웹 브라우저를 오픈한 뒤 주소창에 'http://localhost:8080' 을 입력하면 아래와 같은 화면을 보실 수 있습니다.

웹 서버 호출화면 

 

이상 웹서버 구축하기 포스팅을 마치겠습니다.

'nodejs' 카테고리의 다른 글

[node.js 웹 서버 구축] STEP1. 개발환경 세팅  (0) 2021.09.23
728x90

노드로 웹 사이트를 구축하려면 일단 기본적으로 텍스트에디터와 Node.js가 필요합니다.

 

ATOM. vscode. intellij등 여러가지 에디터들이 있지만 intellij는 유료이기 때문에

ATOM이나 vscode를 설치해서 node개발을 진행하실 수 있습니다.

 

아래 주소는 ATOM에디터 홈페이지 주소이고, 들어가서 다운로드하시면 됩니다.

 

https://atom.io/

 

아래 주소는 vscode 홈페이지 주소이고, 들어가서 다운로드하시면 됩니다.

 

https://code.visualstudio.com/

 

 

 

 

다운받은 파일을 실행시켜서 NEXT만 눌러주면 쉽게 설치할 수 있습니다.

 

그다음은 node.js 설치입니다.

 

https://nodejs.org/en/

 

위의 주소로 들어가서 다운을 받으면 되는데, 왼쪽은 현재 사용자들이 가장 많이쓰고 있는 버전이고

오른쪽은 최신버전입니다.

 

 

node.js를 다운받고 설치를 하신 다음에 정상적으로 설치가 되었나 확인하기 위해

 

cmd창을 실행시킵니다.

윈도우키 + r을 누른 다음에 cmd를 입력하고 열기를 누르시면 쉽게 cmd창을 실행시킬 수 있습니다.

 

cmd창에서 node  --version 을 입력해서 아래에 버전 정보가 나오면 설치 성공입니다.

 

 

STEP2에서는 간단한 웹페이지 실행을 시켜보겠습니다.

'nodejs' 카테고리의 다른 글

[node.js 웹 서버 구축] STEP2. express로 웹서버 띄우기  (0) 2021.09.23
728x90

 

 

위키백과에 나온 csv정의는 아래와 같습니다.

CSV(영어: comma-separated values)는 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다. 확장자는 . csv이며 MIME 형식은 text/csv이다

 

데이터가 ,(콤마)로 구분되어있는 텍스트형식의 데이터인데 excel로 열면 표로 표현이되고 xlsx파일로 변환해서 저장도 가능하기 때문에 자주 사용하는 방식중 하나입니다.

 

자바 스프링에서 엑셀파일을 생성할려면 poi등 라이브러리를 사용해야하지만

Csv경우 Stringbuffer와 outputstream만 있으면 되기때문에 쉽게 생성할 수 있습니다.

또한 데이터 분석시 csv파일을 많이 사용하기 떄문에 데이터를 제공할떄도 좋다고 생각합니다.

 

우선 csv로 뽑을 데이터를 list형식으로 뽑아온 뒤 StringBuffer 객체를 생성해주고 각 컬럼이 어떤데이터인지 알아야하기 떄문에

맨윗줄에 컬럼명을 적어줍니다

List<ReportVo> reportList = reportMapper.getReportListExcel(vo);
			
			StringBuffer sb = new StringBuffer(); 
			sb.append("사용자ID,사용자발화,의도명,만족도,등록일,채널");

그 후 list를 포문으로 돌려서 index데이터를 row로 저장시킵니다.

위에서 말했듯 csv는 텍스트형 데이터라고 했기 떄문에 각row는 “\n”을 사용해서 구분을 해줍니다.

 

for(int reportListCnt = 0; reportListCnt < reportList.size(); reportListCnt++) {
	String row = reportList.get(reportListCnt).getUser_id() + ',' 
    	//내용에 ,또는 \n이있으면 행렬이 꺠지기떄문에 replace처리를 해준다
        + reportList.get(reportListCnt).getUtterance().replace(',', ' ').replace('\n',  ' ') + ','
		+ reportList.get(reportListCnt).getIntent_title().replace(',', ' ') + ',' 
        + reportList.get(reportListCnt).getSatisfaction() + ','
		+ reportList.get(reportListCnt).getCreate_date() + ',' 
        + reportList.get(reportListCnt).getChannel();

	sb.append("\n");
	sb.append(row);
}

 

저는 리스트로 뽑아온 데이터를 row에 넣어준것이고 자신의 방법에 맞게 각각의 데이터를 ,로 구분해서 row를 만들어주시면 됩니다.

String row = “가.나,다,라,마,바”;

이런 형식을 만들어주시면 됩니다.

 

저는 서버 특정경로에 바로 떨굴게 아니고 브라우저를 통해서 다운로드가 되도록 할것이기 떄문에 

 

이렇게 response를 set해주고 filename에 다운받아지는 파일명을 적어줍니다.

그리고 outputStream을 통해 다운을 받으면 여전이 한글이 꺠져서 나오기 떄문에 아래와같이 

outputStream.write(sb.toString().getBytes("MS949"));

형식으로 넣어줍니다.

 

response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment; filename=\"chatLog.csv\"");
response.setHeader("Content-Type","text/csv; charset=MS949" );

OutputStream outputStream = response.getOutputStream();
outputStream.write(sb.toString().getBytes("MS949"));
outputStream.flush();
outputStream.close();
sb.setLength(0);

 

마지막으로 메모리 확보를 위해 outputStream.flush(), outputStream.close()를 해주고

StringBuffer 초기화를 해줍니다 .

 

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

Spring에서 비동기 처리하기 @EnableAsync  (0) 2024.11.22
2. 자바 JAVA - 스트림(stream)  (0) 2023.04.05
1. 자바 JAVA - 스트림(stream)  (0) 2023.01.17
자바 JAVA - 람다 표현식  (0) 2023.01.14

+ Recent posts