작업 개요 


1. root-context.xml 파일 설정 

- namespacse 설정

- 마이바티스 연동에 필요한 코드 작성

- 실행된 쿼리에 대한 로그 설정 

2. pom.xml 이용하여 추가 라이브러리 받기

- 작성된 pom.xml 제공

3. 마이바티스를 이요하여 커넥션 풀을 만들기 위한 접속정보 설정파일 properties로 관리

- 작성된 소스파일(properties) 제공 





1. root-context.xml 파일 설정 


해당 파일의 경로는 다음과 같다. 이클립스 단축키 ctrl + shift + r 을 이용하여 파일 이름으로 찾아도 된다.


해당 파일을 더블클릭하여 하단의 네임스페이스 탭을 클릭한 뒤 아래 그림과 동일하게 체크 한다.

이유는 앞으로 작성하 코드(xml tag)에 대한 사용을 할 수 있도록 해주는 역활 을 한다. 


위의 작업 을 완료 한 뒤 Source 탭을 클릭하면 다음과 유사한 형태의 내용일 것이다. (유사하다기 보다는 내용물이 없다)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
    <!-- Root Context: defines shared resources visible to all other web components -->
    
   
</beans>
 
    
cs

모든 코드는 <beans> </beans> 사이에 작성하도록 한다. 

사실 글을 작성하다가 크롬이 먹통이 되어 재작성 하는 중이라 귀찮아서 완성된 첨부파일을 첨부하도록 하겠다. 

기존에 작성 한 글에는 각각의 코드별로 설명을 했는데.... 추후 이 글을 수정할 일이 있으면 그때(?) 추가하도록 하겠다.

(그래도 양심상 약간의 주석은 넣어놓았다..)


첨부파일 : 

root-context.xml




2. 메이븐을 이용한 라이브러리 추가 :

pom.xml

 




3. DB 접속 정보를 담고 있는 db.properties 파일을 생성한다. 해당 파일의 경로는 다음 그림을 참고 한다. 

 

 첨부 파일 : 

db.properties

















mybatis 설정 파일을 생성한다. 해당 파일의 경로는 다음과 같다.

mybatis-config.xml 파일은 구글링 할 경우 관련자료가 자세히 나오므로 설명을 생략하도록 하겠다.

 

 첨부파일 : 

mybatis-config.xml






스프링 최초 설치 시 자동 생성된 log4j.xml 파일을 다음의 내용으로 교체한다. 


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 
    <!-- Appenders -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p: %c - %m%n" />
        </layout>
    </appender>
    
    <!-- Application Loggers -->
    <logger name="com.pkg.sample">
        <level value="info" />
    </logger>
    
    <!-- 3rdparty Loggers -->
    <logger name="org.springframework.core">
        <level value="info" />
    </logger>
    
    <logger name="org.springframework.beans">
        <level value="info" />
    </logger>
    
    <logger name="org.springframework.context">
        <level value="info" />
    </logger>
 
    <logger name="org.springframework.web">
        <level value="info" />
    </logger>
 
    <logger name="jdbc.sqlonly">
           <level value="debug" />
    </logger>
 
    <!-- Root Logger -->
    <root>
        <priority value="debug" />
        <appender-ref ref="console" />
    </root>
    
</log4j:configuration>
 
cs


log4j에 대한 설명은 추후 다른 카테고리에서 설명하도록 하겠다. 


설정은 완료된 것이며 테스트를 위한 작업은 다음 글에서 작성하도록 하겠다.

(아 빡침...글이 날라가다니...)












자 본격(?) 적으로 스프링 설정을 시작한다.


보통 일반적으로는 DB를 연동하여 스프링 프레임워크(이하 스프링) 를 사용하기 때문에 DB를 연동하기 위한 라이브러리인

Mybatis를 연동해보자..  Ibatis..? Mybatis...? 뭐가 다르지? 라고 할 수 있는데 그냥 쉽게 말하면 Mybatis가 신버전이다.


좀더 자세히 풀자면 Ibatis는 기존에 spring에 의존적인 성향이 강하여 스프링이 버전업 되지 못하면 Ibatis는 스프링의 버전업을 기다렸다가 버전업이 되었다. 이 상황에서 벗어나고자 하여 나온것이 Mybatis.. (뭐 이런 스토리를 몰라도.. 설정에는 문제가 없...)


자 진짜.. 시작한다..


Maven을 이용하여 라이브러리를 추가하도록 하자. Maven에 대해서 설명하자면 갈길이 너무 멀으니.. 그냥 따라한다.

pom.xml 파일이 있다.






더블클릭하여 내용물을 보자.. 뭔지 모르겠다.. 라고 하시는분은 그냥 다음을 따라한다.




하단의 Pom.xml을 클릭하면 아래와 같이 나온다. 



dependency가 몰려있는곳 아무곳에 아래의 코드를 추가한다.

그림이라 복사 안될까봐 복사 가능한 텍스트르 추가로 넣었음

1
2
3
4
5
6
7
8
9
10
11
        <!-- myBatis -->        
        <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.0.6</version>
         </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.0.2</version>
        </dependency>
cs

자그럼 라이브러리가 추가 된다. 빠밤..!? - 라이브러리의 추가됨은 Maven Dependencies 트리에서 추가된 라이브러리 중 Mybatis 어쩌고가 있음 된다.(메이븐이 없으면 찾아서 복사해서 넣어주어야 하는 수고가 필요하다.)

 


글쓰기 지겨워서 나머지는 PART 02 에.....







전에 설치한 스프링 프레임워크에 톰켓을 달아주도록 하자.( 톰켓에 스프링을 담는다고 해야 맞는거 같음 ㄷㄷ)


단, 톰켓이 이클립스에 런타임으로 등록되어 있다는 가정하에 작성되었음


1. 서버 탭에서 클릭




2. Apache > Tomcat 을 고르고 (7.0을 기준으로 작성함 : 버전에 따른 별 차이는 없음)


3. 런타임(톰켓)이 설정되어있다는 가정하에 만든 프로젝트를 선택하고 Add 클릭



4. 서버 생성 완료!.

   만들어진 서버를 더블클릭하여 server설정 변경



5. 서버 설정 변경 화면에서 포트를 바꿔도되고 (8080을 80으로 바꾸면 테스트스 포트번호를 안써도 된다.)

   하단의 Modules를 클릭하자


6.그림에서 보이는 sample을 선택하고 Edit 를 눌러서 


7. /sample 을 /  로 변경하자.




8. 브라우저를 열고 localhost:8080 해서 화면이 열리면( 그전에 서버를 시작해야한다. )

   근데 화면은 뜨는데 한글이 깨진다.(쓰읍.. )


9. home.jsp 파일을 열어서 


    <%@ page contentType = "text/html;charset=utf-8" %>


    추가


10. 이제 한글도 안깨지고 잘나온다. 기본적인 스프링 사용에 대한 설정이 완료 되었다. (이제 시작이다.)


다음엔 마이바티스 연동을 해보자..





이놈의 스프링 셋팅은 어째 할때마다 댓다가 안댓다가 하는것인가..


같은실수를 반복하는 불안정한 뇌를 보조하기 위하여 Spring Framework 셋팅 방법을 적어보도록 한다.


※ 이클립스에 STS Plug-in이 설치 되었고 메이븐을 이용하는 가정하에 작성되었음


1. 프로젝트 만들기 







자 여기까지 따라 했다면 스프링 프레임워크가 만들어졌다.



 

 

오늘은 와이프님의 부탁으로 영문만 뽑아내는 자바 프로그램을 만들어 보았다 -_-

 

 

package expTest.com.exp.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ExpTestClass {

public static void main(String[] args) {
      Pattern nonValidPattern = Pattern.compile("[a-zA-Z]");

String str = "1234 @#$@#$@#abc123123ZZZZZZZZ1231312313";
Matcher matcher = nonValidPattern.matcher(str);
String result = ""; 
  
while (matcher.find()) {
    result += matcher.group(); 
}

 
           System.out.println(result);
        }

}

 

배워서 남주는것이 아니다 마누라 주는것이다 ㄷㄷㄷㄷ

1. SDK 다운로드

http://aws.amazon.com/jp/sdkforjava/에서 AWS SDK(Java)를 다운로드 한다.


2. aws-java-sdk-1.8.7.zip 내용

- documentation,lib,LICENSE.txt,NOTICE.txt,README.html,samples,third-party

      - lib와 third-party 안에 있는 모든 jar 파일을 이클립스의 라이브러리에 추가

- samples 은 S3 관련 샘플 소스가 있다.

AmazonS3,AmazonS3TransferProgress 

1. SDK 다운로드

http://aws.amazon.com/jp/sdkforjava/에서 AWS SDK(Java)를 다운로드 한다.


2. aws-java-sdk-1.8.7.zip 내용

- documentation,lib,LICENSE.txt,NOTICE.txt,README.html,samples,third-party

      - lib와 third-party 안에 있는 모든 jar 파일을 이클립스의 라이브러리에 추가

- samples 은 S3 관련 샘플 소스가 있다.

AmazonS3,AmazonS3TransferProgress 

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
 
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.S3Object;
 
public class S3Sample {
 
    public static void main(String[] args) throws IOException {
        String AWS_BUCKETNAME = "your_bucketname";
        String AWS_ACCESS_KEY = "your_AWS_ACCESS_KEY";
        String AWS_SECRET_KEY = "your_ AWS_SECRET_KEY";
        String file_path = "test/;"// 폴더명
        String file_name = "test.txt"// 파일명 
 
        AWSCredentials credentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
        AmazonS3 s3 = new AmazonS3Client(credentials);
       
        try {
            // 파일 업로드 부분 파일 이름과 경로를 동시에 넣어줌.
             PutObjectRequest putObjectRequest = new PutObjectRequest(AWS_BUCKETNAME, file_path+file_name, createSampleFile());
             putObjectRequest.setCannedAcl(CannedAccessControlList.PublicRead); // URL 접근시 권한 읽을수 있도록 설정.
             s3.putObject(putObjectRequest);
             System.out.println("Uploadinf OK");
             
             // 파일 다운로드 다운로드 경로와 파일이름 동시 필요. 
             System.out.println("Downloading an object");
             S3Object object = s3.getObject(new GetObjectRequest(AWS_BUCKETNAME, file_path+file_name));
             System.out.println("Content-Type: "  + object.getObjectMetadata().getContentType());
             displayTextInputStream(object.getObjectContent());
             
             
             
        } catch (AmazonServiceException ase) {
            System.out.println("Caught an AmazonServiceException, which means your request made it "
                    + "to Amazon S3, but was rejected with an error response for some reason.");
            System.out.println("Error Message:    " + ase.getMessage());
            System.out.println("HTTP Status Code: " + ase.getStatusCode());
            System.out.println("AWS Error Code:   " + ase.getErrorCode());
            System.out.println("Error Type:       " + ase.getErrorType());
            System.out.println("Request ID:       " + ase.getRequestId());
        } catch (AmazonClientException ace) {
            System.out.println("Caught an AmazonClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with S3, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message: " + ace.getMessage());
        }
    }
 
    private static File createSampleFile() throws IOException {
        File file = File.createTempFile("aws-java-sdk-"".txt");
        file.deleteOnExit();
 
        Writer writer = new OutputStreamWriter(new FileOutputStream(file));
        writer.write("파일테스트하기\n");
        writer.close();
 
        return file;
    }
 
    @SuppressWarnings("unused")
    private static void displayTextInputStream(InputStream input) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        while (true) {
            String line = reader.readLine();
            if (line == nullbreak;
 
            System.out.println("    " + line);
        }
        System.out.println();
    }
}
cs

[펌] http://blog.daum.net/_blog/BlogTypeMain.do?blogid=0Tjdj



 

 

다음과 같은 자바코드를 실행할 실행파일(exe)을 만들고자 한다!! 




1. JSmooth 다운로드 및 설치

 - http://sourceforge.net/projects/jsmooth/files/jsmooth/0.9.9-7/ 에서 

   jsmooth-setup 파일을 다운로드

 

  

  jsmooth setup 파일을 실행하여 설치함!!


2. jar 파일 만들기


- [파일] - [내보내기(Export)]를 선택

 


- 다음과 같이 선택함

 



- 실행구성을 선택하고, jar를 만들어서 저장할 폴더를 지정함

 






완료를 클릭하면, 주어진 폴더에 jar파일이 생성됨!!

그럼 이제 jar 파일을 가지고 exe 파일로 만들어야 함!


3. JSmooth로 실행파일(exe) 만들기

 

- JSmooth의 첫화면

 


- Skeleton을 선택함

   SWT를 이용한 윈도우 창프로그램이면 windowed Wrapper를 선택

   Console 프로그램이면 Console Wrapper를 선택


 


PressKey를 체크하고, Executable Tab으로 넘어감


 


- 실행파일 이름을 작성하고, 아이콘 그림파일을 지정함


 


- Main class( main이 들어있는 클래스)를 지정하고, 아까 만든 jar파일을 지정해줌 


 


- 자바가상머신의 버전을 입력하고, Compile을 실행함


 



- 파일이름을 작성하고 저장을 하면 JSmooth 파일과 exe파일이 생성됨


 


 




4. 실행화면


- 다음과  같이 jsmooth파일과 exe파일이 생성됨


- 생성된 exe파일을 실행하면 다음과 같이 실행됨!!







package com.application.pgm.util;


import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.net.URL;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import javax.imageio.ImageIO;


public class ImageFileDownload {


public static void main(String[] args) {

// TODO Auto-generated method stub

FileReader fr = null;

String imgUrl = "";

try{

fr = new FileReader("D:\\dev\\workspace\\URL_TEST\\src\\com\\application\\pgm\\util\\imgFileList.txt");

BufferedReader list_br = new BufferedReader(fr);

String list_Line = new String();

String imgFileName = new String();

List downLoadList = new ArrayList<>();

while((list_Line = list_br.readLine()) != null){

imgUrl = list_Line.trim();

imgUrl = imgUrl.replaceAll("image1", "image5");

imgUrl = imgUrl.replaceAll("usahanatour","hanatour");

System.out.println();

imgUrl = imgUrl.substring(0, imgUrl.trim().length()-5);

Map rowMap = new HashMap<String, String>();

rowMap.put("imgUrlPath_S", imgUrl+"S.jpg");

rowMap.put("imgName_S", rowMap.get("imgUrlPath_S").toString().substring(imgUrl.lastIndexOf("/")+1, rowMap.get("imgUrlPath_S").toString().length()));

rowMap.put("imgUrlPath_M", imgUrl+"M.jpg");

rowMap.put("imgName_M", rowMap.get("imgUrlPath_M").toString().substring(imgUrl.lastIndexOf("/")+1, rowMap.get("imgUrlPath_M").toString().length()));

rowMap.put("imgUrlPath_L", imgUrl+"L.jpg");

rowMap.put("imgName_L", rowMap.get("imgUrlPath_L").toString().substring(imgUrl.lastIndexOf("/")+1, rowMap.get("imgUrlPath_L").toString().length()));

downLoadList.add(rowMap);

}

String downImg = new String();

BufferedImage image = null;

BufferedImage bufferedImage = null;

Graphics2D graphics = null;

for(int inx = 0; inx < downLoadList.size(); inx++){

Map rowMap = (Map)downLoadList.get(inx);


image = ImageIO.read(new URL(rowMap.get("imgUrlPath_S").toString()));

if(image.getData() != null){

bufferedImage = new BufferedImage(image.getWidth(),image.getHeight(), BufferedImage.TYPE_INT_BGR);

graphics = (Graphics2D) bufferedImage.getGraphics();

graphics.setBackground(Color.WHITE);

graphics.drawImage(image, 0, 0, null);

ImageIO.write(bufferedImage, "jpg", new File("D:\\000.Document\\003.운영업무\\미주지역\\상품이미지업로드\\2014.12.18\\"+rowMap.get("imgName_S")));

System.out.println(rowMap.get("imgName_S")+" 다운완료");

}

image = ImageIO.read(new URL(rowMap.get("imgUrlPath_M").toString()));

if(image.getData() != null){

bufferedImage = new BufferedImage(image.getWidth(),image.getHeight(), BufferedImage.TYPE_INT_BGR);

graphics = (Graphics2D) bufferedImage.getGraphics();

graphics.setBackground(Color.WHITE);

graphics.drawImage(image, 0, 0, null);

ImageIO.write(bufferedImage, "jpg", new File("D:\\000.Document\\003.운영업무\\미주지역\\상품이미지업로드\\2014.12.18\\"+rowMap.get("imgName_M")));

System.out.println(rowMap.get("imgName_M")+" 다운완료");

}

image = ImageIO.read(new URL(rowMap.get("imgUrlPath_L").toString()));

if(image.getData() != null){

bufferedImage = new BufferedImage(image.getWidth(),image.getHeight(), BufferedImage.TYPE_INT_BGR);

graphics = (Graphics2D) bufferedImage.getGraphics();

graphics.setBackground(Color.WHITE);

graphics.drawImage(image, 0, 0, null);

ImageIO.write(bufferedImage, "jpg", new File("D:\\"+rowMap.get("imgName_L")));

System.out.println(rowMap.get("imgName_L")+" 다운완료");

}

}

System.out.println("작업 끝났음 +_+");

/*

*/

}catch(Exception e){

e.printStackTrace();

}

}


}

+ Recent posts