전체 글 목록보기 기능에 이어 글 작성 기능을 구현할 것입니다. 글 작성 기능은 글 수정 기능과 매우 유사하기 때문에 작성 기능만 완료하면 수정 기능도 금방 만들 수 있습니다. 글 작성 구현 Controller case "/write.do": viewPage = "write.jsp"; break; case "/writeOk.do": command = new WriteCommand(); command.execute(request, response); viewPage = "writeOk.jsp"; break; Controller 부분의 write.do와 writeOk.do 부분에는 위와 같이 작성합니다. write.do에서는 form 부분만 작성하고, form에서 입력받은 데이터를 데이터베이스에 저장하는 것..
Controller 작성 Controller 작성은 게시판의 기능을 모두 만들어야 하므로 할 일이 많은 부분입니다. 우선 만들어볼 게시판 기본 기능은 아래와 같습니다. 1. 전체 도서 목록 보기 (== 전체 글 목록 보기) 2. 선택한 글 한 개 읽기 (글 상세 보기) 3. 글 작성 4. 글 수정 5. 글 삭제 전체 도서 목록은 list.do로 요청받을 것이고, 글 한 개 읽기는 view.do로 요청받습니다. 글 작성은 write.do로 요청받는데, 글을 작성하는 페이지와 작성한 글을 데이터베이스에 저장하기 위해 넘어가는 페이지가 필요하므로 writeOk.do도 생성합니다. 글 수정 update도 write와 유사합니다. 글 삭제는 글 작성, 글 수정과는 달리 따로 데이터를 입력하는 폼이 필요하지 않으므..
MVC2 패턴을 사용할 것이므로 우선 DTO와 DAO를 생성해주겠습니다. MVC2 패턴은 JSP에서 모든 것을 하는 MVC1 패턴과는 달리 Servlet에서 웹 브라우저가 요청하는 것을 처리하므로 유지보수가 쉽고, 코드 가독성도 좋습니다. DTO와 DAO는 MVC에서 M(Model) 부분에 해당합니다. 프로그램의 데이터 부분에 속합니다. DTO (Data Transfer Object) 생성 DAO 등과 연동하여 데이터를 실어나르는 객체로, 필요한 객체 (entity)만큼 작성합니다. VO(Volumne Object)라고도 하는데, VO는 read only/immutable 속성을 가집니다. 웹 개발 시 클래스 필드명, DB 필드명, form의 name명은 일치시켜 주어야 편리합니다. src/main/ja..
서블릿(Servlet) 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스 독자적으로 실행되지 못하고 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다. 스레드 방식으로 실행되고, 컨테이너 종류에 상관없이 실행되므로 플랫폼 독립적이다. 멀티 스레드 방식이기 때문에 여러 사용자에 의해 호출될 수 있다. 서블릿의 인스턴스는 재활용 가능하므로 한 번만 생성되면 된다. 서블릿 동작 과정 클라이언트가 웹 서버에 요청을 한다. 웹 서버는 클라이언트로부터 받은 요청을 웹 애플리케이션 서버(WAS)에 위임하고, 웹 애플리케이션 서버는 요청에 해당하는 서블릿을 실행한다. 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환(서블릿 → 웹 애플리케이션 서버 → 웹 서버)하여 클라이언..
웹 애플리케이션 기존의 정적인 웹 애플리케이션의 기능을 그대로 사용하면서 예시로 서블릿(Servlet), JSP, 자바 클래스들을 추가하여 사용자에게 동적인 서비스를 제공하는 서버 프로그램을 말한다. 웹 애플리케이션은 보통 정해진 형식이 있으므로 서비스를 제공할 때도 형식에 맞게 만들어서 제공해야 한다. 또한 웹 애플리케이션은 단독으로 실행할 수 없기 때문에 톰캣과 같은 웹 컨테이너에서 실행되는 구조이다. 컨테이너에서 실행되는 모든 웹 애플리케이션은 웹 애플리케이션의 이름으로 이루어진 루트 디렉터리와 하위 디렉터리 구조를 기본 구조로 가진다. 웹 애플리케이션 기본 구조 웹 애플리케이션 이름 └ WEB-INF └ classes └ lib └ web.xml 위와 같은 구조를 갖추지 않고 컨테이너에서 웹 애플..
본격적으로 게시판을 만들기 전 게시판에 필요한 테이블을 먼저 생성해보겠습니다. SQL 문을 따로 관리하기 위해 프로젝트 내에 ERD 폴더를 만든 뒤, 폴더 내에 ddl.sql이라는 파일을 생성하였습니다. 처음에 sql 파일을 생성할 때 위의 데이터베이스 그림 옆에 가 떠 있습니다. 를 클릭하면 DBeaver로 연결했던 데이터베이스가 뜹니다. 사용할 데이터베이스를 클릭하고 Select를 누르면 연결이 완료됩니다. 아까와 다르게 boards가 떠 있는 것을 확인할 수 있습니다. 테이블 생성 DROP TABLE IF EXISTS book CASCADE; CREATE TABLE book( bk_uid int PRIMARY KEY auto_increment , bk_title varchar(20) NOT NULL..
DBeaver를 사용하면 웹 개발 시 sql 파일을 사용할 때 간단하게 데이터베이스 연결이 가능합니다. 약간 신세계였습니다. DBeaver 설치 이클립스 상단의 메뉴바에서 Help - Eclipse Marketplace에 들어간 뒤 검색어에 dbeaver를 검색합니다. 검색 뒤 아래로 내리다 보면 현재 기준(2021-12-07) DBeaver 21.3.0이 있습니다. 이것을 Install 합니다. 여러 가지를 선택할 수 있는데 기본적인 DBeaver IDE만을 선택하고 Confirm 하겠습니다. accept를 선택해주고 Finish 합니다. 그러면 이클립스 오른쪽 하단에 Installing Sofrware가 뜹니다. 설치가 완료될 때까지 기다립니다. 중간에 Security Warning이 뜨는 경우가 있..
자바는 JDK 11 버전으로 설치되어있다 가정합니다. JDK 11 설치 및 환경 변수 설정하기 (Click) Java JDK 11 버전 설치 및 환경 변수 설정 벌써 JDK 17 버전까지 나왔네요.. JDK 11 다운로드 오라클 사이트에서 다운로드합니다. 오라클에서 다운로드하기 위해서는 회원가입이 필수이니 계정이 없으시면 만들어주셔야 합니다. https://www.ora mimah.tistory.com IDE : Eclipse IDE for Enterprise Java and Web Developers 웹 개발을 위한 이클립스 설치 (Click) 웹 개발을 위한 이클립스(Eclipse) 설치 Eclipse 다운로드 https://www.eclipse.org/downloads/ 위 홈페이지에 들어가 Don..
Eclipse 다운로드 https://www.eclipse.org/downloads/ 위 홈페이지에 들어가 Donwload Packages를 클릭합니다. 웹 개발을 할 것이므로 위 이클립스를 다운로드합니다. 오른쪽, 자신의 운영체제에 맞는 것을 클릭합니다. File : eclipse-jee-2021-09-R-win32-x86_64.zip를 클릭하여 바로 다운로드해도 되지만 조금 더 빠른 다운로드를 하려면 Select Another Mirror를 클릭하여 한국 꺼를 클릭하면 됩니다. 저는 보통 Kakao로 진행합니다 😎 압축 파일 다운로드가 끝나면 원하는 위치에 압축을 해제하면 됩니다. 압축 해제가 완료되면 폴더 내에 다음과 같은 파일들이 있습니다. 편의상 exe 파일은 바로가기를 만들어 사용하시면 됩니다..
벌써 JDK 17 버전까지 나왔네요.. Open JDK (+ 추가) 오라클 JDK 는 로그인이 필요하기 때문에 open jdk를 다운로드 받아도 됩니다. Java Platform, Standard Edition 11 Reference Implementations Java Platform, Standard Edition 11 Reference Implementations Java Platform, Standard Edition 11 Reference Implementations The official Reference Implementation for Java SE 11 (JSR 384) is based solely upon open-source code available from the JDK 11 Pr..
throws 메서드 설계 시 예외 처리를 직접 하지 않는 경우에 사용한다. 메서드 이름 뒤에 throws Exception을 추가하면, 메서드에서 예외가 발생했을 때 메서드를 호출한 곳으로 exception이 던져진다. Exception 및 이를 직접 상속받은 Exception을 throws 하는 메서드의 경우 이 메서드를 호출하는 쪽에서 반드시 예외 처리(handling)를 해야 한다. 하지 않는 경우 에러가 발생한다. 이와 달리 RuntimeException 및 이를 상속받은 예외를 throws 하는 메서드는 호출하는 쪽에서 매번 예외 처리를 하지 않아도 된다. Exception 또는 RuntimeException 클래스를 상속 받아서 직접 Exception 클래스를 만들어 사용할 수 있다. 💻 예제..
예외 (Exception) 예외는 컴파일 에러와는 다르다. 컴파일 에러는 문법 상의 오류이지만 예외는 문법 상 오류가 아닌 실행 중에 발생되는 오류 상황을 일컫는다. 일반적으로는 예외가 발생하는 경우에 예외 관련 메시지를 출력하고 프로그램을 종료한다. 예외 예시 ArithmeticException 0으로 나누었을 때 발생하는 예외이다. ClassCastException 타입 변환(Casting)은 상위 클래스와 하위 클래스 간 또는 구현 클래스와 인터페이스 간에서 발생한다. 두 클래스가 위와 같은 관계가 아닌 상황에서 타입 변환을 시도하는 경우 발생하는 예외이다. ArrayIndexOutBoundsException 배열 사용 시, 배열 사이즈를 벗어난 인덱스에 접근하는 경우 발생하는 예외이다. Negat..