'백엔드 언어'에 해당되는 글 33건

  1. 2017.08.02 페이징 처리 원칙
  2. 2017.06.21 전략, IOC, DI 패턴
  3. 2017.06.21 JSP 파일 업로드 및 다운로드
  4. 2017.06.21 JSP 메일 발송하기
  5. 2017.06.21 LOG4J
  6. 2017.06.21 JSP MyBatis
  7. 2017.06.21 Restful API
  8. 2017.06.20 홍쓰넷 JSP 무료 호스팅
  9. 2017.06.20 JSP DB연동 테스트
  10. 2017.06.19 DAO(Data Access Object) 패턴
백엔드 언어2017. 8. 2. 11:24
1. 페이징 처리는 다른사람에게 URL로 전달하는 경우가 많기 때문에, GET방식만을 이용해서 처리한다.

2. 목록페이지에서 3페이지를 보다가 특정 게시물을 보았다면 다시 3페이지 목록을 갈 수 있어야 한다.

3. 검색같은 다른 기능과 함께 쓰일때는 1페이지로 가야한다.

'백엔드 언어' 카테고리의 다른 글

전략, IOC, DI 패턴  (0) 2017.06.21
JSP 파일 업로드 및 다운로드  (0) 2017.06.21
JSP 메일 발송하기  (0) 2017.06.21
LOG4J  (0) 2017.06.21
JSP MyBatis  (0) 2017.06.21
Posted by EL2A
백엔드 언어2017. 6. 21. 20:21

1. 전략패턴

public class CarDAO {
    private DBConnection dbConnection = new DBConnection();

    public List selectSUVData() {
        Connection conn = DBConnection.getConnection();
        // 자동차 정보 쿼리
        return list;
    }
}

public class DBConnection {
    public Conneciton getConnection() {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("" +"jdbc:mysql://localhost/testDB","id","pwd");
        return conn;
    }
}

위와 같은 코드는 DBConnection 클래스의 getConnection() 메소드에는 MYSQL에 대한 Connection을 얻는 코드가 있습니다.
만약 DB를 바꾸며 하는 작업이라면 매번 getConnection() 메소드의 내용을 수정해줘야 하고 매우 비효율적입니다.

그래서 CarDAO 부분의 DBConnection 부분을 수정해 보았습니다.



DBConnection dbConnection = new DBConnection() 

↓↓변경↓↓

MySqlDBConnection dbConnection = new MySqlDBConnection; // MySql 사용시
OracleDBConnection dbConnection = new OracleDBConnection; // Oracle 사용시



하지만 위와 같이 매번 변경을 해주는것은 매우 번거롭습니다.
이를 해결하기 위한 방법으로 자바에는 인터페이스가 있습니다.

DBConnection 이라는 인터페이스를 정의하고, 나머지 MySQLDBConnection, OracleDBConnection 등의 클래스를 DBConnection 인터페이스를 상속한 클래스로 만드는 것입니다.
그리고 DBConnection 구현체는 DAO 코드내에서 생성하지 않고, 생성자나 메소드의 파라미터를 통해 전달받으면 매우 유연한 코드가 됩니다.



아래는 변경된 코드 입니다.

public class CarDAO {
    private DBConnection dbConnection;

    public setDbConnection(DBConnection dbConnection) {
        this.dbConnection = dbConnection;
}

    public List selectSUVData() {
        Connection conn = dbConnection.getConnection();
        // 자동차 정보 쿼리
        return list;
    }
}

이 방식이 전략패턴 입니다.
DBConnection 인터페이스를 변수로 선언했기 때문에, 저 변수에는 setDbConnection() 메소드를 이용하여 MySQLDBConnection, OracleDBConnection 등 다른 클래스가 올 수 있습니다.

상황에 따라 구현 클래스를 바꿔 끼워가며 (전략을 바꾸듯이) 사용할 수 있습니다.




2. IOC 패턴

IOC란 Inversion Of Control의 약자로, 제어의 역전 이라는 뜻을 가지고 있습니다.

일반적인 프로그램은 자신이 사용할 오브젝트를 직접 선택하고, 생성합니다. 
변경전의 DAO에서 보셨듯이 DAO는 자신이 사용할 Connection 클래스를 직접 선택하고, 생성했습니다. ex) new MySqlDBConnection();

오브젝트의 대한 제어권을 자신이 가지고 있는, 능동적인 상태인 것이죠.

하지만 마지막에 전략패턴을 적용시키고, 변화에 유연한 코드를 만들면서 우리는 DAO를 수동적인 상태로 변환시켰습니다.

이때까진 필요한 오브젝트를 직접 만들다가, 이젠 남이 만들어준걸 전달받게 되죠.

오브젝트에 대한 제어가 역전 되었죠?

제어의 역전이란 말 그대로 제어권을 역전 시키는 것으로써,

제 3자에게 오브젝트에 대한 제어권을 넘겨주고, 자신은 제 3자가 선택하고 생성한 오브젝트를 받아서 사용하는 수동적인 상태가 되는 것을 말합니다.

public class DaoFactory {
    public CarDAO carDAO() {
        CarDAO carDao = new CarDAO();
        carDao.setDbConnection(getConnection());

        return carDao;
    }

    public DBConnection getConnection() {
        return new MySqlDBConnection_real(); // 변경되는 부분
    }
}

위와 같은 코드를 보면 MySqlDBConnection_real() 함수가 실행되어진 객체를 setDbConnection() 함수를 이용하여 데이터베이스를 선택 해줍니다.

DaoFactory 클래스 코드만 수정하면 데이터베이스 접속부분을 쉽게 변경할 수 있습니다.

이렇게 제어권을 제 3자가 제어하게끔 제어의 역전이 IOC입니다.




3. DI 패턴

DI란 Dependency Injection의 약자로, 의존관계 주입 이라는 의미를 가지고 있습니다.

의존관계란 별다른 뜻이 없습니다. 말 그대로 오브젝트가 서로 의존하고 있는 관계를 말합니다.

객체지향에서 의존하고 있다란 의미는, 하나의 오브젝트에서 다른 오브젝트를 사용할 때를 말합니다.

A라는 클래스에서 B라는 클래스를 사용할 경우, A클래스는 B클래스에 의존하고 있다 라고 표현합니다.

( 의존하고 있기 때문에 B클래스의 변경은 A클래스에 영향을 미칩니다.)



B클래스를 생성해서 A클래스에 넣어주는 과정, 이를 의존관계 주입이라고 보시면 됩니다.

의존관계에 있는 오브젝트를 생성해서 주입 해준다고 보시면 되는거죠.

주입은 누가 해주느냐? 제 3자가 해줍니다. IOC의 개념이네요.

결국 DI는 IOC의 세부적인 개념입니다!

carDao.setDbConnection(dBConnection());

위 코드가 바로 DI 패턴입니다.

CarDAO는 DBConnection 인터페이스에 의존하고, getConnection 메서드는 의존체인 DBConnection을 생성해줍니다.

그리고 제 3자인 DaoFactory가 CarDAO가 의존하는 DBConnection을 생성하고, setter를 통해 넣어줍니다.

이것이 마치 제 3자가 메서드를 통해 주입해주는 것과 같다고 해서 이를 의존관계 주입이라고 부릅니다.




=> 1자 2자 3자가 있다고 할 때, 1자가 2자에게 직접적으로 의존하는게 아니라 3자(조립기)가 2자의 객체를 생성하여 1자에게 넣어주는 것이다.

이렇게 하면 1자는 3자가 만들어준 2자의 객체에 의존하게 된다.

'백엔드 언어' 카테고리의 다른 글

페이징 처리 원칙  (0) 2017.08.02
JSP 파일 업로드 및 다운로드  (0) 2017.06.21
JSP 메일 발송하기  (0) 2017.06.21
LOG4J  (0) 2017.06.21
JSP MyBatis  (0) 2017.06.21
Posted by EL2A
백엔드 언어2017. 6. 21. 20:17


파일 업로드는 외부 라이브러리 도움을 받아야 한다.



업로드

1. 파일업로드 및 파일 입출력 처리 jar 파일을 다운로드 및 프로젝트에 넣는다.

2. 기본적인 공통 기능들을 묶어놓은 클래스에 random 메소드를 추가한다.

3. 파일정보 beans를 만든다.

4. 파일을 업로드 한다.

5. 업로드를 위한 환경을 설정한다.

6. 파일 및 텍스트 파라미터를 받는다.

7. 파일 형식의 데이터를 처리한다.

※ 필요한 경우 다중 업로드를 위한 multiple 추가



다운로드

1. 다운로드 처리를 위한 경로를 파라미터로 받는 jsp를 작성한다.

2. 다운로드에 필요한 파일의 정보를 추출한다.

3. 다운로드 처리를 위한 스트림 객체를 생성한다.

4. 파일을 읽고 출력 스트림을 비운다.

5. 다운로드에 필요한 파일 형식 정보를 설정한다.

6. 파일의 다운로드 기능 추가

'백엔드 언어' 카테고리의 다른 글

페이징 처리 원칙  (0) 2017.08.02
전략, IOC, DI 패턴  (0) 2017.06.21
JSP 메일 발송하기  (0) 2017.06.21
LOG4J  (0) 2017.06.21
JSP MyBatis  (0) 2017.06.21
Posted by EL2A
백엔드 언어2017. 6. 21. 20:16


SMTP란?

웹 프로그램을 구동시키는 웹 서버는 메일 발송 기능이 없기 때문에 스스로 메일 발송이 불가능하다.
메일 발송 기능을 담당하는 서버를 SMTP (Simple Mail Transfer Protocol) 서버라고 한다.



메일 발송 과정

1. 메일의 수신자 및 메일정보 등 내용을 입력하고 발송한다.
2. 입력값을 SMTP서버로 전달하고, SMTP는 해당 메일을 수신자에게 발송한다.



사용방법

1. Mail.jar 파일을 다운받아 프로젝트에 포함시킨다.

2. HTML 발송정보 form을 만든다.

3. 인증정보를 저장하는 클래스를 만든다.

4. 발송을 담당하는 jsp를 작성한다.
-> 입력값 받기
-> 발송정보 구성
-> 메일 발송
-> 클래스 객체 생성
-> 메일서버 인증 객체 생성
-> 메일의 내용을 담는 객체 생성
-> 객체에 보내는주소, 받는주소, 제목 및 내용 설정
-> 발송

5. 발송한 메일 확인

'백엔드 언어' 카테고리의 다른 글

전략, IOC, DI 패턴  (0) 2017.06.21
JSP 파일 업로드 및 다운로드  (0) 2017.06.21
LOG4J  (0) 2017.06.21
JSP MyBatis  (0) 2017.06.21
Restful API  (0) 2017.06.21
Posted by EL2A
백엔드 언어2017. 6. 21. 20:14

log4j란?
Log For Java의 줄임말.
개발자가 로그를 다양하게 쓸 수 있도록 도와주는 라이브러리


- 사용방법

1. 라이브러리를 다운받고 프로젝트에 포함

2. log4j 설정을 위한 폴더 및 파일 추가 및 파일 수정

3. 추가한 파일을 import 하고 log4j 객체 생성 및 로그 기록

4. 로그 출력결과 확인

'백엔드 언어' 카테고리의 다른 글

JSP 파일 업로드 및 다운로드  (0) 2017.06.21
JSP 메일 발송하기  (0) 2017.06.21
JSP MyBatis  (0) 2017.06.21
Restful API  (0) 2017.06.21
홍쓰넷 JSP 무료 호스팅  (0) 2017.06.20
Posted by EL2A
백엔드 언어2017. 6. 21. 20:13

Mybatis란?

자바의 관계형 데이터베이스 프로그래밍을 더 쉽게 할 수 있도록 도와주는 프레임워크
Mybatis는 JDBC를 보다 편리하게 사용하기 위해 개발 되었다.


- 사용법
1. Mybatis jar 파일 다운로드 및 include

2. config.xml
-> Model 클래스 정의
-> 데이터베이스 접속정보 정의
-> DataMapper XML의 경로 정의

3. MybatisConnectionFactory.java
-> 데이터베이스의 접속 객체를 리턴하기 위한 클래스 정의

4. Beans에 기본 생성자 추가

5. DataMapper
-> 데이터 CRUD 기능의 정의

6. JSP 파일에서 Mybatis 기반의 DAO 기능 활용

'백엔드 언어' 카테고리의 다른 글

JSP 메일 발송하기  (0) 2017.06.21
LOG4J  (0) 2017.06.21
Restful API  (0) 2017.06.21
홍쓰넷 JSP 무료 호스팅  (0) 2017.06.20
JSP DB연동 테스트  (0) 2017.06.20
Posted by EL2A
백엔드 언어2017. 6. 21. 20:13

EST(Representational State Transfer) 란?

최근 활용되는 REST는 HTTP와 XML(혹은 JSON)을 이용하여 데이터를 주고 받는 웹 서비스가 주류이다.
이렇게 구현된 API는 AJAX나 Android, IOS 등에서 데이터를 요청하기 위한 서버로서의 역할을 한다.


HTTP의 데이터 전송방식

GET, POST, PUT, DELETE 총 4가지 방식이 있다.
POST : INSERT
GET : SELECT
PUT : UPDATE
DELETE : DELETE

위의 기능 만으로는 복합적인 동작의 표현에 한계가 있기 때문에 최근에는 GET 또는 POST방식만을 사용하고, CRUD는 각각 독립적인 URL로 구분하는 형태를 많이 사용한다.


AJAX를 활용하여 비동기 방식으로 데이터베이스를 CRUD 할 수 있다.

'백엔드 언어' 카테고리의 다른 글

LOG4J  (0) 2017.06.21
JSP MyBatis  (0) 2017.06.21
홍쓰넷 JSP 무료 호스팅  (0) 2017.06.20
JSP DB연동 테스트  (0) 2017.06.20
DAO(Data Access Object) 패턴  (0) 2017.06.19
Posted by EL2A
백엔드 언어2017. 6. 20. 20:34

JSP 서버 호스팅 설치


http://www.hongsnet.net/






톰캣을 시작하기 위한 SSH 접속방법


http://www.hongsnet.net/board_main.html?page=1&find=&key=&hongsbbs_id=1100&dc=&hongsbbsmode=read&head_key=&TB_id=5&service_kind=




톰캣 시작 방법


http://www.hongsnet.net/board_main.html?page=1&find=&key=&hongsbbs_id=1100&dc=&hongsbbsmode=read&head_key=&TB_id=11&service_kind=

'백엔드 언어' 카테고리의 다른 글

JSP MyBatis  (0) 2017.06.21
Restful API  (0) 2017.06.21
JSP DB연동 테스트  (0) 2017.06.20
DAO(Data Access Object) 패턴  (0) 2017.06.19
다형성(Polymorphism)  (0) 2017.06.19
Posted by EL2A
백엔드 언어2017. 6. 20. 20:33

1. MYSQL JDBC 다운로드 : http://dev.mysql.com/downloads/connector/j/

밑에서 Platform Independent (Architecture Independent), ZIP Archive 다운로드!


2. 압축풀고 mysql-connector-java-5.1.38-bin 파일을 

C:\Program Files\Apache Software Foundation\Tomcat 8.0\lib 이곳에 넣는다.



3. DB에서 테이블을 간단하게 만든다



CREATE DATABASE TEST;

USE TEST;

CREATE TABLE PERSON
(PID INT(4) PRIMARY KEY,
NAME VARCHAR(10)
);

INSERT INTO PERSON VALUE(0001, 'SEOKHO');
INSERT INTO PERSON VALUE(0002, 'ILWOO');
INSERT INTO PERSON VALUE(0003, 'JAEDO');
INSERT INTO PERSON VALUE(0004, 'JAEOK');
INSERT INTO PERSON VALUE(0005, 'HYEWON');







4. JSP 소스 작성



<%@ page contentType = "text/html; charset=utf-8" %>

<%@ page import = "java.sql.*" %>

<%

String URL = "jdbc:mysql://localhost/test"; // test는 데이터베이스명

String USER = "root"; // 아이디

String PASS= "admin123"; // 비밀번호


Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

 

try

{

  Class.forName("org.gjt.mm.mysql.Driver"); // 없어도 실행됨

  conn = DriverManager.getConnection(URL, USER, PASS); // DB접속 정보를 conn에 입력

  stmt = conn.createStatement(); // DB에 SQL문을 보내기 위해 개체를 만듬

  rs = stmt.executeQuery( "select * from person" ); //DB에 접속하여 쿼리문을 넣고 결과값을 rs에 받음

  while( rs.next() ) // 만약 rs에 결과값이 있다면

  {

    String pid = rs.getString("pid"); // pid에 rs의 "pid" 값을 넣는다.

    String name = rs.getString("name"); // name에 rs의 "name" 값을 넣는다.

    

    out.print( " 일련번호 : " + pid + "<br>" + "이름 : " + name + "<br><br>" );  } // 출력

}

catch(SQLException e) // 예외의 경우

{

  out.print( e.getMessage() );

}


%>






끝. 결과물 실행해서 확인

'백엔드 언어' 카테고리의 다른 글

Restful API  (0) 2017.06.21
홍쓰넷 JSP 무료 호스팅  (0) 2017.06.20
DAO(Data Access Object) 패턴  (0) 2017.06.19
다형성(Polymorphism)  (0) 2017.06.19
자바 웹 개발자의 학습 로드맵  (0) 2017.06.18
Posted by EL2A
백엔드 언어2017. 6. 19. 22:00

DAO 패턴은 표준 J2EE 디자인 패턴 중 하나로써 다음과 같은 요소들이 있다.

1. 자바빈즈 (DTO) - Department
2. DAO 인터페이스 - DepartmentDao
3. DAO 인터페이스를 구현하는 클래스 - DepartmentDaoImpl
4. 데이터 전송 객체

이 패턴을 사용하면 저 수준의 데이터 엑세스와 고급 비즈니스 로직을 분리할 수 있다.

DAO 패턴 작성 과정
1. 처리할 데이터가 저장되기 위한 데이터베이스 테이블의 구조를 JavaBeans 로 표현한다.
2. 데이터의 입력, 수정, 삭제, 조회 (다중조회) 의 기능을 명시한 Interface를 정의한다.
3. Interface를 상속받는 구현체를 작성하고 메서드들을 오버라이딩 한다.
4. 재정의 된 메서드의 기능을 구현한다.



상세 과정


1. 자바빈즈 만들기
-> 자바빈즈의 필드와 메소드 (getter, setter) 그리고 객체의 값을 표시하기 위한 toString() 메소드를 만든다.

2. 인터페이스 DAO 만들기
-> DAO가 구현해야 하는 기능을 정의한다.
-> Insert, update, delete, select, selectAll 등

3. DAO 인터페이스를 상속받아서 구현체를 만든다.
-> 데이터베이스 접속객체를 만들고 생성자를 통해서 데이터 베이스 접속객체를 전달받는다.
-> DAO에서 정의된 메소드들을 각 기능에 맞게 오버라이딩 한다.
-> 조회기능
--> (한개의 데이터) SELECT 문을 실행하고 결과값을 빈즈객체로 만들어 리턴한다.
--> (다수의 데이터) SELECT 문의 결과값을 반복문을 이용하여 전부 객체로 만든 후 컬렉션 프레임워크의 ArrayList에 담아 리턴한다.

4. DAO를 사용하는 프로그램을 만든다.
-> ex) Department model = new Department(1, '자원관리부', '3층'); // INSERT를 수행할 데이터 생성
-> ex) DepartmentDao dao = new DepartmentImpl(conn); // 다형성을 통하여 동작을 지정한다.
-> ex) int result = dao.insert(model); // 데이터를 저장한다.
-> ex) 데이터 저장 완료.

'백엔드 언어' 카테고리의 다른 글

홍쓰넷 JSP 무료 호스팅  (0) 2017.06.20
JSP DB연동 테스트  (0) 2017.06.20
다형성(Polymorphism)  (0) 2017.06.19
자바 웹 개발자의 학습 로드맵  (0) 2017.06.18
템플릿 언더바 기본 (Template Underscore)  (0) 2017.03.24
Posted by EL2A