본문 바로가기

TIL

(92)
<트러블슈팅> DB 연동 시 쿼리문 오류 / html 내 js 실행안됨 1.DB 연동 시 쿼리문 오류 아래와 같은 회원 목록을 불러온 뒤, 오른쪽의 '삭제' 버튼을 클릭하면 삭제가 되어야 하는데 계속 삭제가 안되고 동일한 페이지로 나타났다. 처음엔 아래 코드 중 링크 부분에 의심이 갔다. 그도 그럴 것이 서블릿에서 서블릿으로 다시 전송한다고..? 그러니까 즉, '삭제'를 클릭하면 기존의 html 페이지에 있는 command 태그를 아래와 같이 삭제 메서드인 'delMember'로 값을 바꾸고, 삭제를 클릭한 회원 정보의 'id'를 받아와 for(int i=0;i
<자바 Java> 커넥션풀(ConnectionPool) - 기존 DB 연동 방법의 단점 웹 애플리케이션이 필요할 때마다 DB에 연결해야 한다면, 매 번 연결과정을 거치므로 이 경우 시간이 많이 걸릴 수 있다. 특히, 수백 명 이상이 동시에 접속하여 이용하는 규모가 큰 서비스의 경우는 더욱 이것이 단점으로서 부각된다. 따라서 이를 해결하여 빠른 속도로 DB에서 정보를 얻어와 서비스를 구동시킬 수 있는 방법으로 커넥션풀(ConnectionPool)을 이용할 수 있다. - 커넥션풀(ConnecionPool)이란? 기존 DB 연동방식은 웹 애플리케이션이 필요할 때마다, DB의 연결을 설정해두는 방식이었다. 하지만 이렇게 매 번 연결을 설정해두고 데이터를 가져와 작업을 처리할 필요는 없다. DB를 연결해야 하는 부분은 사용자들이 서비스를 이용할 때마다 계속해서 공통적..
<자바 Java> 메서드 - 메서드란? C언어에서는 함수이지만, 자바에서는 메서드로 사용된다. 즉, 함수와 비슷하다는 뜻. 이렇게 우리가 이미 알고 있는 함수라는 개념을 가지고 메서드를 처음 공부할 때 접근하면 이해가 훨씬 쉽다. 메서드는 자바에서 클래스 내에서 해당 객체의 상태를 나타내는 데이터를 가진 필드와 함께, 객체의 기능을 규정한다. 메서드는 특히 필드나 생성자에 비해 기능이 많은데, 필드나 생성자가 자바 프로그래밍에서 기본 뼈대라고 한다면, 메서드는 여러 기능을 가진만큼 그 중에서도 핵심적인 역할을 수행하는 뼈대라고 할 수 있겠다. - 메서드 구성 메서드는 크게 선언부와 실행 블록으로 나뉜다. 선언부는 메서드가 선언되는 첫 줄을 말하며, 실행 블록은 선언부 다음의 {} 기호 안의 영역을 말한다. 선언부의 형태는 다음과..
<자바 Java> DB 연동하기 (2) - DB 연동 준비하기 3. 커넥션(Connection) 객체 구해오기 2번까지 JDBC를 자바에서 이용 가능한 객체로 구현하였다면, 이제 JDBC를 통해 DB를 사용하기 위해 DB와 연결된되어있는 커넥션 객체를 구해야 한다. 그러니까 JDBC만으로 DB와 연결할 수 있는 것은 아닌 셈... 커넥션 객체는 java.sql.connection 클래스 타입이며, java.sql.DriverManger 클래스가 제공하는 getConnection() 메서드를 통해 구해올 수 있다. Connection con = null; conn = DriverManager.getConnection(url, id, pw); 이 때, 연결할 DB와 관련된 정보를 getConnection() 메서드에 매개변수로 함께 전달해주면, ..
<트러블 슈팅> 자바 JUnit 테스트 에러 - 에러 발생 자바에서 JUnit 테스트를 하던 중 에러가 발생했다. 회원가입 기능 구현을 위해 관련 클래스명들을 Member로 설정하고 뒤에는 각각 해당되는 역할로 네이밍을 하여 클래스 생성 및 코드 작성을 완료한 상태였다. - 에러 내용 이 중, DB와 연결하여 관련 기능을 수행하는 Repository의 경우 MemberRepository로 이름짓고, 코드는 아래와 같이 작성하였다. import org.apache.ibatis.annotations.Mapper; @Mapper public interface MemberRepository { //회원가입 public int setInsert(MemberVO memberVO) throws Exception; } 보시다시피 setInsert 메서드가 잘 구..
<자바 Java> 생성자 - 생성자란? 객체는 클래스를 필요로 한다. 어떠한 사물이 만들어지기 전에 설계도가 먼저 존재하고, 이 설계도를 바탕으로 사물이 만들어지듯, 객체도 설계도의 역할을 하는 클래스가 필요한 것이다. 그리고 클래스에는 객체의 성격과 기능을 정의하는 필드와 메서드가 존재한다. 여기서 필드는 보통 변수로 칭해지곤 하는데, 변수와 필드는 엄연히 다른 것이므로 이 둘을 구별해야 한다(같은 뜻의 명칭으로 사용하면 개념의 혼동이 올 수 있다). 그리고 필드와 메서드에 더해 추가로 또 주어지는 것이 바로 생성자인데, 생성자는 객체를 만들 때 꼭 필요한 것이다. 이름도 그 역할 그대로 그래서 '생성'자, 라고 이해하면 더 쉬울 것 같다. 객체를 만들 때에는 객체의 초기화가 꼭 필요한데, 여기서 초기화란 객체의 속성이나 상태..
<자바 Java> 서블릿(Servlet) 개발 환경 설정 - 서블릿이란? 웹의 등장으로 나타난 html이 정적 데이터 전달 도구로서의 형식이었다면, 서블릿은 자바 클래스의 일종으로서, 동적으로 서비스를 제공한다. 즉, 정적 데이터처럼 미리 만들어진 데이터를 일방적으로 요청한 사용자에게 전달하는 것이 아닌, 실시간 그리고 유동적으로 사용자의 요청에 따라 데이터를 전달하는 것을 동적 서비스를 제공한다고 말한다. 참고로 서블릿이란 단어는 Server와 Applet의 합성으로, '클라이언트에게 서비스를 제공하는 작은 단위의 서버 프로그램'을 뜻한다. 서블릿은 자바 속에서 태어났으므로 자바의 특징을 함께 공유한다. 서블릿은 다만 홀로 실행되지 못하기 때문에 톰캣과 같은 컨테이너를 필요로 한다(톰캣 컨테이너 안에서만 실행이 가능). - 서블릿 개발 환경 설정 과정 서블릿..
<자바 Java> I/O 스트림과 서블릿 - 스트림(Stream)이란? 스트림의 어원은 강의 물줄기를 뜻하는데, 즉 단일 방향으로 연속적으로 흘러가는 것을 말한다. 자바에서는 입력과 출력이라는 일련의 흐름이 이와 비슷하여 I(InputStream)/O(OutputStream) 스트림으로 이름을 붙인 듯 하다. 컴퓨터공학의 관점에서 데이터가 출발지에서 나와 도착지로 들어가는 형태가 이 물줄기와 비슷하기 때문이다. - I/O 스트림이란? 스트림의 종류는 두 가지다. 입력스트림(InputStream)과 출력스트림(OutputStream)이 그것이다. 프로그램이 데이터를 입력받을 때에는 입력스트림인 것이고, 데이터를 보낼 때에는 출력스트림인 것이다(일종의 동작 상태를 뜻한다). 우리가 가장 흔하게 접하는 예로는, 컴퓨터에 정보를 입력할 때 쓰는 키보드..
<자바 Java> 자바 기초 개념 (1) - 객체 지향, 변수, 메서드 - 객체 지향 언어(OOP : Object Oriented Programming) 자바는 객체 지향 언어다. 객체 지향이란? 현실 세계를 '객체' 중심으로 사고하고 파악하는 것이다. 객체(Object)란, 우리 주변에 있는 물질적이고 추상적인 그 무엇도 다 해당되는데, 하나의 사물을 뜻한다. 지금 내가 타이핑을 치고 있는 이 컴퓨터도 객체이며, 타이핑을 하고 있는 내 손도 하나의 객체가 될 수 있다. 객체 지향 언어란, 바로 이 객체가 중심이 되는 (컴퓨터)언어인 것이다. 그리고 현실 세계에서도 그렇듯이, 이 객체는 절대로 혼자서만 존재할 수가 없다. 절대적으로 객체는 서로 관계를 맺을 수밖에 없으며, 그래서 관계 안에서만 활동이 가능하다. 위의 예시에서의 컴퓨터는 활동하기 위해서 컴퓨터를 켜고 자판으로..
<자바 Java> DB 연동하기 (1) 자바에서 데이터베이스에 담긴 데이터를 가져오기 위해서는 데이터베이스 즉, DB와의 연결을 필요로 한다. 그런데 자바가 DB와 바로 연결되는 것이 아니라, 이 사이에 다른 매개체가 끼게 되는게 그것이 바로 JDBC(Jave Database Connectivity)다. - JDBC란? 자바에서 DB와 관련된 작업을 처리할 때 사용하는 API(인터페이스)다. 즉, 자바에서 제공되는 API다. JDBC API는(이하 JDBC) DB에서 데이터를 가져올 수 있게 JDBC 드라이버를 통해 DB와 연결되는데, 이 드라이버는 각 DB 종류에 따라 맞는 드라이버를 사용해야 하므로, 사용하는 DB 공식 홈페이지를 통해 제공되는 해당 DB의 JDBC 드라이버를 받아와야 한다. 구조 : 자바 애플리케이션 -> JDBC API..