반응형

가끔 개념이 헷갈린다..


토비책 보다 정리..


public class UserDaoTest (


 private UserDao dao;  

// Setup() 메소드에서 만드는 오브젝틀ㄹ 테스트 메소드에서도 사용 할 수 있도록 인스턴스 변수로 선언


public void Setup(){

ApplicationContext context =

new GenericXmlApplicationContext("applicationContext.xml");


this.dao = context.getBean("userDao" ,UserDao.class);


)


public void getUserFailure() throws SQLException {

dao.deleteAll();  // 요렇게 사용 가능 ㅋㅋ

assertThat(dao.getCount(), is(0));

dao.get("unknown_id");

}

반응형
반응형

출처 : Learning to Use Regular Expressions by Example

  (예제로 배우는 정규표현식)


현재 제가 작업하고 있는 사이트는 폼을 통한 유저입력에 많은 의존을 하고 있고 모든 데이터는 데이터베이스로 보내기 전에 검사해야합니다.   처음에는 PHP3의 정규 표현식 함수를 사용하면 된다는 건 알고 있었지만 어떻게 정규표현식을 작성해야 할지 몰랐습니다. 제가 필요로 했던   것은 뭔가 예제가 될만한 것이었죠. (물론 처음으로 본 것은 PHP3 매뉴얼과 POSIX 1002.3 스펙이었죠 하지만 예제가 없어서 별   도움이 되질 못했습니다) 덧 붙여 말하자면 정규표현식에 대한 좋은 글을 웹에서 찾기란 정말 어려웠습니다. 전 경험과 시행착오로 점점 그것에   대해 알게 되었고 별거 아님을 깨달았습니다. 그래서 이 글에서 문법에 대한 직접적인 설명을 하고 금액 입력과 email 주소 문자열을 을   검사하는 정규표현식을 작성하는 단계를 설명하려합니다.


- Basic Syntax of Regular Expressions (정규표현식의 기본 문법)


먼저 특수문자 '^'와 '$'를 살펴봅시다. 이 문자의 역할은 문자열의 시작과 끝을 의미합니다. 다음과 같은 해당 예를 들 수 있습니다.


"^The": "The"로 시작하는 문자열

  "of despair$": "of despair"로 끝나는 문자열

  "^abc$": "abc"로 시작하고 "abc"로 끝나는 문자열 ("abc" 라는 문자열도 해당됨)

  "notice": "notice"가 들어 있는 문자열


마지막 예제에서 보듯이 이 두 개의 특수문자가 없는 패턴은 검사대상이 되는 문자열에 어떤 위치에서든지 들어 있음 의미합니다.


특수문자로는 '*', '+', '?'도 있습니다. 이 문자들은 어떤 문자의 반복에 관한 지정을 해주는 문자입니다. 각각 '0또는 그 이상',   '1또는 그 이상', '0또는 1'을 의미합니다. 여기에 몇 가지 예제가 있습니다.


"ab*": a뒤에 0 이상의 b가 있는 문자열 ("a", "ab", "abbb", 등);

  "ab+": 위와 동일 하지만 최소한 하나 이상의 b가 있어야 함 ("ab", "abbb", 등);

  "ab?": b가 하나 있을 수도 있고 없을 수도 있음 (ab 또는 a)

  "a?b+$": a가 있을 수도 있고 없을 수도 있으며 그뒤에 하나 이상의 b로 끝나는 문자열


{ }를 사용하면 반복되는 수를 영역으로 지정할 수 있습니다.


"ab{2}": a뒤에 2개의 b가 있는 문자열 ("abb");

  "ab{2,}": a뒤에 최소한 2개 이상의 b가 있는 문자열 ("abb", "abbbb", 등.);

  "ab{3,5}": a뒤에 3개에서 5개 사이의 b가 있는 문자열 ("abbb", "abbbb", 또는 "abbbbb").


{ }를 사용할 대는 반드시 첫 번째 숫자는 적어야 됨을 유의합니다. ((O) "{0,2}", (X) "{,2}"). 또한 '*', '+',   '?'는 각각 "{0,}", "{1,}", "{0,1}"와 같습니다.


이제 ()를 사용해서 하나의 문자가 아닌 여러 문자를 지정하는 방법을 알아봅니다.


"a(bc)*": a 뒤에 "bc"가 0또는 그이상의 수만큼 있는 문자열

  "a(bc){1,5}": a 뒤에 "bc."가 1에서 5번 들어 있는 문자열


또 다른 특수문자로는 OR 연산을 하는 '|'를 들 수 있습니다.


"hi|hello": "hi"나 "hello"가 들어 있는 문자열

  "(b|cd)ef": "bef" 또는 "cdef"

  "(a|b)*c": a와 b가 섞여서 여러번 나타나고 그뒤에 c가 붙어있는 패턴


'.' (period)는 어떤 한 문자를 의미합니다.


"a.[0-9]": a뒤에 한 문자와 숫자가 붙어 있는 패턴

  "^.{3}$": 3문자로만 되어 있는 문자열


[]표현은 문자열의 해당 위치에 사용될 수 있는 문자를 표현하는데 사용합니다.


"[ab]": a또는 b ("a|b"와 동일한 표현);

  "[a-d]": 소문자 'a'에서 'd'까지 ("a|b|c|d"또는 "[abcd]"와 동일);

  "^[a-zA-Z]": 영문자로 시작하는 문자열

  "[0-9]%": % 문자 앞에 하나의 문자가 붙어 있는 패턴

  ",[a-zA-Z0-9]$": 영문자, 숫자로 끝나는 문자열 패턴


[]에서 '^'를 표현의 가장 처음에 사용하면 나타나서는 안 되는 문자를 지정할 수 있습니다. (예> "%[^a-zA-Z]%" 두   % 사이에 영문자가 없는 패턴)


"^.[$()|*+?{"같은 특수 문자는 백슬레쉬('')를 사용해서 escape될 수 있습니다( 역자 주 : escape 이란 다른   말로 literal로 탈출한다라고 할 수 있습니다 즉 특수문자로 인식되지 않고 일반 문자로 인식되게 합니다). 사용하는 관점에서 보면 백슬레쉬도   PHP3의 문자열에서 escape되어야 하기 때문에 예를 들어 "($|?[0-9]+"같은 정규표현식은 ereg("(\$|?[0-9]+",   $str) 와 같이 사용됩니다 (이 표현식은 무얼 검사하는 걸까요? ^^;(이건 역자가 한 말이 아닙니다))


하지만 []안에서는 특수문자가 모두 효력을 읽게 되기 때문에 이 법칙을 벗어남을 기억하세요 []안에서는 백슬레쉬를 포함한 모든 특수문자들이   그 힘을 읽습니다 (예> "[*+?{}.]"는 말그대로 '*', '', '+', '?', '{', '}', '.' 문자를 의미합니다.   그리고 regex man 페이지에 나오듯이 ']'문자 자체를 포함하려면 문자들 리스트의 첫 번째에 위치시킵니다('^'가 있으면 '^'뒤에).   '-'를 포함하려면 첫 번째 또는 마지막 문자로 지정하고 '-'문자가 영역의 경계 (예> a에서 -까지)일 경우 영역지정 문자의 두   번째 경계로 지정([a--])합니다.


완벽한 설명을 하려면 대조 순서(collating sequences), 문자 클래스(character classes), 동일 클래스(equivalence   classes)에 대해서도 다루어야 하지만 이 글에서는 별 상관관계가 없기 때문에 regex man 페이지를 참고하도록 합니다.


-Validating Money Strings (금액 문자열 검사하기)


ok 이제 우리는 여기서 배운 것을 뭔가 실질적인 것에 적용 시켜봅시다. 사용자가 입력한 금액을 검사하는 정규표현식에 대해 알아봅니다.   금액은 "10000.00" 와 "10,000.00", 와, 센트 없이, "10000" 와 "10,000" 이렇게 4가지 방법으로 사용됩니다.   (역자주 : 달러와 센트 군요 蝁,.蝁)


다음 정규표현식을 기초로 시작해 봅시다.


^[1-9][0-9]*$


이 정규표현식은 0으로 시작하지 않는 어떠한 수인지를 검사합니다. 하지만 "0"도 통과되지 못합니다. 그래서 다음과   같이 수정합니다.


^(0|[1-9][0-9]*)$


말로 표현하면 "0 이거나 0으로 시작하지 않는 수"입니다. 이제 수 앞에 -부호도 사용할 수 있게 수정해 봅니다.


^(0|-?[1-9][0-9]*)$


이 뜻은 "0 이거나 -이 있을 수 있는 수이고 이 수는 0으로 시작하지 않는다"입니다. 이제 좀 느슨하게 하고 유저가   0으로 시작하는 수도 입력할 수 있도록 해봅니다. 금액에 필요없는 -부호도 없애버립니다. 그리고 선택사항인 소수점 부분 패턴도 넣어서 다음   정규표현식이 나옵니다.


^[0-9]+(.[0-9]+)?$


하이라이트된 부분은 소수점(.)이 항상 최소한 하나이상의 수와 붙어 있어야 함을 의미합니다. 그러므로 예를 들면 "10."은   통과되지 못하고 "10" 과 "10.2"는 통과합니다.


^[0-9]+(.[0-9]{2})?$


이제 소수점 뒤에 반드시 2개의 수가 붙어 있어야 합니다. 이게 너무 심하다 싶으면 다음과 같이 해서


^[0-9]+(.[0-9]{1,2})?$


소수점 뒤에 하나의 숫자만 올 수도 있게 합니다. 이제 1000단위를 구분하는 ','를 표현해 봅니다.


^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$


"1~3개의 숫자와 그 뒤에 ','와 3개의 숫자로 이루어진 부분이 0개 또는 그 이상이 붙어 있는 패턴". 쉽죠?   이제 ','도 선택사항(옵션:option)으로 만들어 봅니다.


^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$


이게 전부입니다. 여기서 '+'를 '*'로 바꾸면 빈 문자열도 통과되는 패턴이 됩니다. 함수호출할 때 백슬래쉬 문자 escape하는 것   (역자 : /를 //로) 잊지 마세요. 일단 문자열이 검사되어 지면 str_replace("," , "" , $money) 함수로 ','를   없애버리고 double로 형 변환을 해서 산술연산에도 사용할 수 있게 합니다.


- Validating E-mail Addresses (E-mail 주소 검사하기)


이제 e-mail 주소를 살펴봅시다. e-mail주소는 3부분으로 구성됩니다. : user 명(@왼쪽편에 있는 모든 것), '@', 그리고   서버명(나머지 부분들) user명은 대문자 또는 소문자와 숫자, '.' '-', '_'로 구성됩니다. '_'를 제외하면 서버명도 마찬가지입니다.   user 명은 .으로 시작하거나 끝나지 않습니다. domain명도 마찬가지입니다. 또한 .이 연속으로 있을 수도 없고 . 사이에는 최소한   하나 이상의 문자가 있어야 합니다. 이제 user명 부분을 검사하는 정규표현식을 만들어 봅시다.


^[_a-zA-Z0-9-]+$


이 정규표현식은 아직 .을 지원하지 않습니다. 다음과 같이 수정합니다.


^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$


말로 하면 "최소한 하나의 유효한 문자(valid character)와 그 뒤에 .과 유효문자들로 구성된 부분이 0또는 그 이상이   있는 패턴"입니다.


좀 간단하게 하기 위해 이 정규표현식을 ereg()대신에 eregi()함수에 사용합니다. eregi()함수는 대소문자를 구분하지 않기   때문에 "a-z"와 "A-Z"같이 두 개의 영역을 지정하지 않아도 되는 이점이 있습니다.(둘 중 어떤 것이라도 상관없음)


^[_a-z0-9-]+(.[_a-z0-9-]+)*$


서버명의 경우 '_'만 제외하고는 동일합니다.

  ^[a-z0-9-]+(.[a-z0-9-]+)*$


이제 '@'를 중심으로 서로 붙여서 다음과 같이 만들어 냅니다.


^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$


- 기타 사용


Extracting Parts of a String (문자열의 일부분 잘라내기)


ereg()와 eregi()함수는 문자열에서 패턴에 해당되는 부분을 잘라내는 기능이 있습니다. (메뉴얼 참고) 예를 들면 path/URL   문자열에서 파일명을 잘라내고 싶은 경우 다음과 같은 코드가 필요할 것입니다.


ereg("([^\/]*)$", $pathOrUrl, $regs);

  echo $regs[1];


Advanced Replacing (치환의 발전된 형태)


ereg_replace() 와 eregi_replace()는 아주 유용한 함수입니다. 문자열에 있는 모든 문자를 ','로 구분한다고 가정해   봅시다. 다음과 같이 할 수 있습니다. (역자 : trim()함수는 문자열의 앞과 뒤에 있는 공백문자를 모두 제거하는 함수)


ereg_replace("[ nrt]+", ",", trim($str));


- Some exercises (연습문제)


여기 당신을 좀 바쁘게 할 만한 것들이 있습니다 (^^;)


1. 여기 나온 email 검사 정규표현식의 서버 부분을 최소한 두 개의 이름으로 구성되어야 하게 수정하시오 (hint : 단 하나의   문자만 변경하면 됨)

  2. trim()기능을 하는 ereg_replace()함수호출을 하시오

  3. '#', '@', '&', '%'를 '~'로 수정하는 ereg_replace()함수호출을 하시오


Have fun!

반응형
반응형

/**

 * 숫자에 천단위마다 콤마 넣기

 * @param int

 * @return String

 * */

public static String toNumFormat(int num) {

 DecimalFormat df = new DecimalFormat("#,###");

 return df.format(num);

}


검색질해서 펌펌펌

반응형
반응형

회사에서는 mssql 만 쓰는데;; mssql 빼고 모두 설정에 있다 ㅎㅎㅎㅎ


우선 mysql 로 테스트...


데이타베이스 만들고

create database rte;


잘 만들어졌다 보고 ~

show databases;


해당 데이타베이스에 특정 유저 추가 권한 ~~

GRANT ALL PRIVILEGES ON rte.* TO 'rte'@'%' IDENTIFIED BY 'rte01' WITH GRANT OPTION;


해당 DB 선택

use rte;


테이블 생성

CREATE TABLE J_ATTACHFILE 

(

FILE_ID VARCHAR(13) NOT NULL,

FILE_SEQ INT NOT NULL,

FILE_NAME VARCHAR(100) NOT NULL,

FILE_SIZE INT,

FILE_MASK VARCHAR(100),

DOWNLOAD_COUNT INT,

DOWNLOAD_EXPIRE_DATE VARCHAR(8),

DOWNLOAD_LIMIT_COUNT INT,

REG_DATE DATETIME,

DELETE_YN VARCHAR(1),

PRIMARY KEY (FILE_ID, FILE_SEQ)

)

;


인덱스 생성..

CREATE UNIQUE INDEX J_ATTACHFILE_PK ON J_ATTACHFILE

(

FILE_ID, FILE_SEQ

)

;




전자정부 프레임웍 다운

http://www.egovframe.go.kr/EgovRunEnvReleaseNote.jsp?menu=3&submenu=1


기본 프로젝트 생성..


new > egovFrame Web Project  ..  기본 생성..


[표준프레임워크포털]
http://www.egovframe.go.kr/ims/reg/com/componentListNew.do?menu=2&submenu=4


jfile 검색 후 다운로드

(

요소기술시스템

JFil


)



파일 임포트


file import > General > Archive File 선택


다운 받은것 설치


후~~~


할께 많탕~~ 


globals.properties   에서 사용하는 DB로 설명 변경 후 


MAVEN update 


프로젝트 실행.... 



됐따... 됐어 ~~~


반응형
반응형


apache-commons-lang.jar.zip


라이브러리 추가


프로젝트 > 프로퍼티 > Java Build Path > ADD JARs.. 버튼

다운 파일 추가


ToStringBuilder.reflectionToString(볼려고 하는 객체, ToStringStyle.MULTI_LINE_STYLE)



상속받아 하는법


MemberVo에 값을 넣고 출력하기 위한 MainTest클래스
1
2
3
4
5
6
7
8
9
10
public class MainTest {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new MemberVo("a001", "김씨"));
        list.add(new MemberVo("b001", "이씨"));
        list.add(new MemberVo("c001", "박씨"));
 
        System.out.println(list);
    }
}
MemberVo 클래스는 AbstractVo 클래스를 상속받는다.
AbstractVo 클래스에 toString메서드가 정의되어있기 때문에 
MainTest클래스에서 MemberVo 클래스의 생성자를 출력해도 
조상인 AbstractVo에 정의되어있는 toString()메서드가 수행된다.
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
package test.vo;
 
import common.AbstractVo;
 
public class MemberVo extends AbstractVo{
    private String mem_id;
    private String mem_name;
 
    public MemberVo() { }
    public MemberVo(String mem_id, String mem_name) {
        this.mem_id = mem_id;
        this.mem_name = mem_name;
    }
 
    /////////  getter & setter ////////
    public String getMem_id() {
        return mem_id;
    }
    public void setMem_id(String mem_id) {
        this.mem_id = mem_id;
    }
    public String getMem_name() {
        return mem_name;
    }
    public void setMem_name(String mem_name) {
        this.mem_name = mem_name;
    }
}
AbstractVo 클래스는 toString()메서드가 정의되어있다.
toString()메서드를 아래와같이 정의하면 bean객체의 정보를 깔끔하게 받아올 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package comon;
 
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
 
public class AbstractVo {
 
     
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
    }
     
}
 

출처
http://imovator.tistory.com/9


반응형
반응형

@Controller

public class ExcelController  extends ExceptionController {

@Autowired UserMngService userMngService;

//엑셀파일 변환 및 다운로드

   @RequestMapping("/excel_transform_controller")

   public Object  excelTransform(@RequestParam String target

    //,@RequestParam String branch_id

    ,Map<String,Object> ModelMap) throws Exception{

    //임시 .. 세션으로 할지 .. 히든으로 가져올지...

    String branch_id = "0112";

// 쿼리에 전달할 파라미터 설정             

HashMap<String, Object> param = new HashMap<String, Object>();

param.put("branch_id", branch_id);

param.put("target", target);



// 받아올 형태 Vo 설정 ( dao .. service.. ibatis 모두 맞춤)

/*

// 서비스 인터페이스

public List<ExcelVo> getAllObjects(Map<String, Object> param);

// service 구현

public List<ExcelVo> getAllObjects(Map<String, Object> param){

return (List<ExcelVo>) sqlMapClientTemplate.queryForList("idExcell", param);

}

// ibatis 부분

    <select id="idExcel" resultClass="패키지경로.ExcelVo" parameterClass="java.util.Map">

SELECT name from table...

   </select>

*/


// vo 형태 맞춰 리스트 가져옴

    List<ExcelVo>  excelList = userMngService.getAllObjects(param);


// ModelMap 에 풋풋

   ModelMap.put("excelList", excelList);

   ModelMap.put("target", target);    

   

            /*  // 잘 가져오나 한번 테스트 ~~ 

List<ExcelVo> list = (List<ExcelVo>)ModelMap.get("excelList");

System.out.println("  list ===== "+ list.size());         

            for(int i=0;i<list.size();i++){

            System.out.println("=============" + list.get(i).getUser_type_id());      

    System.out.println("=============" + list.get(i).getName() );

    }

            

            return null;

*/

   return "excelView";


   }

}


리턴 받을 곳에서  사용한건  servlet-context.xml --- >  BeanNameViewResolver


<beans:bean class="org.springframework.web.servlet.view.BeanNameViewResolver">

<beans:property name="order" value="0"/>

</beans:bean> 

<beans:bean id="excelView" class="패키지경로.ExcelView" />


반응형
반응형

poi  관련 url


http://javaclass1.tistory.com/149

spring 설정으로 액셀 다운로드


http://stackoverflow.com/questions/14740727/upload-excel-file-into-database-using-apache-poi-and-spring-framework

jsp 페이지 업로드 소스


http://blog.daum.net/kibbmcc/7718689

액셀 - 제어 관련


http://joke00.tistory.com/252
실제 업로드 가능 java 소스 jsp 페이지 말고 java 만 이용



반응형
반응형

import java.io.DataInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

import java.text.SimpleDateFormat;


import org.springframework.context.support.ClassPathXmlApplicationContext;


public class TaskThread implements Runnable {


    private Socket clientSocket;

    private String lineBreak = System.getProperty("line.separator");

    private StringBuffer log = new StringBuffer();

    

    public void run() {

        String messageForClient = "";

        

        try {

            saveLog("[Client Socket Address : " + clientSocket.getRemoteSocketAddress() + "]");

            saveLog("[Client Request Time   : " + getRequestTime() + "]");

           

            String clientData = getData();

            saveLog("[Client Data           : " + clientData + "]");

            messageForClient = Dispatcher.execute(clientData);

            saveLog("[Return Data           : " + messageForClient + "]");

        }

        catch(IOException i) {

            saveErrorLog(i.getMessage());

        }

        catch(Exception e) {

            saveErrorLog(e.getMessage()); 

        }

        finally {

            try {

                sendData(messageForClient);

            } 

            catch (IOException e) {

                saveErrorLog("클라이언트 전송 오류 : " + e.getMessage());  

            }

            finally {

                try {

                    clientSocket.close();

                } 

                catch (IOException e) {

                    saveErrorLog("소켓 close 오류 : " + e.getMessage());      

                }

            }

           

            System.out.println(log.toString());

            saveLogInDb();

        }

    }

    

    private void saveLogInDb() {

        

    }

    

    private void sendData(String stringData) throws IOException {

        OutputStream out = null;

        try {

            out = clientSocket.getOutputStream();

            byte[] datas = stringData.getBytes("euc-kr");

            out.write(datas);

        }

        catch(IOException e) {

            

        }

        finally {

            if(out != null) {

                out.close();

            }

        }

    }

    

    private void saveErrorLog(String errMsg) {

        saveLog("[Error Message         : " + errMsg + "]" + lineBreak); 

    }

    

    private void saveLog(String content) {

        log.append(content + lineBreak);

    }

    

    private String getRequestTime() {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        java.util.Date now = new java.util.Date();

        return sdf.format(now);

    }

    

    public TaskThread(Socket clientSocket) {

        this.clientSocket = clientSocket;

    }

    

    public String getData() throws IOException {

        DataInputStream dis = null;

        StringBuffer returnDataSb = new StringBuffer();

        saveLog("------------------------------------------------");

        

        try {

            dis = new DataInputStream(clientSocket.getInputStream());

            int count = 0;

            String macID  = "";

            String userID = "";

            String userPW = "";

            int MAC_ID_BYTES  = 50;

            int USER_ID_BYTES = 30;

            int USER_PW_BYTES = 64;

            

           if(dis.available() > 0) {

                byte[] macId  = new byte[MAC_ID_BYTES];

                byte[] userId = new byte[USER_ID_BYTES]; 

                byte[] userPw = new byte[USER_PW_BYTES];

                

                dis.read(macId);

                dis.read(userId);

                dis.read(userPw);

                

                macID  = new String(macId,  0, MAC_ID_BYTES).trim();

                userID = new String(userId, 0, USER_ID_BYTES).trim();

                userPW = new String(userPw, 0, USER_PW_BYTES).trim();

                

                saveLog("[Mac ID(" + macID.length() + ")] : " + macID);

                saveLog("[userID(" + userID.length() + ")] : " + userID);

                saveLog("[userPW(" + userPW.length() + ")] : " + userPW);

                

               /* dis.read(in,MAC_ID_BYTES,USER_ID_BYTES);

                userID = new String(in,MAC_ID_BYTES,USER_ID_BYTES);

                userID = userID.trim();

                dis.read(in,MAC_ID_BYTES + USER_ID_BYTES, USER_PW_BYTES);

                userPW = new String(in,MAC_ID_BYTES + USER_ID_BYTES, USER_PW_BYTES);

                userPW = userPW.trim();

                saveLog("[Mac ID] : " + macID);

                saveLog("[userID] : " + userID);

                saveLog("[userPW] : " + userPW);

                returnDataSb.append(macID + " " + userID + " " + userPW);*/

                returnDataSb.append(macID+"/"+userID+"/"+userPW+"/");

            }

            

            saveLog("------------------------------------------------");

            return returnDataSb.toString();

        }

        catch(IOException i) {

            throw i;

        }

        finally {

            if(dis != null) dis.close();

        }

    }

}



반응형
반응형

import Service.MyService;

import ValueObject.MyVO;



public class ReflectionTest {

public static void main(String[] args) throws Exception {

MyVO vo = new MyVO();

vo.setId("testID");

vo.setName("네이임");

vo.setPassword(1234);

MyService service = new MyService();

service.createMember(vo);

}


}

... 관련 파일 첨부

reflectionTest.zip


반응형

'BackEnd > ::: JAVA :::' 카테고리의 다른 글

JAVA 객체 출력 toString OVERRIDE  (0) 2014.02.26
map -> list 가져와서 vo 맵핑  (0) 2013.10.28
스프링 액셀 업로드 poi URL  (0) 2013.10.17
java server socket ex  (0) 2013.08.16
자바 제네릭 심플 예제  (0) 2013.04.11
netty 시작 ( 테스트 )  (0) 2013.02.06
환경 변수 세팅  (0) 2012.09.25
log4j ibatis 설정 법 정리  (0) 2012.02.14
반응형

가끔 헷갈리서 정리

템플릿 자료형 <T>

<T> 요부분 여러가지 자료형이 들어가서 객체 생성 할 수있는 개념인듯함

 

 

public class GenericsTest<T> {
 
 T data;

 public T getData() {
  return data;
 }

 public void setData(T data) {
  this.data = data;
 }
 
 public static void main(String[] args) {
  String str = "제 네 릭 하 이";
  int su = 88;
  
  GenericsTest<String> g = new GenericsTest<String>();
  GenericsTest<Integer>s = new GenericsTest<Integer>();
  g.setData(str);
  s.setData(su);
  
  System.out.println(g.getData());
  System.out.println(s.getData());
  
 }

반응형

'BackEnd > ::: JAVA :::' 카테고리의 다른 글

map -> list 가져와서 vo 맵핑  (0) 2013.10.28
스프링 액셀 업로드 poi URL  (0) 2013.10.17
java server socket ex  (0) 2013.08.16
간단한 vo / dao / service 테스트  (0) 2013.05.03
netty 시작 ( 테스트 )  (0) 2013.02.06
환경 변수 세팅  (0) 2012.09.25
log4j ibatis 설정 법 정리  (0) 2012.02.14
oracle sequence 시퀀스  (0) 2011.05.16

+ Recent posts