프로젝트를 톰캣 서버를 사용하여 run할 때, 기본 경로는 web.xml내에 welcome file로 지정되어 있는 파일이다. 지금까지는 그냥 index.jsp나 index.html 을 생성해서 default 값을 사용했다. 하지만, mvc model2 패턴을 사용하여 프로젝트를 구성한다면 index.jsp 또한 ActionFactory를 사용하여 마찬가지로 index.html에서 Controller에게 요청하여 index.jsp 로 이동하게끔 구성하는 방법도 있다. 이 방법을 사용하면, 물론 설계 초반에 좀 더 손이 가겠지만, index.jsp 파일을 url 직접적으로 노출시키지 않고 또한 header나 footer를 고정시킨 상태에서 그 내부 컨텐츠를 좀 더 쉽게 변경할 수 있다는 장점이 있다. 방법..
저번 포스팅에서 multipart/form-data를 form 태그에 사용하여 DB에 파일을 저장하는 방법을 이야기했었다면, 이번 포스팅에서는 DB에 저장된 파일 이름과 경로를 가지고 사용자가 태그를 클릭했을 때, 해당 파일을 다운로드할 수 있게끔 해주는 방법을 작성해보도록 하겠다. 우선 DB는 file객체의 이름과 절대 경로를 가지고 있고, 첨부파일을 가지고 있는 페이지로 넘어오는 과정에서 controller가 이미 fileName과 경로를 response했다고 가정한다. (파일의 절대 경로는 어차피 사용하지 않지만, 혹시 몰라서...) 다음으로 파일의 경로는 프로젝트의 WebContent/files 내에 있다. 우선 다음과 같이 태그를 작성했다. 첨부파일: ${requestScope.dto.getFi..
직전에 포스팅한 Action 객체를 이용하여 프로젝트를 구성하는 MVC패턴을 사용한 예제이다. 예제 프로젝트는 게시글을 등록할 때, 비밀번호를 같이 기입하고, 해당 비밀번호를 기억하고 있어야만 게시글의 수정과 삭제가 가능한 간단한 게시판을 구현한다. 완성 페이지의 모습은 이와 같다. 프로젝트는 다음과 같이 구성된다. 1. request로 command 값을 받아서 어떤 기능을 처리할 지 판단하는 Controller 1) 요청을 받은 1개의 유일한 Servlet 2) 요청받은 command를 확인하고, 이에 따른 기능 객체를 생성하는 Factory 2. 실질적인 기능을 수행하는 일반 Class 집합, Actions 1) request, response 인자를 받는 execute 메서드를 구현한 Action..
굉장히 오랜만에 포스팅을 하는 거 같다. 세미프로젝트를 준비하느라 바쁘기도 했고, 정신적으로도 좀 많이 힘들어서 여유가 생기질 않았다. 아무튼, 이번 포스팅은 MVC 패턴에 대한 포스팅이다. 그 동안 나는 MVC 패턴이 JSP => Servlet => DAO or DTO(VO) 순으로 request에 따라 실행되는 것으로만 알고, 프로젝트도 이러한 기법으로 진행하고 있었지만, 실은 그게 아니었다... 정확히는 위 과정이 맞긴하나, 이렇게 프로젝트를 구성하다보면 이와 같이 Controller가 미쳐 날뛰는 경우가 생긴다...(이런 관점에선 이 프로젝트는 이미 글러먹었다...ㅎ) 이 경우는 Servlet이 너무 많아서 애초에 코딩을 하기가 좀 빡세기 때문에 Servlet을 나누는 것이 아닌, Action이라..
이번 포스팅은 웹 프로젝트를 만들 때, 특정 페이지에서 사용자가 서버로 파일을 업로드할 수 있게끔 View단을 구성하고, 이를 Server에서 처리할 수 있도록 하는 로직을 어떻게 구현해야 하는 지 알아보겠다. 우선, 기본적으로 input 태그를 사용하여 사용자가 사용자의 pc에서 파일을 선택할 수 있게끔 할 수 있다. 이 input 태그를 처리할 server가 정상적으로 file 객체를 다루게 할 수 있도록 하기 위해서는 다음과 같이 form 태그를 구성하여 encoding type을 지정해야 한다. 일반적으로는 request를 통해서 form 태그 내의 속성들을 얻어낼 수 있지만, 위와 같이 enctype="multipart/form-data" 로 지정하여 전송했을 경우 일반적인 방법으로는 reque..
지금까지 공부한 JSP, Servlet, DAO, DTO와 약간의 Javascript를 섞어서 모두 활용해보는 예제를 진행하려고 한다. 간단하게 구현해볼 기능은 다음과 같다. 1. 로그인 페이지에서 로그인, 회원가입 페이지로 이동 가능 2. 회원 가입 페이지에서 아이디의 중복을 확인하고, 비밀번호 & 비밀번호 확인이 일치하는 지 확인하여 회원 가입 진행 3. 회원 가입을 완료하면, 로그인 페이지에 방금 회원가입한 id가 입력된 상태로 이동된다. 4. 로그인을 수행하여 메인 페이지로 진입 가능 사용할 DB 테이블 모든 DB 조작 메서드는 DAO가 가지고 있으며, 위 테이블의 모든 속성을 변수로 갖는 DTO를 단 하나 사용하여 구성하였다. 각각의 기능을 수행할 Servlet의 구성 1. IdCheckServ..
이전 포스팅에서 Servlet의 간단한 개념과, DAO & DTO를 각각 어떻게 작성하는 지 알아봤으니, 이제 간단한 예제를 풀어 활용해보자. 예제는 이전에 구성했던 예제 코드를 각 기능별로, 1. View = JSP 2. Controller = Servlet 3. DataBase = DAO & DTO 위와 같이 나누어 좀 더 체계적으로 구현된 웹 프로젝트로 재구성하여 작성하였다. 우선, 구현할 기능과 데이터의 흐름은 다음과 같다. 1. UserInfoInitForm.jsp: 해당 페이지는 다음과 같은 기능을 수행한다. 1) 이름을 입력 받아 동일한 이름의 회원 정보 검색 (=> UserInfoViewer.jsp) 2) 회원가입 버튼을 눌러 회원가입 페이지로 이동 (=> UserInfoJoinForm.j..
DTO? DTO는 직전 포스팅에서도 언급했듯, 데이터베이스 레코드의 데이터를 맵핑하여 인스턴스로 사용하기 위해 존재하는 객체이다. 즉, 폼 필드의 이름을 그대로 가지고 있는 자바빈 객체를 맵핑하여 JSP가 사용할 수 있게끔 할 수 있도록 하는 객체. 이러한 객체를 DTO(Data Tranfer Object) 혹은 VO(Value Object) 패턴이라고 한다. DTO를 생성할 시 주의 사항: 1. JSP에서 사용하는 파라미터의 속성명 2. DTO 클래스의 멤버 변수명 3. 데이터베이스의 테이블 속성명 위 3가지가 모두 동일한 이름이여야 비즈니스 계층에서 쉽게 꺼내 사용할 수 있다. ◎DTO 객체 예시 코드 package com.choonham.dto; public class GoodsDTO { priva..
JSP나 Servlet을 사용하여 프로젝트를 진행할 때, 모든 객체를 전부 JSP에서 선언하여 사용하면 데이터를 따라가기 힘들 뿐더러 비효율적이다. 그래서 주로 사용하는 방식이 Java source 폴더에 원하는 데이터를 가지고 있는 객체를 생성하여 이를 모아두고, 데이터베이스에서 가져온 정보를 해당 객체에 저장하여 사용하는 방식이다. 이 때, DB 에서 꺼내온 데이터를 가질 객체들의 집합을 DTO(Data Transfer Object)라고 한다. 이번 포스팅에서는 이 DTO 를 어떻게 활용할 수 있는 지 알아보려고 한다. 간단하게, 저장된 정보를 가지고 있다가, 검색 내용이 들어오면 해당하는 데이터를 목록으로 내보내고, 목록을 클릭하면 상세 정보가 보이는 정도의 기능을 가지고 있는 도서 검색을 구현하여..
JSP(사용자) -> Servlet(서버) 간 데이터 전송은 이전에 다뤘던 JSP -> JSP 간 데이터 통신과 별반 다를 게 없다. form태그의 action속성 경로가 맵핑해놓은 url 주소 값이라는 것만 주의하면 거의 동일하다고 봐도 된다. ◎MethodServlet.java package unit02; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; ..
- redux
- Promise
- await
- Async
- AsyncStorage
- 이탈리안 레스토랑
- 인천 구월동 이탈리안 맛집
- 정보보안기사 #실기 #정리
- react-native
- 인천 구월동 맛집
- react
- javascript
- redux-thunk
- 파니노구스토
- 맛집
- Total
- Today
- Yesterday