아래 소스는 간단한 파일업로드 기능에 ajax를 추가한 간단한 예제 코드 입니다.


1. JAVA Code

 1) Controller

package kr.geun.bootStartSample.www.controller;


import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileOutputStream;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.http.HttpStatus;

import org.springframework.http.ResponseEntity;

import org.springframework.stereotype.Controller;

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

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.multipart.MultipartFile;


@Controller

public class FileUploadController {

    private static final Logger LOG = LoggerFactory.getLogger(FileUploadController.class);


    private final String UPLOADPATH = "C:\\temp";


    /**

     * File Upload Page

     * 

     * @return

     */

    @RequestMapping(value = "/fileupload", method = RequestMethod.GET)

    public String fileUpload() {

        return "fileupload";

    }


    /**

     * File Save

     * 

     * @param uploadfile

     * @return

     */

    @RequestMapping(value = "/fileupload", method = RequestMethod.POST)

    public ResponseEntity<?> fileUpload(@RequestParam("uploadFile") MultipartFile uploadfile) {

        

        try {

            String fileNm = uploadfile.getOriginalFilename();

            String filePath = UPLOADPATH + File.separator + fileNm;


            BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(filePath)));

            stream.write(uploadfile.getBytes());

            stream.close();


        } catch (Exception e) {

            LOG.error(e.getMessage(), e);

            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);

        }


        return new ResponseEntity<>(HttpStatus.OK);

    }

}



 2) Jsp

- HTML Code(fileupload.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>

<form id="upload_file_frm" onsubmit="return false;">

<table>

<tr>

<th>Upload File </th>

<td>

<input id="upload_file" type="file" name="uploadFile" accept="*" />

</td>

<td>

<button id="upload_file_btn">Upload Btn</button>

</td>

</tr>

<tr>

<td colspan="3" id="uload_result_msg"></td>

</tr>

</table>

</form>


- Javascript

<script type="text/javascript">

$(document).ready(function(){

$("#upload_file_btn").click(function(){

uploadFileFunc();

});

});

function uploadFileFunc(){

$.ajax({

url:"/fileupload",

type: "POST",

data: new FormData($("#upload_file_frm")[0]),

enctype: 'multipart/form-data',

        processData: false,

        contentType: false,

        cache: false,

        success: function () {

            $("#uload_result_msg").text("File Upload Success");

        },

        error: function () {

            $("#uload_result_msg").text("File Upload Error");

        }

});

}

</script>


1. Actuator란

어플리케이션의 health check를 손쉽게 할 수 있는 Spring boot 자원이다.


2. pom.xml 에 추가

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>


3. Endpoints

Reference


4. run


5. 기타

  1) App info(application.properties에 위 소스 추가)

info.app.name=Sample

info.app.description=Spring Boot Start Sample 

info.app.version=1.0.0-snapshot


  - 실행화면 


  2) Custom Endpoint(application.properties에 위 소스 추가)

management.context-path=/monitor



  3) 실행화면

1. Spring Boot 특징

 - 따로 tomcat을 사용하지 않고도 내장 tomcat or jetty를 사용할 수 있다.(war로 배포하여 tomcat을 따로 사용할 수도 있다.)

 - 복잡한 Spring의 xml or java config 설정들을 일부 자동으로 설정해준다.


2. Spring boot 시작하기

 1) 프로젝트 만들기

   - STS에서 NEW -> Spring Starter Project 선택 




기본 정보 입력



기본 라이브러리 선택

- spring-boot-starter-web을 추가했다.


 2) Controller 만들기


package kr.geun.bootStartSample.www.controller;


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

import org.springframework.web.bind.annotation.RestController;


/**

 * Test Controller

 * 

 * @author geunspage

 *

 */

@RestController

public class TestController {


    /**

     * 테스트 데이터

     * 

     * @return

     */

    @RequestMapping("/test")

    public String getTest() {

        return "{\"result\":true,\"resultMsg\":\"성공입니다.\"}";

    }

}




 3) Project Run

  - Project 이름 우클릭

  - Run As -> Spring Boot App 클릭 




3. 결과 화면

Boot 기본 port는 8080이다.

port 변경을 하고 싶으시면, ~/resources/application.properties 내에 아래 코드를 추가하면 된다.

server.port=8081

1. nodemon Install

 - sudo npm -g install nodemon


2. path

 - which nodemon

 - /usr/local/bin/nodemon


3. argument setting

 - Run As -> Run configure -> Arguments -> Node arguments 내 nodemon full path 넣어줌.


(WINDOWS)



4. Mac OS 일 경우

 - 에러화면


 - 해결법

sudo vi /usr/local/lib/node_modules/nodemon/lib/monitor/run.js

function run(options) {

  var cmd = config.command.raw;

  cmd.executable = '/usr/local/bin/node'; /*추가*/

}


1. PlugIn Install

 - Help -> Eclipse Marketplace -> Node Search



 - Nodeclipse 설치


2. Setting

 1) 창 활성화

 - Window -> Perspective -> Open Perspective -> Other -> Node Select



 2) Project 생성

  - File -> New -> Node.js Express Project Select




 3) npm install

 - package.json file click(right) -> Run As -> nom install



4) app.js run

 - Run As -> Node.js Application

 - Browser -> http://localhost:3000 입력




1. 빠르게 로그 선언

~/ preferences -> java -> editor -> templates -> new


Name : LOG

Pattern : private static final Logger LOG = LoggerFactory.getLogger(${enclosing_type}.class);



사용법 LOG 입력 후 자동완성하면 위 pattern이 입력된다.


2. 로그 출력양 조절

로그 출력양 제한 해제

~/ preferences -> Run/Debug -> Console

Limit console output 해제




3. 소스를 좀 더 명확하게 보자!

~/ preferences -> java -> editor -> Syntax Coloring -> Java -> Classes

Enable 클릭, Color 변경(원하는 색상), Bold처리 




4. javadoc 선언 수정

~/ preferences -> java -> Code Style -> Code Templates -> Comments -> Overriding methods Edit

override 메소드에 자동주석을 할 경우


원하는 형태의 주석으로 수정해야함.


5. ${user}를 활용해보자

자동주석을 할 경우 @author 에 시스템 유저명이 들어간다. 시스템 유저명과 주석 @author명을 다르게 하고 싶을 경우 eclipse.ini에 아래 소스 추가

-Duser.name="유저명"


6. lombok.jar 사용하기

lombok 홈페이지

실행시켜서 사용할 sts 선택

eclipse.ini에 추가된 것을 확인 할 수 있다.



7. 힙 메모리 실시간 보기

~/ preferences -> General -> Show heap status 클릭

- 적용 



8. 이클립스 메모리 늘리기

eclipse.ini 에 아래 소스 추가


-Xms1024m


-Xmx2048m


-XX:MaxPermSize=512m


9. template 수정

 - HTML 스크립트 선언 내 기본 주석 삭제

<script type="text/javascript">

<!--


//-->

</script>




- JAVA Method 내 기본 주석

// ${todo} Auto-generated method stub

${body_statement}



1. svn 설치

 1) help -> Eclipse Marketplace -> Subversive 검색


 2) Commit User 보기

- Window / Preferences / Team / SVN / Label Decorations / Text Decorations 탭 으로 이동

Format 에 File, Folder 에 {date} {author} 를 추가


2. Theme 적용

 - help -> Eclipse Marketplace -> Color Theme 검색


3. 로그를 이쁘게 보자

 - help -> Eclipse Marketplace -> Grep Console 검색 


 - (?) 을 클릭해서 세팅할 수 있다.


4. myjrebel 사용하기

 - help -> Eclipse Marketplace -> jrebel 검색 

 - 키 입력 https://my.jrebel.com/ -> 소셜 로그인 후 키 발급 -> 키 입력 



5.QuickImage

 - 더블 클릭으로 이미지 바로보자


1. ImageIO 를 활용해서 이미지 다운로드

 

String imgUrl = "http://img.naver.net/static/www/u/2013/0731/nmms_224940510.gif"; //Image URL

String savePath = "/Users/kimhyeonggeun/dev_folder/image/"; //저장 경로


try {

URL url = new URL(imgUrl);

String fileName = imgUrl.substring(imgUrl.lastIndexOf('/') + 1, imgUrl.length()); // 이미지 파일명 추출

String ext = imgUrl.substring(imgUrl.lastIndexOf('.') + 1, imgUrl.length()); // 이미지 확장자 추출

BufferedImage img = ImageIO.read(url);


System.out.println("fileName : " + fileName);

System.out.println("ext : " + ext);

ImageIO.write(img, ext, new File(savePath + fileName));


} catch (Exception e) {

System.out.println(e.getMessage() + "/" + e);

}


'프로그래밍 > JAVA' 카테고리의 다른 글

Java에서 Tuple 사용하기.  (0) 2018.04.11
try-catch-resources  (0) 2018.04.11
public static void main(String[] args){}  (0) 2018.04.03
javax.net.ssl.SSLHandshakeException에 대한 해결방법  (0) 2017.02.14
websocket 사용 간단 채팅  (0) 2016.08.23
URL Image DownLoad  (0) 2016.08.14

1. Download Link

 - https://robomongo.org/download



2. Install

 1) 옮겨주면 끝!


     - 단, 확인되지 않은 개발자의 어플이기에 설정을 해줘야함.(설정 -> 보안 및 개인정보 -> 다음에서 다운로드한 App 허용: 모든곳)

3. 사용법

 1) 접속 정보 Create


1. 개요

 - 글로벌 서비스를 진행하는 웹 페이지의 경우 다국어를 적용해야한다.

 - 그러나 모든 처리를 서버 사이드에서 진행하기에는 굉장히 부담이 크다.

 - 특히나 외부 javascript 파일의 경우 더욱 골치가 아프다.

 - 그래서 간단히 사용할 수 있는 자바스크립트 모듈 "i18n"을 소개하려고 한다.

 - Github URL : https://github.com/jquery-i18n-properties/jquery-i18n-properties


2. 간단한 설명

 - 기본 jquery lib는 무조건 import해야함.

 - jquery-i18n-properties에서 .js 파일을 다운로드함

 - 소스에 추가


 - 소스 사용은 아래 Example을 참고하시기를

 - i18n 명칭이 약간 이상해서 검색해봄

- 국제화는 때로 줄여서 그저 "I18N"이라고도 표기하는데, 그 의미는 이 용어의 영어 표기에서 첫 글자인 "I"자와 마지막 글자인 "N"의 사이에 18글자가 들어가 있다는 의미이다.​

출처 : http://www.terms.co.kr/internationalization.html


아래는 github README.md 내에 포함된 자료를 복사 붙여넣기 한거다. 

Messages.properties: # This line is ignored by the plugin 

msghello = Hello msgworld = World 

msg_complex = Good morning {0}!

Messages_pt.properties:


# We only provide a translation for the 'msg_hello' key

msg_hello = Bom dia

MessagesptPT.properties:


#We only provide a translation for the 'msg_hello' key

msg_hello = Olá


Now, suppose these files are located on the bundle/ folder. One can invoke the plugin like below:


$.i18n.properties({

     name:'Messages'

     path:'bundle/'

     mode:'both',

     language:'pt_PT'

     callback: function() {

         // We specified mode: 'both' so translated values will be

         // available as JS vars/functions and as a map


         // Accessing a simple value through the map

         jQuery.i18n.prop('msg_hello');

         // Accessing a value with placeholders through the map

         jQuery.i18n.prop('msg_complex', 'John');


         // Accessing a simple value through a JS variable

         alert(msg_hello +' '+ msg_world);

         // Accessing a value with placeholders through a JS function

         alert(msg_complex('John'));

     } 

});​​




+ Recent posts