달력

9

« 2019/9 »

  • 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
  •  
  •  
  •  
  •  
  •  
2012.03.20 14:20

formatDate 12/24시간 설정 Language/JAVA2012.03.20 14:20

<jsp:useBean id="today" class="java.util.Date" />
<fmt:formatDate value="${today}" var="day" type="DATE" pattern="yyyy/MM/dd HH:mm" /> <!-- 24시간제 -->

<fmt:formatDate value="${today}" var="day" type="DATE" pattern="yyyy/MM/dd hh:mm" /> <!-- 12시간제 -->


Posted by 현자

댓글을 달아 주세요

2012.03.08 10:58

System.getProperty("user.home") Language/JAVA2012.03.08 10:58

System.getProperty("framework.conf", file.getAbsolutePath());

 

public static String getProperty(String key,  String def)

 

Parameters:

key - the name of the system property.
def - a default value.
Returns:
the string value of the system property, or the default value if there is no property with that key.
Throws:
SecurityException - if a security manager exists and its checkPropertyAccess method doesn't allow access to the specified system property.
NullPointerException - if key is null.
IllegalArgumentException - if key is empty.
See Also:
setProperty(java.lang.String, java.lang.String), SecurityManager.checkPropertyAccess(java.lang.String), getProperties()

시스템 프로퍼티란 시스템 환경에 관한 정보를 말한다.

System 클래스에 있는 getProperty() 메서드를 이용하면,
현재 사용하고 있는 환경 정보를 얻을 수 있다.
System 클래스를 이용하기 위해서는 java.util 패키지를 임포트 한다.


import java.util.*;
.
.
String version = System.getProperty("java.version");

 

주요 프로퍼티는 아래와 같다.
프로퍼티 : 의미 : 표시 예
java.version : Java 의 버전 : 1.4.2_13
java.vendor : Java 의 벤더(공급자) : Sun Microsystems Inc.
java.vendor.url : Java 의 벤더의 URL : http://java.sun.com
java.home : Java 를 인스톨한 디렉토리 : c:\j2sdk1.4.2_13
java.class.version : Java 클래스의 버전 : 48
java.class.path : Java 클래스가 존재하는 경로 : c:\Java
java.ext.dir : 확장기능 클래스를 포함하는 디렉토리 : null (미설정의 경우)
os.name : OS 의 이름 : Windows XP
os.arch : OS 의 아키텍처 : x86
os.version : OS 의 버전 : 5.1
file.separator : 파일을 구분하는 문자 : \(Unix 에서는 /)
path.separator : 경로를 구분하는 문자 : (Unix 에서는 :)
line.separator : 행을 구분하는 문자(개행코드) : \n
user.name : 사용자 계정 : Na
user.home : 사용자 홈 디렉토리 : c:\Document and Settings\Na
user.dir : 현재 작업 디렉토리 : c:\Java

원문주소 : http://blog.naver.com/whitefre/140066180384
Posted by 현자

댓글을 달아 주세요

javax.servlet.ServletException: org/springframework/jdbc/core/RowMapper
java.lang.NoClassDefFoundError: org/springframework/jdbc/core/RowMapper

에러 발생 시 spring.jar 파일을 WEB-INF/lib 폴더에 넣어서 해결~

spring.jar 파일

Posted by 현자

댓글을 달아 주세요

UnsupportedEncodingException  에러 발생 시
예외처리 로직이 필요하다.

try ~ catch로 해결~
Posted by 현자

댓글을 달아 주세요

2011.12.22 15:43

Calender 타입을 문자열로 변경 Language/JAVA2011.12.22 15:43

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String str = sdf.format(cal.getTime());

Posted by 현자

댓글을 달아 주세요

2011.07.27 14:29

[JSP]한글 된 파일 다운 받기 Language/JAVA2011.07.27 14:29

public void fileDown() throws Exception{

try {
    Properties value = new Properties();

   String srcFile = PageHelper.getString(getString("SRC_FILE"),"");
   String stoFile = PageHelper.getString(getString("STO_FILE"),"");

   File file = new File (uploadDir + stoFile);

   String strClient  = request.getHeader("User-Agent");

   String fileType;

   if(strClient.indexOf("MSIE 5.5") != -1) {
        response.setHeader("Content-Disposition","filename="+srcFile+";");
        fileType   = "doesn/matter";
   } else {
        response.setHeader("Content-Disposition","attachment;filename="+srcFile+";");
        fileType   = "application/octet-stream";
   }

   response.setContentType(fileType);

   byte b[] = new byte[1024];

   BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file));

   BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream(),1024);
   int read = 0;
   
   try {
    while ((read = fin.read(b)) != -1){
     outs.write(b,0,read);
    }
    fin.close();
    outs.close();
   } catch (Exception e) {
    System.out.println(e.getMessage());
   } finally {
    if(fin!=null) fin.close();
    if(outs!=null) outs.close();
   }
  } catch (Exception e){
        System.out.println(e.getMessage());
  } finally {

  } 

}
==================================================================================================
위에까지는 파일을 가져오는 소스입니다.
일반적으로 파일 다운은 웹서버에서 다운을 받지만 해당 로직을 타게 되면 WAS에서 파일을 다운을 받게
되니 주의합시다. 반드시!

위 소스는 JSP 에서 JAVA단으로 SRC_FILE,STO_FILE 값을 던져줘야 됩니다.
실제 파일은 한개지만, SRC_FILE, STO_FILE 2개를 사용하는 것은 파일 다운로드 시,
실제 서버의 경로 값을 보여주지 않기 위해서입니다.

uploadDir 는 파일을 다운 받을 위치입니다. context root 로부터 다운로드 위치까지 상대경로를
적어 주시면 됩니다.(여기 소스에는 선언 부분이 없습니다. String으로 선언해서 쓰세요.)

Posted by 현자

댓글을 달아 주세요

2011.07.14 16:09

주말 날짜 구하기 Language/JAVA2011.07.14 16:09

이번 주말은 몇일일까?

 Date date = new Date();
 Date dateSun = new Date();

 Calendar cal = Calendar.getInstance();
 cal.setTime(new java.util.Date(System.currentTimeMillis()));  //현재 시간 설정
 
 int day = date.getDay();          //현재 요일 가져오기
 
 if(day < 6){             
  cal.add(cal.DAY_OF_WEEK, 6-day);       //토요일 날짜 구하기
  date =  cal.getTime();
  cal.add(cal.DAY_OF_WEEK, 1);        //일요일 날짜 구하기
  dateSun = cal.getTime(); 
 }

TAG 날짜, 주말
Posted by 현자

댓글을 달아 주세요

저장하고자 하는 파일이 생성시간이 없어서 해당 오류가 난다.

notepad 나 사용하는 문서편집기로 간단히 공백 넣고 저장 지우고 저장

해당 파일을 윈도우 탐색기에서 확인해 보면 파일 생성시간이 등록 되어 있는걸 알 수 있다.

이제 이클립스로 와서 저장하면 문제 해결 ~

Posted by 현자

댓글을 달아 주세요

특정 string을 암호화 하고
암호화된 string을 다시 복호화 하는 기능
Java code와 
C++ code 2개 모듈을 작성하였습니다.
실제 사용하는 코드입니다.
C++로 먼저 개발을 하였고 이를 다시 java로 변경하였습니다.

<%
    WCEncrypt enc = new WCEncrypt();
    int nKey = 100;
    String sSrc = "abcdef";
    String sEnc = enc.Encrypt(sSrc.getBytes(),nKey);
    String sDec = enc.Decrypt(sEnc.getBytes(),nKey);
%>
<%="sSrc="+sSrc%><br>
<%="sEnc="+sEnc%><br>
<%="sDec="+sDec%><br>


sSrc=abcdef
sEnc=618D7F84B7E4
sDec=abcdef



아래의 code에서 WCPage는 www.webdevlib.net에서 source code를 다운로드 받아 사용이 가능합니다.
만약 WCPage를 사용하지 않고 그냥 사용하고 싶다면 WCPage가 들어간 부분을 모두 제거하면 됩니다.

package wdl;
import java.util.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.text.SimpleDateFormat;

public class WCEncrypt 
{
  
    public int m_nC1Key = 74102;
  
    public int m_nC2Key = 12337;
  
    public int m_nC3Key = 100;
  
    public WCPage m_oPage = null;
  
    public void setKey1(int nKey)
    {
        m_nC1Key = nKey;
    }
  
    public void setKey2(int nKey)
    {
        m_nC2Key = nKey;
    }
  
    public WCEncrypt(WCPage oPage)
    {
        m_oPage = oPage;
    }
  
    public WCEncrypt()
    {
    }
  
    public WCEncrypt(int nKey1,int nKey2)
    {
        m_nC1Key = nKey1;
        m_nC2Key = nKey2;
    }
  
    public WCEncrypt(WCPage oPage,int nKey1,int nKey2)
    {
        m_oPage = oPage;
        m_nC1Key = nKey1;
        m_nC2Key = nKey2;
    }
  
    public void setKey(int nKey1,int nKey2,int nKey3)
    {
        m_nC1Key = nKey1;
        m_nC2Key = nKey2;
        m_nC3Key = nKey3;
    }
  
    public void setPage(WCPage oPage)
    {
        m_oPage = oPage;
    }
  
    public byte HexaByte(int nVal)
    {
        byte [] szHexaByte = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        if (nVal > 15)
        {
            nVal = 0;
        }
        return szHexaByte[nVal];
    }
  
    public String ValueToHex(int szSrc[])
    {
        if (szSrc == null)
            return null;
        int nSrcLen = szSrc.length;
        byte szBuf[] = new byte[nSrcLen*2];
        for (int i=0;i<nSrcLen*2;i++)
        {
            szBuf[i] = 0;
        }
        for(int i=0;i<nSrcLen;i++)
        {
            szBuf[(i*2)+0] = HexaByte(((int)(szSrc[i]))/16);
            szBuf[(i*2)+1] = HexaByte(((int)(szSrc[i]))%16);
        }
        String sRet = new String(szBuf);
        return sRet;
    }
  
    public byte[] HexToValue(byte[] szSrc)
    {
        int nLen = szSrc.length;
        byte[] szDest = new byte[nLen/2];
        char szChar[] = new char[2];
        for(int I = 0 ; I < nLen/2; I++)
        {
            szChar[0] = (char)szSrc[I*2];
            szChar[1] = (char)szSrc[I*2+1];
            byte btDest = (byte)HexToDecimal(szChar);
            int nDest = btDest < 0 ? ( Byte.MAX_VALUE + 1 ) * 2 + btDest : btDest;
            szDest[I] = (byte)nDest;
        }
        String sRet = new String(szDest);
        return szDest;
    }
  
    public String Encrypt(byte btSrc[], int Key)
    {
        int nSrcLen = btSrc.length;
        long nKey2 = Key;
        int FirstResult[] = new int[nSrcLen];
        for (int i=0;i<nSrcLen;i++)
        {
            FirstResult[i] = 0;
        }
        int nLen = btSrc.length;
        for(int i = 0 ; i < nLen ; i++)
        {
            byte btByte = (byte)btSrc[i];
            int cSrc = btByte < 0 ? ( Byte.MAX_VALUE + 1 ) * 2 + btByte : btByte;
            long nXor = ((long)nKey2) / ((long)256);
            byte btTmp = (byte)(cSrc^nXor);
            FirstResult[i] = btTmp < 0 ? ( Byte.MAX_VALUE + 1 ) * 2 + btTmp : btTmp;
            byte cFirstResult = (byte)FirstResult[i];
            int nFirstResult = cFirstResult < 0 ? ( Byte.MAX_VALUE + 1 ) * 2 + cFirstResult : cFirstResult;
            long nFirstResultKey = (long)(nFirstResult + nKey2);
            nKey2 = (nFirstResultKey) * m_nC1Key + m_nC2Key;
        }
        String sRet = "";
        sRet = ValueToHex(FirstResult);
        return sRet;
    }
  
    public int HexToDecimal(char[] szSrc)
    {
        int nRet = 0;
        int nLen = szSrc.length;
        for (int i=0;i<nLen;i++)
        {
            byte cChar = (byte)szSrc[i];
            nRet = nRet * 16;
            nRet += HexToDecimal(cChar);
        }
        return nRet;
    }
  
    public int HexToDecimal(byte cChar)
    {
        if (cChar == 'A' || cChar == 'a')
            return 10;
        if (cChar == 'B' || cChar == 'b')
            return 11;
        if (cChar == 'C' || cChar == 'c')
            return 12;
        if (cChar == 'D' || cChar == 'd')
            return 13;
        if (cChar == 'E' || cChar == 'e')
            return 14;
        if (cChar == 'F' || cChar == 'f')
            return 15;
        return (cChar-48);
    }
  
    public String Decrypt(byte szSrc[],int Key)
    {
        if (szSrc == null)
            return null;
        int nSrcLen = szSrc.length;
        byte FirstResult[] = new byte[nSrcLen/2];
        for (int i=0;i<nSrcLen/2;i++)
        {
            FirstResult[i] = 0;
        }
        int nLen = 0;
        FirstResult = HexToValue(szSrc);
        byte szFirstResult[] = FirstResult;
        byte szBuf[] = new byte[nSrcLen/2];
        for (int i=0;i<nSrcLen/2;i++)
        {
            szBuf[i] = 0;
        }
        byte szResult[] = new byte[nSrcLen/2];
        for (int i=0;i<nSrcLen/2;i++)
        {
            szResult[i] = 0;
        }
        int nKey = Key < 0 ? ( Integer.MAX_VALUE + 1 ) * 2 + Key : Key;
        long nKey2 = (long)nKey;
        for(int I = 0 ; I < nSrcLen/2 ; I++)
        {
            int nVal = szFirstResult[I] < 0 ? ( Byte.MAX_VALUE + 1 ) * 2 + szFirstResult[I] : szFirstResult[I];
            long nFirstResult = ((long)nVal);
            long nXor = (nKey2/(long)256);
            long nXorResult = nFirstResult ^ nXor;
            szResult[I] = (byte)(nXorResult);
            byte cFirstResult = ((byte)szFirstResult[I]);
            long cFirstResultKey = (nFirstResult + nKey2);
            nKey2 = cFirstResultKey * m_nC1Key + m_nC2Key;
        }
        String sRet = new String(szResult);
        return sRet;
    }
}

// LEncrypt.h: interface for the CLEncrypt class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LEncrypt_H__E90C5977_3621_4B32_97AF_68E9CF9A0CC1__INCLUDED_)
#define AFX_LEncrypt_H__E90C5977_3621_4B32_97AF_68E9CF9A0CC1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CLEncrypt  
{
public:
    unsigned long m_nC1Key;
    unsigned long m_nC2Key;

    CLEncrypt();
    virtual ~CLEncrypt();

    char HexaChar(int nVal);
    void ValueToHex(CString &sRet,unsigned char * szSrc,int nLen);
    void HexToValue(unsigned char * szDest,int * nDestLen,LPCTSTR szSrc);
    void Encrypt(CString &sRet,LPCTSTR szSrc,int Key);
    int HexToDecimal(LPCTSTR szSrc);
    int HexToDecimal(unsigned char cChar);
    void Decrypt(CString &sRet,LPCTSTR szSrc,int Key);

};

#endif // !defined(AFX_LENCRIPT_H__E90C5977_3621_4B32_97AF_68E9CF9A0CC1__INCLUDED_)


// LEncrypt.cpp: implementation of the CLEncrypt class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "LEncrypt.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CLEncrypt::CLEncrypt()
{
    m_nC1Key = 74102;
    m_nC2Key = 12337;
}

CLEncrypt::~CLEncrypt()
{

}
char CLEncrypt::HexaChar(int nVal)
{
    char * szHexaChar = "0123456789ABCDEF";
    if (nVal > 15)
        nVal = 0;
    return szHexaChar[nVal];
}

// Byte로 구성된 데이터를 Hexadecimal 문자열로 변환
void CLEncrypt::ValueToHex(CString &sRet,unsigned char * szSrc,int nLen)
{
    // int I;
    // SetLength(Result, Length(S)*2); // 문자열 크기를 설정
    // for I = 0 to Length(S)-1 do
    unsigned char szBuf[1024];
    memset(szBuf,0,sizeof(szBuf));
    for(int I = 0 ; I < nLen ; I++)
    {
        szBuf[(I*2)+0] = HexaChar(((unsigned char)szSrc[I]) / 16);
        szBuf[(I*2)+1] = HexaChar(((unsigned char)szSrc[I]) % 16);
    }
    sRet = szBuf;
}

// Hexadecimal로 구성된 문자열을 Byte 데이터로 변환
void CLEncrypt::HexToValue(unsigned char * szDest,int *nDestLen,LPCTSTR szSrc)
{
    // int I;
    // SetLength(Result, Length(S) div 2);
    // for I = 0 to (Length(S) div 2) - 1 do
    int nLen = strlen(szSrc);
    for(int I = 0 ; I < nLen/2; I++)
    {
        char szChar[4];
        memset(szChar,0,sizeof(szChar));
        memcpy(szChar,&szSrc[I*2],2);
        szDest[I] = HexToDecimal(szChar);
    }
    *nDestLen = nLen/2;
}

// 암호걸기
void CLEncrypt::Encrypt(CString & sRet,LPCTSTR szSrc,int Key)
{
    unsigned long nKey2 = Key;
    // byte I;
    // CString FirstResult;
    // SetLength(FirstResult, Length(S)); // 문자열의 크기를 설정
    unsigned char FirstResult[1024];
    memset(FirstResult,0,sizeof(FirstResult));
    // for I = 1 to Length(S) do 
    int nLen = strlen(szSrc);
    for(int I = 0 ; I < nLen ; I++)
    {
        unsigned char cSrc = ((unsigned char)szSrc[I]);
        unsigned long nXor = ((unsigned long)nKey2/(unsigned long)256);
        // shr : 오른쪽으로 쉬프트 시킴.
        FirstResult[I] = (unsigned char)
            (
            cSrc ^ nXor
            ); // ^ : xor
        unsigned char cFirstResult = ((unsigned char)FirstResult[I]);
        unsigned long nFirstResultKey = (unsigned long)(cFirstResult + nKey2);
        nKey2 = (nFirstResultKey) * m_nC1Key + m_nC2Key;
    }
    ValueToHex(sRet,FirstResult,nLen);
}

int CLEncrypt::HexToDecimal(LPCTSTR szSrc)
{
    int nRet = 0;
    int nLen = strlen(szSrc);
    for (int i=0;i<nLen;i++)
    {
        char cChar = szSrc[i];
        nRet = nRet * 16;
        nRet += HexToDecimal(cChar);
    }
    return nRet;
}

int CLEncrypt::HexToDecimal(unsigned char cChar)
{
    // 0 : 48
    if (cChar == 'A' || cChar == 'a')
        return 10;
    if (cChar == 'B' || cChar == 'b')
        return 11;
    if (cChar == 'C' || cChar == 'c')
        return 12;
    if (cChar == 'D' || cChar == 'd')
        return 13;
    if (cChar == 'E' || cChar == 'e')
        return 14;
    if (cChar == 'F' || cChar == 'f')
        return 15;
    return cChar-48;
}

// 암호풀기
void CLEncrypt::Decrypt(CString &sRet,LPCTSTR szSrc,int Key)
{
    // byte I;
    // CString FirstResult;
    // FirstResult = HexToValue(S);
    unsigned char FirstResult[1024];
    memset(FirstResult,0,sizeof(FirstResult));
    int nLen = 0;
    HexToValue(FirstResult,&nLen,szSrc);
    // SetLength( Result, Length(FirstResult) );
    // for I = 1 to Length(FirstResult) do
    LPCTSTR szFirstResult = (LPCTSTR)FirstResult;
    unsigned char szBuf[1024];
    memset(szBuf,0,sizeof(szBuf));
    unsigned char szResult[1024];
    memset(szResult,0,sizeof(szResult));
    unsigned long nKey2 = Key;
    for(int I = 0 ; I < nLen ; I++)
    {
        unsigned long nFirstResult = ((unsigned long)szFirstResult[I]);
        unsigned long nXor = (nKey2/(unsigned long)256);
        unsigned long nXorResult = nFirstResult ^ nXor;
        szResult[I] = (unsigned char)(nXorResult);
        unsigned char cFirstResult = ((unsigned char)szFirstResult[I]);
        unsigned long cFirstResultKey = (cFirstResult + nKey2);
        nKey2 = cFirstResultKey * m_nC1Key + m_nC2Key;
    }
    sRet = szResult;
}

출처 : 고급 웹 UI 개발 라이브러리 Web Development Library 소스공개 : http://www.webdevlib.net
Posted by 현자

댓글을 달아 주세요


try {
   // ...
}
catch(Exception e){
   StackTraceElement[] elem = e.getStackTrace();
   for ( int i = 0; i < elem.length; i++ )
      log.info(elem[i]);
}

Posted by 현자

댓글을 달아 주세요