SMALL

http://childeye.tistory.com/182


Server/Tomcat

access 로그 설정
   

Tomcat 사용 시 Access Log를 기록하는 방법은 다음과 같습니다.

 

$CATALINA_HOME/conf/server.xml 파일 내용 중 아래 부분의 주석을 제거하신 후 Tomcat을 재 시작하시면 됩니다.

 

        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve"
                  directory="logs"  prefix="localhost_access_log." suffix=".txt"
                  pattern="common" resolveHosts="false"/>
         -->

 

<Valve className="org.apache.catalina.valves.AccessLogValve"
 directory="/apps/atlassian/logs" prefix="" suffix=".tomcat2_access.log"
 pattern="%t %a %Ts %{userid}r %B %U%q"
 fileDateFormat="yyyy-MM-dd"
 resolveHosts="false"/>

 

참조: http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html

 

 

 
•%a - Remote IP address
•%A - Local IP address
•%b - Bytes sent, excluding HTTP headers, or '-' if zero
•%B - Bytes sent, excluding HTTP headers
•%h - Remote host name (or IP address if resolveHosts is false)
•%H - Request protocol
•%l - Remote logical username from identd (always returns '-')
•%m - Request method (GET, POST, etc.)
•%p - Local port on which this request was received
•%q - Query string (prepended with a '?' if it exists)
•%r - First line of the request (method and request URI)
•%s - HTTP status code of the response
•%S - User session ID
•%t - Date and time, in Common Log Format
•%u - Remote user that was authenticated (if any), else '-'
•%U - Requested URL path
•%v - Local server name
•%D - Time taken to process the request, in millis
•%T - Time taken to process the request, in seconds
•%I - current request thread name (can compare later with stacktraces)

 

LIST
블로그 이미지

SeoHW

,

java Mail 파일저장

Java 2015. 8. 31. 18:12
SMALL
LIST

'Java' 카테고리의 다른 글

java 생년월일로 나이계산하기~  (0) 2018.01.16
톰켓 JSP Parameter 한글 깨짐  (0) 2017.09.28
특수문자 제거,이메일 유효성 검사 등등  (0) 2015.08.31
java Mail Part1 ,, java Mail 소개  (0) 2015.06.24
자바 형변환  (0) 2015.05.14
블로그 이미지

SeoHW

,
SMALL
//특수문자 제거 하기
   public static String StringReplace(String str){      
      String match = "[^\uAC00-\uD7A3xfe0-9a-zA-Z\\s]";
      str =str.replaceAll(match, " ");
      return str;
   }

 

 
//이메일 유효성
   public static boolean isEmailPattern(String email){
    Pattern pattern=Pattern.compile("\\w+[@]\\w+\\.\\w+");
    Matcher match=pattern.matcher(email);
    return match.find();
   }

 

 
//연속 스페이스 제거
  public static String continueSpaceRemove(String str){
   String match2 = "\\s{2,}";
   str = str.replaceAll(match2, " ");
   return str;
  }
LIST

'Java' 카테고리의 다른 글

java 생년월일로 나이계산하기~  (0) 2018.01.16
톰켓 JSP Parameter 한글 깨짐  (0) 2017.09.28
java Mail 파일저장  (0) 2015.08.31
java Mail Part1 ,, java Mail 소개  (0) 2015.06.24
자바 형변환  (0) 2015.05.14
블로그 이미지

SeoHW

,
SMALL

세팅값 접속 허용을위한

centOS 6.6 기준

/var/lib/pgsql/data/postgresql.conf 에서

기존은 listen_addresses  = localhost로 되어있음

listen_addresses 0,0,0,0 으로 변환

외부 접속허용시

LIST
블로그 이미지

SeoHW

,

리눅스 명령어 모음

Linux 2015. 6. 24. 10:26
SMALL

Linux 명령어

 

uname -a     버젼정보보기

pwd          현재위치보기

nl <파일>     numberline

vi -> :set nu   라인넘버보기

ls --help

mkdir -p <디렉토리/디렉토리>     하위디렉토리포함 만들기

rmdir <디렉토리>     디렉토리지우기

touch <파일>     파일만들기 또는 현재날자로 수정

clear         화면지우기

cp -f <파일> <파일>      //-f:묻지않음, -r:하위디렉토리포함

rm -rf <디렉토리>     디렉토리지우기

mv <디렉토리> .      이동

ln <파일1> <파일2>     hardlink 2->1

ln -s <파일1> <파일2> softlink 2->1

echo $PATH      PATH보기

PATH=$PATH:\root/디렉토리     path추가

who am I     내정보보기

cat -n <파일>     라인번호

more, less      b: back, /단어: 검색

cat file1 > file2     redirection 표준출력

cat file1 >> file2     Append 추가

rpm -qa | grep <파일>     현재컴퓨터에 설치된 프로그램중 <파일>만출력

cal 월 년 | mail 주소     달력출력후 메일로 보내기

ps -ef | grep <파일>     실행중 프로세스중 <파일>만 출력

wc <파일>     라인 단어 문자 파일명

rpm -qa | wc -l     개수

bc     계산기

alias     별칭보기(ls -al == ll)

alias c='clear'     추가

history     !번호

useradd <계정>     계정추가

passwd <계정>      비밀번호

ps1='[\d  \t  \!] [\w]  \n  \\$'

    날짜 시간 명령어번호 현재경로 새로운라인

.bashrc     초기설정값저장, alias, ps1입력해서 전역변수화, 다음로그인시 설정값저장


ftp <주소>

ftp> pwd: server경로,     !pwd: client경로, !ls

ftp>get <파일>    다운로드

ftp>mget <*>    여러파일 다운로드

ftp>? <명령어>     설명

ftp>bye     끝

ftp>put <파일>     업로드

ftp>mput <a*>     여러파일 업로드

ftp>prompt      Interactive mode off/on


chsh -l     내시스템이 사용중인 쉘종류

cat -n /etc/shells

echo $SHELL     현재사용중인 쉘

env     환경변수 보기

chsh     /bin/ash(쉘종류)     shell change

gzip -1v <파일>     숫자클수록 압축률상승 속도저하

gunzip <파일>     파일명.gz 압축하기

tar xvfz <파일.tar.gz>     풀기


mount     현재마운트된 상태

df -h     파티션정보, 마운트정보

mount -t ext3 </dev/hda8> </apm>

mount -t iso9660 /dev/cdrom /mnt/cdrom/        cdrom마운트

umount </apm>

mkfs -t ext3 </dev/hda8>     파티션포멧

/etc/fstab     filesystem정보담긴 파일

/etc/inittab     runlevel 설정파일

  id:5:initdefault:     3:일반텍스트모드, 5:xwindow모드부팅

/etc/grub.conf     groub설정파일

vi -> se nu     번호붙이기


※ Kernel Compile

1. 커널 다운로드후 /usr/src  이동후 압축해제

2. /linux 이동

3. make mrproper     커널환경초기화

4. make xconfig/menuconfig

5. make dep     의존성 구축

6. make clean    필요없는 모듈제거

7. make bzImage     새로운 커널 이미지마듬

8. make modules

9. make modules_install

10. arch/i386/boot/bzImage  -> /boot로 이동

11. grub에서 설정


rpm -qa | grep ftp | wc -l

rpm -e --nodeps  <package name> 의존성무시 강제삭제

rpm -ivh <package name>   설치

rpm -Uvh     업그레이드

(core 먼저설치, standalone 나중설치)

 

/proc    시스템정보   meminfo, cpuinfo, swaps, interrupts, IRQ정보

top    현재 프로세스 사용상태 실시간

ps -A   실행중 프로세스     -ef 자세히

pstree

killall <프로세스이름>   프로세스 죽이기


useradd <계정>

passwd <계정>

/etc/passwd

/etc/shadow

finger <계정>   정보보기

chfn <계정>    정보수정

usermod -s(쉘변경) /bin/zsh(쉘위치) <계정> ;   -g(그룹변경) <그룹명> <계정>

userdel -r <계정>     homedirectory삭제

/etc/group

groupadd <그룹명>

/etc/default/useradd     홈디렉토리변경가능

useradd -G <그룹> <계정>

groups <계정>     이계정의 소속그룹 확인

chgrp <그룹명> <디렉토리>     디렉토리 소유그룹을 <그룹명>으로 변경

chown <계정명> <파일명>

chown <계정.그룹> <파일> 계정,그룹동시변경 가능

chmod 777 <파일>   r:4, w:2, x:1

 

gcc -o <만들파일이름> <소스파일.c>

./configure   (--prefix=/디렉토리)   (기본=/usr/local)

make   컴파일

make clean   에러발생시

make install

 

shutdown -h now   (-r: reboot)


host -l <domain name>   그 도메인의 IP주소출력

traceroute microsoft.com

 

find / -name "filename"    (-perm, -user)

find . -name "*.txt" | xargs grep [-option] hello   -> hello문자열을 포함한 파일 찾기

[option]

-l: 파일리스트만 보여주기, -i: 찾는 문자열 대소문자 구분하지 않기, -r: find쓰지 않고 특정디렉토리 이하 모두 검색

 

which <명령어>

whereis <명령어>

 

/var/log/dmesg     ->커널이 부팅시 하드웨어 검색하는 메세지

/var/log/messages   ->커널과 시스템에 관련된 로그 메세지

 

service networ [옵션]

redhat-config-network

ifconfig

vi /etc/sysconfig/network     기본 호스트에 대한 정보

vi /etc/sysconfig/network-scripts/ifcfg-eth0     이더넷카드설정

vi /etc/resolv.conf          DNS설정

 

/etc/init.d/network restart   (또는 /etc/rc.d/init.d/network)   네트워크재시작

LIST

'Linux' 카테고리의 다른 글

linux find 사용기  (0) 2018.08.23
리눅스 파일 찾기 (파일명 검색)  (0) 2015.06.24
linux 파일만들기, 파일옮기기,이동,복사하기  (0) 2015.03.19
ubuntu apt 패키지 삭제  (0) 2015.03.17
linux hdd mount 하기  (0) 2015.03.16
블로그 이미지

SeoHW

,
SMALL
Java Mail API에 대해서 알아본다.

Java Mail API

기존에 자바에서 메일과 관련된 프레임워크를 개발하기 위해서 개발자들은 스스로 전체적인 메일 시스템을 설계하고 구현해야만 했다. 하지만, Java Mail API가 발표되면서, 개발자들은 메일 시스템의 프레임워크를 설계하는 데 고민할 필요가 없어졌으며, 또한 Java Mail API와 함께 제공되는 클래스들(SMTP, POP3, IMAP을 구현하였다)을 사용하여 매우 손쉽게 메일을 주고 받는 시스템을 구축할 수 있게 되었다.

이 글에서는 Java Mail API가 무엇이며, 어떻게 구성되어 있는 지 살펴볼 것이며, 다음 기사에서는 Java Mail API를 이용하여 간단한 웹 기반의 메일 시스템을 구현해볼 것이다.

Java Mail API의 주요 목적은 개발자들이 손쉽게 어플리케이션의 메일 기능을 추가하고 또한 정교한 사용자 인터페이스를 생성할 수 있도록 하는 것이다. Java Mail API는 Message, Transport, Session과 같이 메일의 공통적인 기능과 프로토콜을 추상화한 클래스를 포함하고 있으며, 또한 자바 기반이기 때문에 자바 플랫폼에서 제공하는 다양한 API를 사용할 수 있다. 다음 그림은 Java Mail API의 전체적인 구조를 보여주고 있다.


위 그림을 보면 가장 상위에 메일 시스템을 사용하는 어플리케이션 위치하는 것을 알 수 있다. 이 어플리케이션은 Java Mail의 추상 클래스를 통해서 실제 구현 클래스 계층에 접근하게 된다. 구현 클래스 계층은 하부에 있는 실제 이메일 시스템 구현 계층과 상호작용한다.메일의 컨텐츠와 관련된 데이터는 JAF(JavaBean Activation Framework)를 사용하여 표현할 수 있다. 일반적으로 Java Mail API를 사용하는 어플리케이션은 다양한 포맷을 제공하기 위해 JAF를 통해 메일 메시지의 컨텐츠를 생성한다.

JavaMail 프레임워크

Java Mail API는 다음과 같은 기능을 수행하는 것을 기본 목적으로 한다.

  • 헤더와 데이터로 구성된 메일 메시지를 생성한다. Java Mail은 메일 메시지를 정의하기 위해 Message 클래스를 사용한다.
  • Session 객체를 생성한다. 이 객체는 사용자를 인증하고 메시지 저장과 전송에 대한 접근을 제어한다.
  • 메시지를 전송한다.
  • 메시지 저장소로부터 메시지를 읽어온다.
  • 읽은 메시지에 명령어를 수행한다. '보기'나 '출력' 같은 명령어는 JAF를 인식하는 자바빈에서 구현하도록 하고 있다.
일반적으로 이러한 기능은 메일 클라이언트가 기본적으로 제공하는 것들이다. 전체 프레임워크를 그림으로 나타내면 다음과 같다.



Java Mail API의 주요 구성 요소

이 글에서는 Java Mail API의 모든 클래스에 대해서 알아보지는 않을 것이며, 가장 중심적인 역할을 하는 클래스인 javax.mail.Session, javax.mail.Store, javax.mail.Transport, javax.mail.Folder, javax.mail.Message 클래스에 대해서 알아볼 것이다. 실제로 이 다섯개의 클래스만 알맞게 사용하면 매우 손쉽게 메일 시스템을 구축할 수 있다.

javax.mail.Session

javax.mail.Session은 Java Mail API를 사용하는 출발점이 되는 클래스로서 다양한 메일 프로토콜을 위한 서비스 프로바이더 구현(Service Provider Implementation; SPI)을 나타내는 클래스를 로딩하고 제어할 수 있는 메소드를 제공하고 있다. 예를 들어, javax.mail.Store 클래스의 인스턴스는 javax.mail.Session 클래스를 통해서 구할 수 있다. (여기서 서비스 프로바이더는 Java Mail API를 이용하여 구현 클래스 계층을 제공하는 개발자는 벤더를 의미한다. 현재 Java Mail API는 IMAP, SMTP, POP3 프로토콜에 대한 구현 계층을 제공하고 있다.)

javax.mail.Store

javax.mail.Store 클래스는 특정한 메일 프로토콜을 이용하여 메일의 읽기, 쓰기, 감시, 검색 등을 할 수 있도록 해 준다. Session 클래스를 사용하여 구할 수 있으며, 메일 저장소를 추상화한 javax.mail.Folder에 접근할 수 있도록 해 준다. 서비스 프로바이더는 Store 클래스를 알맞게 구현해야 한다.

javax.mail.Folder

javax.mail.Folder 클래스는 메일 메세지에 계층적 구조를 제공하며 메일 메세지에 접근할 수 있도록 해 준다. 메일 메세지는 javax.mail.Message 클래스의 객체로 표현된다. 서비스 프로바디어는 Folder 클래스를 알맞게 구현해야 한다.

javax.mail.Transport

javax.mail.Transport 클래스는 특정한 프로토콜을 사용하여 메세지를 전송할 때 사용된다. 서비스 프로바이더는 이 클래스를 알맞게 구현해야 한다.

javax.mail.Message

javax.mail.Message 클래스는 주제, 수신자의 이메일주소, 발송자의 이메일 주소, 보낸 날짜와 같은 실제 이메일 메세지의 세부 사항을 나타낸다. 서비스 프로바이더는 자신이 사용하는 프로토콜에 알맞게 Message를 구현해야 한다.

Java Mail API와 JAF

Java Mail API는 메시지에 다양한 포맷을 사용할 수 있도록 하기 위해 JAF를 사용한다. JAF는 별도의 확장 API로서 다양한 데이터 형식을 이용하여 작업하는 방법을 통합하기 위해 작성되었다. 실제로 JAF를 이용하면 간단한 텍스트 데이터에서부터 이미지, 비디오 등의 매우 복잡한 멀티 미디어 데이터로 구성된 문서까지 다양한 데이터를 제공할 수 있다.

예제 어플리케이션

여기서 사용할 예제는 일정 시간 동안 메일 박스를 검사하는 어플리케이션이다. 예제 어플리케이션은 POP3를 사용하기 때문에, 이 예제를 실행하기 위해서는 POP3를 지원하는 메일 시스템에 이메일 계정을 갖고 있어야 한다.

예제 어플리케이션을 실행하기 위해서는 Java Mail API와 JAF API가 필요하다. 이 두 API는 각각 http://java.sun.com/products/javamail/index.htmlhttp://java.sun.com/products/javabeans/glasgow/jaf.html에서 다운로드 받을 수 있다. Java Mail API 1.2를 다운로드 받은 후 압축을 풀면 mailapi.jar, mail.jar, pop.jar, smtp.jar, imap.jar 파일이 생성된다. 여기서 mail.jar는 mailapi.jar, pop3.jar, smtp.jar, imap.jar에 있는 모든 클래스 파일을 포함하고 있는 JAR 파일이다. 따라서 간단하게 mail.jar만 CLASSPATH에 추가하면 Java Mail 1.2에서 제공하는 추상 클래스 계층과 POP3, SMTP, IMAP 구현 클래스 계층을 모두 사용할 수 있다.

예제로 사용되는 POP3Checker.java는 일정한 시간 간격으로 POP3 호스트를 검사해서 새로 수신된 메일이 있을 경우 그 메일을 읽어온다. 즉, 간단한 메일 클라이언트라고 생각하면 된다.

POP3Checker의 핵심 부분은 다음과 같다.

   public void process() throws Exception {
      // Session 객체를 구한다.
      java.util.Properties sysProperties = System.getProperties();
      Session session = Session.getDefaultInstance(sysProperties, null);
      session.setDebug(true); // 디버깅 정보를 화면에 보여준다.
      
      // POP3 호스트에 접속한다.
      Store store = session.getStore("pop3");
      store.connect(pop3Host, -1, user, password);
      
      // 기본 폴더를 구한다.
      Folder folder = store.getDefaultFolder();
      if (folder == null)
         throw new NullPointerException("디폴트 메일 폴더 없음");
      
      // "INBOX" 폴더를 구한다.
      folder = folder.getFolder("INBOX");
      if (folder == null)
         throw new NullPointerException("INBOX 폴더를 구할 수 없음");
      
      // 메시지 개수를 구한다.
      folder.open(Folder.READ_WRITE);
      int totalMessages = folder.getMessageCount();
      if (totalMessages == 0)
      {
         System.out.println(folder + "가 비었습니다.");
         folder.close(false);
         store.close();
         return;
      }
      
      // 각 메시지의 속성과 플래그를 구한다.
      Message[] messages = folder.getMessages();
      FetchProfile fp = new FetchProfile();
      fp.add(FetchProfile.Item.ENVELOPE);
      fp.add(FetchProfile.Item.FLAGS);
      fp.add("X-Mailer");
      folder.fetch(messages, fp);
      
      for (int i = 0; i < messages.length; i++)
      {
         if (!messages[i].isSet(Flags.Flag.SEEN)) {
            printMsssage(messages[i]);
         }
         // 읽어온 메시지를 호스트에서 삭제한다.
         messages[i].setFlag(Flags.Flag.DELETED, true); 
      }
      
      folder.close(true);
      store.close();
   }

POP3Checker 클래스는 process() 메소드를 일정 주기 동안 반복적으로 호출한다. POP3Checker.process() 메소드를 살펴보면 다음과 같은 순서로 작업을 진행하는 것을 알 수 있다.

  1. Session 객체 구함
  2. 알맞은 프로토콜을 사용하여 호스트에 접속(Store 객체 사용)
  3. 메일이 저장된 폴더 구함(Folder 객체 사용)
  4. Folder로부터 Message 객체 구함
  5. Message 출력
  6. 읽어온 메시지를 호스트에서 삭제한다.
아웃룩 익스프레스와 같이 일반적으로 널리 사용되는 메일 프로그램들은 모두 1-6번 과정을 거쳐서 메일을 호스트로부터 읽어온다.

위 코드에서 printMessage() 메소드는 파라미터로 전달받은 Message 객체를 화면에 출력해주는 부분으로서 다음과 같다.

   private void printMsssage(Message message) throws Exception {
      String replyTo = null, subject;
      Object content;
      java.util.Date sentDate;
      Address[] a=null;
      
      if ((a = message.getFrom()) != null)
         replyTo = a[0].toString();
      
      subject  = message.getSubject();
      sentDate = message.getSentDate();
      DataHandler dataHandler = message.getDataHandler();
      String contentType = dataHandler.getContentType();
      
      System.out.println("=====================================================");
      System.out.println("보낸사람:"+replyTo);
      System.out.println("보낸시각:"+sentDate);
      System.out.println("주제:"+subject);
      System.out.println("-----------------------------------------------------");
      
      if ( (contentType.indexOf("text/html") != -1) || (contentType.indexOf("text/plain") != -1) ) {
         BufferedReader br = new BufferedReader(new InputStreamReader(dataHandler.getInputStream()));
         char[] buff = new char[512];
         int len;
         while ( (len = br.read(buff)) != -1) {
            System.out.print(new String(buff, 0, len));
         }
         br.close();
      }
      System.out.println("\n=====================================================\n");
   }

printMessage() 메시지에서 실제 메일의 내용은 ContentHandler 객체로부터 추출된다. ContentHandler 클래스는 JAF에 정의되어 있는 클래스로서 다양한 포맷의 데이터를 취급하기 위해서 사용된다. 위 예제에서는 ContentHandler 객체가 처리하고 있는 데이터의 타입이 "text/html"이거나 "text/plain"인 경우에 화면에 출력하도록 하고 있다. POP3Checker.java의 완전한 소스 코드는 관련 링크 부분을 참조하기 바란다.

결론

이 글에서는 Java Mail API가 무엇인지에 대해 개괄적으로 알아보았다. Java Mail API는 모든 메일 시스템에 공통적으로 적용될 수 있는 프레임워크를 제공하고 있기 때문에 별도의 프레임워크 개발없이 손쉽게 새로운 메일 시스템을 구현할 수 있도록 하고 있으며, 뿐만 아니라 널리 사용되고 있는 SMTP나 POP3와 같은 프로토콜에 기반한 메일 시스템 프레임워크를 구현해 놓고 있다. 따라서 개발자들은 특별한 어려움없이 Java Mail API 만을 사용해서 간단하면서도 견고한 메일 시스템을 구축할 수 있게 되었다.

다음 글에서는 웹에서 SMTP를 사용하여 이메일을 전송할 수 있는 간단한 웹기반의 메일 전송 시스템을 구축해 볼 것이다.

 

LIST

'Java' 카테고리의 다른 글

java 생년월일로 나이계산하기~  (0) 2018.01.16
톰켓 JSP Parameter 한글 깨짐  (0) 2017.09.28
java Mail 파일저장  (0) 2015.08.31
특수문자 제거,이메일 유효성 검사 등등  (0) 2015.08.31
자바 형변환  (0) 2015.05.14
블로그 이미지

SeoHW

,
SMALL

현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기

find -name '*.pl'


(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)


루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기

find / -name '*.pl'




전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기

find / -name 'ab*'




전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기

find / -name '.bash*'




전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력

find / -name '.bash*' -ls


뒤에 -ls 라는 옵션을 붙이면 됩니다.




디렉토리명 찾기


전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기

find / -name 'et*' -type d



주의! 옵션 순서를 바꾸면 에러가 납니다.

LIST

'Linux' 카테고리의 다른 글

linux find 사용기  (0) 2018.08.23
리눅스 명령어 모음  (0) 2015.06.24
linux 파일만들기, 파일옮기기,이동,복사하기  (0) 2015.03.19
ubuntu apt 패키지 삭제  (0) 2015.03.17
linux hdd mount 하기  (0) 2015.03.16
블로그 이미지

SeoHW

,

자바 형변환

Java 2015. 5. 14. 18:14
SMALL
int to String
String str = Integer.toString(i);
String str = "" + i;


String to int

int i = Integer.parseInt(str);
int i = Integer.valueOf(str).intValue();


double to String

String str = Double.toString(d);

long to String

String str = Long.toString(l);

float to String

String str = Float.toString(f);

String to double

double d = Double.valueOf(str).doubleValue();

String to long

long l = Long.valueOf(str).longValue();
long l = Long.parseLong(str);


String to float

float f = Float.valueOf(str).floatValue();


decimal to binary

String binstr = Integer.toBinaryString(i);

decimal to hexadecimal
String hexstr = Integer.toString(i, 16);
String hexstr = Integer.toHexString(i);
Integer.toHexString( 0x10000 | i).substring(1).toUpperCase());

hexadecimal(String) to int

int i = Integer.valueOf("B8DA3", 16).intValue();
int i = Integer.parseInt("B8DA3", 16);

ASCII Code to String

String char = new Character((char)i).toString();

Integer to ASCII Code
int i = (int) c;

Integer to boolean
boolean b = (i != 0);

boolean to Integer
int i = (b)? 1 : 0;


LIST

'Java' 카테고리의 다른 글

java 생년월일로 나이계산하기~  (0) 2018.01.16
톰켓 JSP Parameter 한글 깨짐  (0) 2017.09.28
java Mail 파일저장  (0) 2015.08.31
특수문자 제거,이메일 유효성 검사 등등  (0) 2015.08.31
java Mail Part1 ,, java Mail 소개  (0) 2015.06.24
블로그 이미지

SeoHW

,
SMALL

이클립스 서버 플러그인으로 톰캣 5.5를 띄우면, 로그 파일을 남기지 않네요.
톰캣 5.0과 5.5의 톰캣 시작 방식이 달라서 생기는 문제 같은데요..

이것을 해결하려면 다음과 같이 하면 돼요.

이클립스 메뉴에서 Run > Open Run Dialog를 선택하세요.
톰캣 설정을 선택하시구요..

다음과 같이 Arguments 탭의 VM arguments에 다음 내용을 추가해 주어요.

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file={톰캣_설치_경로}\conf\logging.properties


다음과 같이 하면 되겠죠?

사용자 삽입 이미지


 

환경:
    Eclipse Europa Fall 2 (Eclipse 3.3.1.1)
    Wep Standard Tools (WST) Project 2.0.1
LIST
블로그 이미지

SeoHW

,
SMALL

이전 예제에서 유의깊게 봐야할 부분이라면 바로 이부분일 것입니다.

 

 

 

${serverTime} 이부분에서 서버의 시간대를 가져옵니다. 꼭 PHP 에서 자주본 문법같기도 합니다.

문제는 저게 왜 서버의 시간대를 지칭하는지 아직 모른다는 것이죠.

 

제가 생각한 가능성은 다음과 같습니다.

 

1. ${serverTime} 은 스프링 프레임워크에서 제공하는 매크로 상수이다.

2. 소스 어디선가 전역적으로 사용할 수 있도록 변수를 정의 하였다.

3. 스프링 프레임워크를 공부하다 보면 알 수 있을 것이다.

 

사실 3번이 답이겠죠. 아직 모르겠습니다.

이번 포스팅에서는 스프링의 구조와 함께 그 부분을 조사해보겠습니다.

 

 일단 ${serverTime} 의 궁금증을 풀기 위해 소스를 뒤져보겠습니다.

HomeController.java 파일을 찾을 수 있는데요.

 

 

 

소스의 내용을 보면 다음과 같은 내용이 있습니다.

 

 

 

${serverTime} 과 깊은 관련이 있어보이는 부분이 보입니다.

model.addAttribute() 함수를 이용해서 속성(Attribute) 를 추가합니다.

아마도 (key, value) 로 넣는 것이겠죠.

키가 "serverTime", 값은 포맷된 현재 시간의 문자열입니다.

 

이부분이 찾는 부분이 맞는지 확인하기 위해 소스를 조금 바꿔보겠습니다.

소스를 다음과 같이 바꿔줍니다.

 

 

 

만약 위의 예상이 맞다면 화면의 표시되는 시간이 바뀌어야합니다.

 

소스를 변경하고 다시 실행한 모습입니다.

 

 

 

역시 예상대로 화면이 바뀌었습니다.

즉 ${serverTime} 은  model.addAttribute() 를 통해 들어온 속성을 불러온것이라고 볼 수 있겠죠.

 

또 HomeController.java 에서는 주의깊게 봐야 할 부분이 있습니다.

 

 

 

 

바로 밑줄 친  어노테이션 부분입니다.

스프링은 @Controller 어노테이션을 보고 이 클래스가 Controller 라는것을 인지합니다.

 

또 메소드 위에 @RequestMapping 어노테이션을 보고 이것이 요청때 사용되어진다는 것을 확인하죠.

 

 

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

 

여기서 value 는 패키지 이후의 상세 매핑 주소라고 생각됩니다. 

method 는 아마도 HTTP 의 GET 메소드 방식을 의미하겠죠.

 

확인하기 위해 value 부분을 바꿔보겠습니다.

다음 화면과 같이 바꿔보죠.

 

 

 

이렇게 수정한뒤 아까와 같은 주소로 접속해보겠습니다.

http://localhost:8080/blog 로 접속하면 다음과 같이 화면이 나옵니다.

 

 

 

이제는 아래의 주소로 접근해야 합니다.

http://localhost:8080/blog/home

 

 

 

@RequestMapping 에 의해 Method 가 실행된다는 것을 알 수 있습니다.

 

또 return 부분을 봐야합니다.

 

 

 

여기서 "home" 문자열을 반환하는데, 이것은 어떤 뷰를 실행할것인지 선택하는 중요한 요건입니다.

 

잠시 ServletContext.xml 파일을 보겠습니다.

 

 

소스중 이런 부분이 있습니다.

 

 

 

<beans:bean>  태그에 InternalResourceViewResolver 가 있습니다.

그리고 접두사가

/WEB-INF/views/

 

접미사가 

.jsp

입니다.

 

주석은 @Controller 에 의해 렌더링 하기 위해 선택된 뷰 라고 쓰여 있습니다.

즉 Controller 에서 반환한 "home"  은 

/WEB-INF/views/home.jsp 가 되는 것입니다.

 

역시 이부분도 시험삼아 home2.jsp 를 만들고 @Controller 에서는 "home2" 를 반환해보겠습니다.

 

home2.jsp 를 만들고 다음과 같이 편집합니다.

 

 

 

그리고 Controller 에서는 "home2" 를 반환합니다.

 

 

 

이제 실행해보겠습니다.

 

 

 

예상대로 home2.jsp 가 불리게 되었습니다.

위의 사항을 토대로 페이지가 불리게 되는 순서를 그림으로 그려보죠.

 

 

 

 

아직 저도 배우는 입장이라 정확하지 않지만 현재까지 제가 아는 지식으로 보면 저런 그림이 나옵니다.

 

하지만 이 예제에서는 요청때 아무런 데이터도 전달하지 않았습니다.

대부분 페이지를 요청할때 데이터를 같이 전달합니다.

LIST
블로그 이미지

SeoHW

,