336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



package mdm.comm.util;


import java.util.List;

import java.util.Properties;

import javax.mail.Address;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class mailSend {

public static void send(List<String> toMail, String fromMail, String message, String title,String gmail, String id, String pwd)throws Exception{

Properties p = new Properties();

p.put("mail.smtp.user", "google계정@gmail.com"); 

p.put("mail.smtp.host", "smtp.gmail.com");

p.put("mail.smtp.port", "465");

p.put("mail.smtp.starttls.enable","true");

p.put( "mail.smtp.auth", "true");

p.put("mail.smtp.debug", "true");

p.put("mail.smtp.socketFactory.port", "465"); 

p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 

p.put("mail.smtp.socketFactory.fallback", "false");    

Authenticator auth = new SMTPAuthenticator(id,pwd);

Session session = Session.getInstance(p, auth);

session.setDebug(true); // 메일을 전송할 때 상세한 상황을 콘솔에 출력한다.

MimeMessage msg = new MimeMessage(session);

msg.setSubject(title,"UTF-8");

Address fromAddr = new InternetAddress(fromMail); // 보내는 사람의 메일주소

msg.setFrom(fromAddr);

 InternetAddress[] addressTo = new InternetAddress[toMail.size()];

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

  addressTo[i] = new InternetAddress(toMail.get(i));

 }

 msg.setRecipients(Message.RecipientType.TO, addressTo);


msg.setContent(message, "text/html;charset=utf-8");

 

Transport.send(msg);

}

private static class SMTPAuthenticator extends javax.mail.Authenticator {

String id;

String pwd;

SMTPAuthenticator(String id , String pwd){

this.id = id;

this.pwd = pwd;

}

public PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication("구글아이디", "pwd"); //구글아이디는 구글계정에서 @이후를 제외한 값이다. (예: abcd@gmail.com --> abcd)

}

}


* 다음과 같은 에러가 발생할 경우 gmail 계정을 2단계 인증으로 등록하고, 위 소스의 pwd란에 gmail용 비밀번호가 아닌 ACCESS 용 비밀번호를 등록해야 한다.

535-5.7.8 Username and Password not accepted. Learn more at

535 5.7.8 http://support.google.com/mail/bin/answer.py?answer=xxxx xxxxxx

javax.mail.AuthenticationFailedException


* gmail 2단계 인증하여 비밀번호 등록하는 법

1. https://myaccount.google.com/

2. https://accounts.google.com/b/0/SmsAuthConfig?hl=ko 
> 설정 시작

3. 재로그인

4. https://accounts.google.com/b/0/SmsAuthSettings?Setup=1
> 전화번호 입력 후 코드 전송

> 인증코드 입력

5. https://security.google.com/settings/security/apppasswords?pli=1
> 기기선택과 앱(MAIL) 선택 후 생성

6. 생성된 비밀번호를 위 소스의 pwd란에 입력한다.


'JAVA' 카테고리의 다른 글

SVN plugin으로 설치하기  (0) 2015.05.29
Eclipse SVN Market이용해서 설치하기  (0) 2015.05.29
Eclipse Git Plugin 설치하기  (0) 2015.05.29
Eclipse properties editor설치하기  (0) 2015.05.29
Eclipse plugin 삭제  (0) 2015.05.28
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



CREATE OR REPLACE PROCEDURE ADJDK.ADD_BOARD(IN_VAR IN VARCHAR2)
IS
BEGIN
    --BEGIN
        UPDATE BOARDTABLE
        SET B_TITLE = B_TITLE || IN_VAR
        WHERE B_NUM = 1;
    COMMIT;
END ADD_BOARD;
/

EXEC ADD_BOARD('1');



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.





CREATE OR REPLACE PROCEDURE ADJDK.TEST10(V_SU IN NUMBER) --선언문(매개변수)
IS
    IN_SU NUMBER(3) NOT NULL := 1;
    NOT_ONE_ERROR EXCEPTION; --에러를 정의합니다.
BEGIN
    DBMS_OUTPUT.PUT_LINE(IN_SU);
    FOR cnt IN (SELECT * FROM BOARDTABLE ORDER BY B_DATE ASC) LOOP    --FOR문을 조건은 쿼리입니다.
        DBMS_OUTPUT.PUT_LINE('현재 값은'||cnt.B_NUM||'입니다.');
    END LOOP;
   
    --cnt는 변수 IN 시작값..끝나는 값입니다.(밑에 매개변수대로 하면 1부터 3까지합니다.)
    FOR cnt IN 1..V_SU LOOP                                           --FOR문을 도는 조건은 NUMBER형 변수입니다.
        DBMS_OUTPUT.PUT_LINE('현재값은 '||cnt||'입니다.(LOOP)');
    END LOOP;
   
    EXCEPTION  --에러 시작
        WHEN NOT_ONE_ERROR THEN --해당 에러라면 밑에 구문처리합니다.
            DBMS_OUTPUT.PUT_LINE('입력한 숫자는 1이 아닙니다.');
        WHEN OTHERS THEN  --다른 에러라면 밑에 구문을 처리합니다.
            DBMS_OUTPUT.PUT_LINE('예외발생');
   
END TEST10; --프로시저 마침
/

EXEC TEST10(3); --실행구문

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



CREATE OR REPLACE PROCEDURE ADJDK.TEST10(V_SU IN NUMBER) --선언문(매개변수)
IS
    IN_SU NUMBER(3) NOT NULL := 1;
    NOT_ONE_ERROR EXCEPTION; --에러를 정의합니다.
BEGIN
    DBMS_OUTPUT.PUT_LINE(IN_SU);
    WHILE IN_SU <= V_SU LOOP    --WHILE문을 도는 조건입니다.
        DBMS_OUTPUT.PUT_LINE('현재 값은'||IN_SU||'입니다.');
        IN_SU := IN_SU + 1;     --IN_SU를 +1씩 해줍니다.
        EXIT WHEN IN_SU > V_SU; --해당 조건이면 while문을 탈출합니다.
    END LOOP;
   
    IN_SU := 1;
    LOOP
        DBMS_OUTPUT.PUT_LINE('현재값은 '||IN_SU||'입니다.(LOOP)');
        IN_SU := IN_SU + 1;     --IN_SU를 +1씩 해줍니다.
        EXIT WHEN IN_SU > V_SU; --해당 조건이면 while문을 탈출합니다.
    END LOOP;
   
    EXCEPTION  --에러 시작
        WHEN NOT_ONE_ERROR THEN --해당 에러라면 밑에 구문처리합니다.
            DBMS_OUTPUT.PUT_LINE('입력한 숫자는 1이 아닙니다.');
        WHEN OTHERS THEN  --다른 에러라면 밑에 구문을 처리합니다.
            DBMS_OUTPUT.PUT_LINE('예외발생');
   
END TEST10; --프로시저 마침
/

EXEC TEST10(3); --실행구문

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



CREATE OR REPLACE PROCEDURE TEST10(V_SU IN NUMBER) --선언문(매개변수)
IS
    NOT_ONE_ERROR EXCEPTION; --에러를 정의합니다.
BEGIN
    --DMBS_OUTPUT.DISABLE;
   
    IF V_SU = 1 THEN DBMS_OUTPUT.PUT_LINE('입력수는 1입니다.');
    ELSE RAISE NOT_ONE_ERROR; --에러로 넘어갑니다.
    END IF;
   
    EXCEPTION  --에러 시작
        WHEN NOT_ONE_ERROR THEN --해당 에러라면 밑에 구문처리합니다.
            DBMS_OUTPUT.PUT_LINE('입력한 숫자는 1이 아닙니다.');
        WHEN OTHERS THEN  --다른 에러라면 밑에 구문을 처리합니다.
            DBMS_OUTPUT.PUT_LINE('예외발생');
   
END TEST10; --프로시저 마침
/

exec TEST10(2); --실행구

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

//테스트용 테이블생성

CREATE TABLE testTable(
    NUM NUMBER PRIMARY KEY,
    NAME VARCHAR2(30) NOT NULL
);

 

select * from testTable

 

INSERT INTO testTable VALUES(2, 'test2')

 

//밑에 있는 함수 호출

SELECT numadd() FROM DUAL

 

//함수 구문 (into를 이용해서 쿼리에 있는 것을 변수에 넣었습니다

CREATE OR REPLACE FUNCTION numAdd
RETURN NUMBER IS //NUMBER형식 리턴
MAXNUM testTable.NUM%TYPE; //testTable의 NUM칼럼 형식 변수
F_NUM NUMBER(4);                 //숫자4자리
F_NAME VARCHAR(30);            //문자 30(한글2, 영어1)
CURSOR C1                          //커서를 넣습니다. 넣는 기준은 밑에 쿼리이고, F_NUM, F_NAME형식입니다.
IS
    SELECT NUM, NAME INTO F_NUM, F_NAME FROM testTable;

BEGIN
    SELECT NULLIF(MAX(NUM)+1, 1) INTO MAXNUM FROM testTable;  //NULLIF( MYSQL 에서는 IFNULL입니다.)
    
    DBMS_OUTPUT.PUT_LINE(MAXNUM||'check'); //문자열
    OPEN C1; //CURSOR 사용준비
    LOOP  //돌립니다.
        FETCH C1 INTO F_NUM, F_NAME; //1개씩 가져옵니다 각각 F_NUM, F_NAME에 넣습니다.
        EXIT WHEN C1%NOTFOUND;  //나오는 조건은 C1을 찾을수 없으면 나옵니다.
        DBMS_OUTPUT.PUT_LINE(F_NUM || F_NAME||'dasdfasdf');
    END LOOP;  //루프문의 끝입니다.
    return MAXNUM;  //리턴
END numAdd;  //함수끝
/

 

---------------------------------------------------------------------- 

//해당 쪽에 문자열을 붙여주는 프로시저

CREATE OR REPLACE PROCEDURE testA

IS
BEGIN
    UPDATE testTable
    SET name = name || '2';

COMMIT;

END testA;
/

 

//프로시저 호출하기

EXECUTE testA();

 

----------------------------------------------------------------------

//dbms_output.put_line주석 보여주기

SET SERVEROUTPUT ON;

 

//간단한 block

begin
    dbms_output.put_line('확인');
end;
/

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

cd tomcat/bin/ 이동하면 tomcat 실행 파일이 존재합니다.
./shutdown.sh <== tomcat엔진 중지
./startup.sh <== tomcat엔진 시작

 

 

리눅스의 tomcat에서 로그를 확인할일이 생겼네요

 

tomcat\logs

이동해주세요

 

tail -f catalina.out

또는 해당하는 .log롤

tail -f ***.log

와 같은방법으로 열면됩니다

 

빠져나오기는 ctrl + c  입니다.

'Linux' 카테고리의 다른 글

Linux Centos 인터넷 연결  (0) 2019.04.06
Linux Centos 설치하기  (0) 2019.04.06
Linux Centos 다운로드  (0) 2019.04.06
Linux 기초 명령어  (0) 2017.06.10
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안녕하세요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
    window.onload = function(){
    
        window.open("http://jdkblog.tistory.com","프로그래밍 블로그","width=400,height=500");
        //window.open("URL주소","제목","옵션이 들어갈곳");
 
        //옵션
 
        //- fullscreen = 전체 창. (yes/no)(default : no) 
        //- location = 주소창이 활성화. (yes/no)(default : yes) 
        //- menubar = 메뉴바 visible. (yes/no)(default : yes) 
        //- titlebar = 타이틀바. (yes/no)(default : yes) 
        //- toolbar = 툴바. (yes/no)(default : yes) 
        //- resizable = 창 사이즈 변경. (yes/no)(default : yes) 
        //- scrollbars = 스크롤바. (yes/no)(default : yes) 
        //- width = 창 가로 크기 
        //- height = 창 세로 크기 
    }
</script>
cs

 

감사합니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안녕하세요.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script>
    window.onload = function(){
    //EX)필요한 것을 가져다가 붙여넣어서 사용하면 됩니다. ㅎㅎ
 
    alert("필요한 값 : "+document.body.clientWidth);
    // 가로길이
    //document.body.offsetWidth 
    //document.body.scrollWidth // (문서 전체의 크기)
    //document.body.clientWidth // (창의 크기)
    // 세로길이
    //document.body.offsetHeight
    //document.body.scrollHeight //(문서 전체의 크기)
    //document.body.clientHeight // (창의 크기)
 
    /* HTML5 표준이 정해져 있다. */
    // 가로 길이
    //window.innerWidth // 브라우저 윈도우 두께를 제외한 실질적 가로 길이
    //window.outerWidth // 브라우저 윈도우 두께를 포함한 브라우저 전체 가로 길이
    //세로길이
    //window.innerHeight // 브라우저 윈도우 두께를 제외한 실질적 세로 길이
    //window.outerHeight // 브라우저 윈도우 두께를 포함한 브라우저 전체 세로 길이
 
    }
</script>
cs

 

감사합니다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안녕하세요.

 

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
<!-- jquery를 불러옵니다. jquery.com download 페이지를 참조해주세요 -->
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
 
<script>
  $(document).ready(function() {
    $('#favorite').on('click'function(e) {
        var bookmarkURL = window.location.href;
        var bookmarkTitle = document.title;
        var triggerDefault = false;
 
        if (window.sidebar && window.sidebar.addPanel) {
            // Firefox version < 23
            window.sidebar.addPanel(bookmarkTitle, bookmarkURL, '');
        } else if ((window.sidebar && (navigator.userAgent.toLowerCase().indexOf('firefox'> -1)) || (window.opera && window.print)) {
            // Firefox version >= 23 and Opera Hotlist
            var $this = $(this);
            $this.attr('href', bookmarkURL);
            $this.attr('title', bookmarkTitle);
            $this.attr('rel''sidebar');
            $this.off(e);
            triggerDefault = true;
        } else if (window.external && ('AddFavorite' in window.external)) {
            // IE Favorite
            window.external.AddFavorite(bookmarkURL, bookmarkTitle);
        } else {
            // WebKit - Safari/Chrome
            alert((navigator.userAgent.toLowerCase().indexOf('mac'!= -1 ? 'Cmd' : 'Ctrl'+ '+D 키를 눌러 즐겨찾기에 등록하실 수 있습니다.');
        }
 
        return triggerDefault;
    });
});
</script>
 
<a href="#" id="favorite" title="즐겨찾기 등록">즐겨찾기</a>
cs

 

감사합니다.

+ Recent posts