회원가입과 같이 mail을 보낼 경우 사용할 수 있다.

 

구글에서 제공하는 API를 사용해보겠다.

 

 

  • java에서 제공하는 dependency를 등록한다.
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.5.0-b01</version>
		</dependency>
  • 우선 구글로 접속하여 로그인한 뒤 google계정 탭으로 이동한다.

  • 보안 탭을 열어 2단계 인증 및 앱 비밀번호를 설정한다.

  • 앱 비밀번호를 이용하여 아래의 코드를 따라서 작성하고, 원하는 제목, 내용을 기입하여 보낼 수 있다!
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailService {
	String host = "smtp.gmail.com";
	String user = "나의계정@gmail.com";
	String password = "앱비밀번호";
	Properties props = new Properties();
	
	public void send() {
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.port", 465);
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.ssl.enable", "true");
		props.put("mail.smtp.ssl.trust", "smtp.gmail.com");

		Session session = Session.getDefaultInstance(props, new Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
	               return new PasswordAuthentication(user, password);
	            }	
		});
		
		try {
			
			MimeMessage message = new MimeMessage(session);
			message.setFrom(new InternetAddress(user));
			message.addRecipient(Message.RecipientType.TO, new InternetAddress("받는사람이메일"));
			message.setSubject("보낼제목");
			message.setContent("<h1>this is</h1> content", "text/html;charset=utf-8");
			
			Transport.send(message);
			System.out.println("Success Message Send");
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		new MailService().send();
	}
}
[출처] Java Mail HTM형식으로 보내기|작성자 원리파고

'프로그래밍 > Java' 카테고리의 다른 글

java - 암호화  (0) 2021.01.06
싱글톤 패턴 알아보기  (0) 2020.12.14
JavaFX - 개발환경 구축 및 생명주기  (0) 2020.11.23
Java - JSON & XML 파싱  (0) 2020.11.17
Java - 소켓프로그래밍 기초 Echo System  (0) 2020.11.09

JDBC란?

자바에서는 데이터베이스 연동하는 기술을 가리켜 JDBC(Java DataBase Connectiviy)라고 하며,

Java.sql 패키지에서 API가 지원된다!

연동 절차

1) DB기종에 알맞는 드라이버를 로드 (oracle용, mysql용, mssql용.. 각각 jar가 필요)
2) 접속
3) 원하는 쿼리 수행
4) 접속해제 (특히, 스트림 및 DB는 사용 후 반드시 해제하자!!!)

1) DB기종에 알맞는 드라이버를 로드 (oracle용, mysql용, mssql용.. 각각 jar가 필요)

- 오라클일 경우

오라클을 설치한 폴더로 찾아가 .jar파일을 가져온다

ex) oracle\product\11.2.0\server\jdbc\lib

 

자신의 java 버전에 따라 가져와서 사용한다! (나는 6을 사용했다)

jar파일을 사용하고 있는 프로젝트의 추가를 해준다!

 

- MySQL(MariaDB)일 경우

MavenRepository에 들어가서 jdbc를 검색하여 .jar파일로 다운받는다!

그 다음은 , 오라클과 다를게 없다~

 

이제 코드로 가서, Class.forName() 메소드를 이용하여 드라이버를 로드한다!

Class.forName("oracle.jdbc.driver.OracleDriver");//오라클의 경우
Class.forName("com.mysql.cj.jdbc.Driver");//MySQL의 경우

2) 접속

DriverManger(DBMS에 접속하여 Connection 인스턴스받아주는 클래스)를 이용하여 Conncection(접속된 데이터베이스의 정보를 가지고 있는 인터페이스) 인터페이스의 인스턴스를 반환받자!

Connection con=null;	
 			//jdbc:DBMS기종:방식:ip주소:포트번호:기기의 DBMS설치명
String url="jdbc:oracle:thin:@localhost:1521:XE"; //Oracle 경우
			//jdbc:DBMS기종:ip주소:(포트번호):database명
String url = "jdbc:mysql://localhost:/exdatabase"; //MySQL 경우
String user="";
String password="";
con=DriverManager.getConnection(url, user, password); //접속시도!!

3) 원하는 쿼리 실행

- SELECT의 경우

PreparedStatement pstmt; // 쿼리문 수행 객체, 인터페이스이므로 new로 생성하는 것이 아니라
// 접속객체인 Connection 객체로부터 인스턴스를 얻올 수 있다.
ResultSet rs;// select 쿼리문 수행결과에 의해 표가 반환되는데, 이떄 이 표를 담는 객체
String sql = "select * from emp";

pstmt = con.prepareStatement(sql); // Connection객체로부터 PerparedStatement인스턴스얻기
rs = pstmt.executeQuery();// select문의 경우엔 executeQuery() 이용해야한다..
//rs에는 표가 들어있다!! 따라서 원하는 레코드로 커서를 옮기자!!
            
while(rs.next()) { //데이터가 존재하면, 한칸 전진 후 true까지 반환
	rs.getString("컬럼명"); //테이블의 컬럼명을 통해 가져올 수 있다
    rs.getInt("컬럼명2") //반환받는 데이터의 자료형에 따라 메서드가 다르다!
}

- INSERT, UPDATE, DELETE의 경우

  • INSERT의 경우의 성공 시 1, 실패 시 0 
  • UPDATE, DELETE의 경우엔 성공 시 UPDATE, DELETE된 행들의 수만큼, 실패 시 0
PreparedStatement pstmt; // 쿼리문 수행 객체, 인터페이스이므로 new로 생성하는 것이 아니라
// 접속객체인 Connection 객체로부터 인스턴스를 얻올 수 있다.
ResultSet rs;// select 쿼리문 수행결과에 의해 표가 반환되는데, 이떄 이 표를 담는 객체
String sql = "select * from emp";

pstmt = con.prepareStatement(sql); // Connection객체로부터 PerparedStatement인스턴스얻기
int result = pstmt.executeUpdate();//DML(insert, update, delete) 쿼리 실행 시 이 메서드(executeUpdate())를 사용함
if(result!=1){
System.out.println("insert 실패");
}else{
System.out.println("insert 성공");
}

4) 접속해제 (특히, 스트림 및 DB는 사용 후 반드시 해제하자!!!) 

if(rs!=null) {
  try {
    	rs.close();
    	System.out.println("rs 연결해제");
  	} catch (SQLException e1) {
    	e1.printStackTrace();
  	}
  }
if(pstmt!=null) {
  try {
    	pstmt.close();
    	System.out.println("pstmt 연결해제");
    } catch (SQLException e1) {
    	e1.printStackTrace();
    }
  }
if(con!=null) {
	try {
  	con.close();
  	System.out.println("con 연결해제");
  } catch (SQLException e1) {
 	 e1.printStackTrace();
  }
}

원하는 쿼리 실행한 뒤에, 반드시 !!!! 접속을 해제시켜줘야한다!! 

Database Server는 동시에 연결가능한 횟수에 제한을 두고 있기 때문에 사용하지 않을 때는 닫아야 한다!!

'프로그래밍 > Java' 카테고리의 다른 글

java - mail 보내기  (0) 2021.01.06
싱글톤 패턴 알아보기  (0) 2020.12.14
JavaFX - 개발환경 구축 및 생명주기  (0) 2020.11.23
Java - JSON & XML 파싱  (0) 2020.11.17
Java - 소켓프로그래밍 기초 Echo System  (0) 2020.11.09

+ Recent posts