java

Web/Spring

[Spring] JDBC, JDBC Template 예제

Spring JDBC, JDBC Template 예제 요즘에는 보통 MyBatis나 JPA를 이용해서 개발하지만 옛날에는 JDBC로 개발했던 적이 있었다. JDBC는 JSP로 웹 개발할 때 사용해서 익숙하지만 JDBC Template는 처음 보는 것이어서 두 개의 예제를 비교해본다. JDBC import hello.hellospring.domain.Member; import org.springframework.jdbc.datasource.DataSourceUtils; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql..

Web/Spring

[Spring Boot] @AfterEach, @BeforeEach 예제

Test case 작성 스프링 부트에서는 테스트 메서드 작성 시 메서드 앞에 @Test 어노테이션을 명시한다. 각각의 테스트 메서드는 독립적으로 실행되어야 한다. 테스트는 각 테스트끼리의 순서가 관계없어야 하고, 의존 관계가 없어야 한다. 따라서 하나의 테스트가 끝날 때마다 공용 데이터들을 깔끔하게 지워야 한다. 이를 위해 @BeforeEach와 @AfterEach 어노테이션을 사용한다. 테스트 메서드 작성 시 메서드 명은 한글로 작성해도 상관없다. 빌드 시 실제 코드에 포함되지 않기 때문이다. @SpringBootTest 스프링 부트를 사용해 Test 한다는 것을 명시한다. 데이터베이스 정보를 스프링에서 가지고 있을 때 사용한다. 해당 어노테이션이 붙으면 스프링 컨테이너와 테스트를 함께 실행한다. @T..

Daily/TIL

[TIL] 2022.01.27 - JSP, Serlvet, Spring

음~ 오늘도 다 아는 내용~ 하지만 서블릿 재밌어~... 하다가! 갑자기 어려운 내용 쏟아져버리기 아파치와 톰캣 예전에 아파치는 정적 페이지였고 이후 톰캣이 동적 페이지를 만들었다. 나중에 아파치가 톰캣을 인수해서 아파치/톰캣이 되었다. 그래서 동적 페이지를 말할 땐 아파치/톰캣이라 한다. 즉 두 개를 같이 붙여서 말하는 게 동적 페이지라는 뜻. 그냥 아파치라고만 부르면 그건 정적 페이지를 뜻하는 것이다. 참고로 정적 페이지는 단순 Web Server라 하고, 동적 페이지는 Web Application Server라 한다. 추상화 공통된 것들을 추려 기능과 구현의 역할을 나누는 것이다. 예를 들어 인터페이스에는 DB 접속에 연결하기 위한 방법과 정보 등을 작성하고, 이를 구현하는 클래스에서 직접적인 기능..

Web/게시판 만들기

[JSP] 게시판 만들기 07 - 글 삭제 구현

글 삭제 구현 지금까지 만든 게시판은 보안 요소가 전혀 없는 게시판이었습니다. 그래서 글 삭제 부분도 보안 요소는 없습니다(?) 글 삭제는 DELETE 쿼리만 실행하면 되기 때문에 엄청나게 간단합니다. Controller case "/deleteOk.do": command = new DeleteCommand(); command.execute(request, response); viewPage = "deleteOk.jsp"; break; } 삭제 기능은 write나 update 같은 입력 폼이 필요하지 않으므로 deleteOk.do 만 사용합니다. DeleteCommand package com.command; import java.sql.SQLException; import javax.servlet.htt..

Web/게시판 만들기

[JSP] 게시판 만들기 06 - 글 수정 구현

글 수정 구현 하나둘씩 기능을 만들어갈수록 새로 구현하는 기능들이 처음부터 끝까지 다 다른 내용이 아니라, 기존에 구현한 내용들과 어느 정도 유사성을 가진다는 것을 알 수 있습니다. 어떻게 보면 수정 시 필요한 jsp 파일들은 view.jsp와 write.jsp, writeOk.jsp를 섞어놓은 것이라고 볼 수 있습니다. BookController case "/update.do": command = new SelectCommand(); command.execute(request, response); viewPage = "update.jsp"; break; case "/updateOk.do": command = new UpdateCommand(); command.execute(request, respons..

Web/게시판 만들기

[JSP] 게시판 만들기 05 - 글 읽기와 조회수 증가 구현

글 읽기와 조회수 증가 구현 list.do에 있는 목록 중 하나를 클릭 시 해당 글을 상세 보기 하는 기능을 만듭니다. 이때 글을 클릭해서 볼 때마다 조회수도 1 증가시킵니다. 조회수 증가라함은 거창하게 보일 수도 있지만 사실 UPDATE문 하나만 사용하면 됩니다. 😏 view를 위한 SELECT문과 조회수 증가를 위한 UPDATE 문 각각 한 개씩 필요하게 됩니다. Controller case "/view.do": command = new ViewCommand(); command.execute(request, response); viewPage = "view.jsp"; break; ViewCommand package com.command; import java.sql.SQLException; impor..

Programing Language/Java

PreparedStatement - Connection.prepareStatement()

공식 문서 참조 https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html PreparedStatement (Java Platform SE 7 ) Sets the designated parameter to SQL NULL. This version of the method setNull should be used for user-defined types and REF type parameters. Examples of user-defined types include: STRUCT, DISTINCT, JAVA_OBJECT, and named array types. Note: To be portable, docs.oracle.com 데이..

Web/게시판 만들기

[JSP] 게시판 만들기 04 - 글쓰기 구현

전체 글 목록보기 기능에 이어 글 작성 기능을 구현할 것입니다. 글 작성 기능은 글 수정 기능과 매우 유사하기 때문에 작성 기능만 완료하면 수정 기능도 금방 만들 수 있습니다. 글 작성 구현 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에서 입력받은 데이터를 데이터베이스에 저장하는 것..

Web/게시판 만들기

[JSP] 게시판 만들기 03 - 전체 글 목록 구현

Controller 작성 Controller 작성은 게시판의 기능을 모두 만들어야 하므로 할 일이 많은 부분입니다. 우선 만들어볼 게시판 기본 기능은 아래와 같습니다. 1. 전체 도서 목록 보기 (== 전체 글 목록 보기) 2. 선택한 글 한 개 읽기 (글 상세 보기) 3. 글 작성 4. 글 수정 5. 글 삭제 전체 도서 목록은 list.do로 요청받을 것이고, 글 한 개 읽기는 view.do로 요청받습니다. 글 작성은 write.do로 요청받는데, 글을 작성하는 페이지와 작성한 글을 데이터베이스에 저장하기 위해 넘어가는 페이지가 필요하므로 writeOk.do도 생성합니다. 글 수정 update도 write와 유사합니다. 글 삭제는 글 작성, 글 수정과는 달리 따로 데이터를 입력하는 폼이 필요하지 않으므..

Web/게시판 만들기

[JSP] 게시판 만들기 02 - DTO와 DAO, Controller 생성

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..

Programing Language/Java

[Java] 서블릿 (Servlet)

서블릿(Servlet) 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스 독자적으로 실행되지 못하고 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다. 스레드 방식으로 실행되고, 컨테이너 종류에 상관없이 실행되므로 플랫폼 독립적이다. 멀티 스레드 방식이기 때문에 여러 사용자에 의해 호출될 수 있다. 서블릿의 인스턴스는 재활용 가능하므로 한 번만 생성되면 된다. 서블릿 동작 과정 클라이언트가 웹 서버에 요청을 한다. 웹 서버는 클라이언트로부터 받은 요청을 웹 애플리케이션 서버(WAS)에 위임하고, 웹 애플리케이션 서버는 요청에 해당하는 서블릿을 실행한다. 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환(서블릿 → 웹 애플리케이션 서버 → 웹 서버)하여 클라이언..

Web/게시판 만들기

[JSP] 게시판 만들기 01 - 테이블 생성 및 JUnit을 사용해 데이터 추가

본격적으로 게시판을 만들기 전 게시판에 필요한 테이블을 먼저 생성해보겠습니다. 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..

밈아
'java' 태그의 글 목록 (3 Page)