From 867e493e9655fecad56c68658f41a27d92eba77c Mon Sep 17 00:00:00 2001 From: yeonnseok Date: Thu, 5 Nov 2020 00:21:33 +0900 Subject: [PATCH 01/10] =?UTF-8?q?docs:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8d65fd7ef..cdd99d780 100644 --- a/README.md +++ b/README.md @@ -7,13 +7,14 @@ - [x] 지금까지 구현한 소스 코드는 stylesheet 파일을 지원하지 못하고 있다. Stylesheet 파일을 지원하도록 구현하도록 한다. - [x] “로그인” 메뉴 클릭하면 /user/login.html 으로 이동해 로그인할 수 있다. 로그인이 성공 시 index.html로 이동, 로그인이 실패 시 /user/login_failed.html로 이동한다. - [x] 로그인이 성공하면 cookie를 활용해 로그인 상태를 유지 한다. 로그인이 성공 시 요청 header의 Cookie 값이 logined=true, 로그인이 실패하면 Cookie 값이 logined=false로 전달되어야 한다. -- [ ] 사용자가 “로그인” 상태일 경우 /user/list 로 접근했을 때 사용자 목록을 출력한다. 만약 로그인하지 않은 상태라면 로그인 페이지로 이동한다. -- [ ] 동적으로 html을 생성하기 위해 handlebars.java template engine을 활용한다. -- [ ] 서블릿에서 지원하는 HttpSession API의 일부를 지원 한다. - - [ ] String getId() : 현재 세션에 할당되어 있는 고유한 세션 아이디를 반환 - - [ ] void setAttribute(String name, Object value) : 현재 세션에 value 인자로 전달되는 객체를 name 인자 이름으로 저장 - - [ ] Object getAttribute(String name) : 현재 세션에 name 인자로 저장되어 있는 객체 값을 찾아 반환 - - [ ] void removeAttribute(String name) : 현재 세션에 name 인자로 저장되어 있는 객체 값을 삭제 - - [ ] void invalidate() : 현재 세션에 저장되어 있는 모든 값을 삭제 -- [ ] 세션의 고유 아이디는 JDK에서 제공하는 UUID 클래스를 사용해 고유한 아이디를 활용한다. - - [ ] 세션 관리를 위한 자료구조는 Map을 사용하며, Map와 같은 구조가 된다. 이 때, 키는 UUID이다. +- [x] 사용자가 “로그인” 상태일 경우 /user/list 로 접근했을 때 사용자 목록을 출력한다. 만약 로그인하지 않은 상태라면 로그인 페이지로 이동한다. +- [x] 동적으로 html을 생성하기 위해 handlebars.java template engine을 활용한다. +- [x] 서블릿에서 지원하는 HttpSession API의 일부를 지원 한다. + - [x] String getId() : 현재 세션에 할당되어 있는 고유한 세션 아이디를 반환 + - [x] void setAttribute(String name, Object value) : 현재 세션에 value 인자로 전달되는 객체를 name 인자 이름으로 저장 + - [x] Object getAttribute(String name) : 현재 세션에 name 인자로 저장되어 있는 객체 값을 찾아 반환 + - [x] void removeAttribute(String name) : 현재 세션에 name 인자로 저장되어 있는 객체 값을 삭제 + - [x] void invalidate() : 현재 세션에 저장되어 있는 모든 값을 삭제 +- [x] 세션의 고유 아이디는 JDK에서 제공하는 UUID 클래스를 사용해 고유한 아이디를 활용한다. + - [x] 세션 관리를 위한 자료구조는 Map을 사용하며, Map와 같은 구조가 된다. 이 때, 키는 UUID이다. +- [ ] service application과 server/servlet부분을 멀티 모듈로 분리한다. \ No newline at end of file From 2243e0ffece3e9844b077ccbaf9e35bfa71b5a50 Mon Sep 17 00:00:00 2001 From: yeonnseok Date: Thu, 5 Nov 2020 02:32:46 +0900 Subject: [PATCH 02/10] =?UTF-8?q?refactor:=20=EB=A9=80=ED=8B=B0=EB=AA=A8?= =?UTF-8?q?=EB=93=88=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- service-app/build.gradle | 27 ++ .../src}/main/java/db/DataBase.java | 0 .../interfaces}/CreateUserController.java | 14 +- .../java/interfaces}/LoginController.java | 3 +- .../java/interfaces}/UserListController.java | 3 +- .../interfaces/urlmapper/UrlAppender.java | 28 ++ .../src}/main/resources/logback.xml | 0 .../resources/static/css/bootstrap.min.css | 0 .../src}/main/resources/static/css/styles.css | 0 .../fonts/glyphicons-halflings-regular.eot | 0 .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | 0 .../fonts/glyphicons-halflings-regular.woff | 0 .../fonts/glyphicons-halflings-regular.woff2 | 0 .../main/resources/static/images/80-text.png | Bin .../main/resources/static/js/bootstrap.min.js | 0 .../resources/static/js/jquery-2.2.0.min.js | 0 .../src}/main/resources/static/js/scripts.js | 0 .../src/main/resources/templates/favicon.ico | 0 .../src}/main/resources/templates/index.html | 10 +- .../main/resources/templates/qna/form.html | 0 .../main/resources/templates/qna/show.html | 0 .../main/resources/templates/user/form.html | 6 +- .../main/resources/templates/user/list.html | 6 +- .../main/resources/templates/user/login.html | 6 +- .../templates/user/login_failed.html | 6 +- .../resources/templates/user/profile.html | 6 +- .../interfaces}/CreateUserControllerTest.java | 3 +- .../java/interfaces}/LoginControllerTest.java | 3 +- .../interfaces}/UserListControllerTest.java | 3 +- .../src}/test/resources/Http_Create.txt | 0 .../src}/test/resources/Http_GET.txt | 0 .../src}/test/resources/Http_List.txt | 0 .../src}/test/resources/Http_Login.txt | 0 .../src}/test/resources/Http_POST2.txt | 0 settings.gradle | 11 + src/main/java/webserver/RequestMapping.java | 23 -- src/test/java/coordinate/AbstractFigure.java | 24 -- src/test/java/coordinate/Figure.java | 13 - src/test/java/coordinate/FigureCreator.java | 7 - src/test/java/coordinate/FigureFactory.java | 21 -- .../java/coordinate/FigureFactoryTest.java | 46 --- src/test/java/coordinate/Line.java | 24 -- src/test/java/coordinate/Point.java | 62 ---- src/test/java/coordinate/Rectangle.java | 24 -- src/test/java/coordinate/Triangle.java | 24 -- build.gradle => web-common/build.gradle | 0 .../src}/main/java/model/User.java | 8 - web-common/src/main/java/model/UserDto.java | 51 ++++ web-common/src/test/java/model/UserTest.java | 19 ++ web-common/src/test/resources/Http_Create.txt | 8 + web-common/src/test/resources/Http_GET.txt | 4 + web-common/src/test/resources/Http_List.txt | 5 + web-common/src/test/resources/Http_Login.txt | 9 + web-common/src/test/resources/Http_POST2.txt | 8 + web-server/build.gradle | 26 ++ .../main/java/exception/CustomException.java | 0 .../java/exception/CustomExceptionStatus.java | 0 .../src}/main/java/utils/FileIoUtils.java | 0 .../src}/main/java/utils/FormatUtils.java | 0 .../main/java/utils/HttpRequestUtils.java | 0 .../src}/main/java/utils/IOUtils.java | 0 .../src}/main/java/view/ModelAndView.java | 0 .../src}/main/java/view/View.java | 0 .../src}/main/java/web/StaticFile.java | 0 .../web/controller/AbstractController.java | 0 .../main/java/web/controller/Controller.java | 0 .../java/web/controller/ExceptionHandler.java | 0 .../src}/main/java/web/http/HttpCookie.java | 0 .../src}/main/java/web/http/HttpMethod.java | 0 .../src}/main/java/web/http/HttpRequest.java | 0 .../java/web/http/HttpRequestHeaders.java | 0 .../main/java/web/http/HttpRequestLine.java | 0 .../main/java/web/http/HttpRequestParams.java | 0 .../src}/main/java/web/http/HttpResponse.java | 0 .../java/web/http/HttpResponseHeader.java | 0 .../main/java/web/http/HttpResponseLine.java | 0 .../src}/main/java/web/http/HttpStatus.java | 0 .../src}/main/java/web/http/Protocol.java | 0 .../main/java/web/session/HttpSession.java | 0 .../src}/main/java/web/session/Session.java | 0 .../main/java/web/session/SessionStorage.java | 0 .../main/java/webserver/RequestHandler.java | 0 .../main/java/webserver/RequestMapping.java | 18 ++ .../src}/main/java/webserver/WebServer.java | 0 web-server/src/main/resources/logback.xml | 13 + .../resources/static/css/bootstrap.min.css | 5 + .../src/main/resources/static/css/styles.css | 203 ++++++++++++ .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 288 ++++++++++++++++++ .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../main/resources/static/images/80-text.png | Bin 0 -> 3478 bytes .../main/resources/static/js/bootstrap.min.js | 6 + .../resources/static/js/jquery-2.2.0.min.js | 4 + .../src/main/resources/static/js/scripts.js | 9 + .../src}/main/resources/templates/favicon.ico | Bin .../src/main/resources/templates/index.html | 148 +++++++++ .../main/resources/templates/qna/form.html | 104 +++++++ .../main/resources/templates/qna/show.html | 231 ++++++++++++++ .../main/resources/templates/user/form.html | 107 +++++++ .../main/resources/templates/user/list.html | 106 +++++++ .../main/resources/templates/user/login.html | 100 ++++++ .../templates/user/login_failed.html | 101 ++++++ .../resources/templates/user/profile.html | 104 +++++++ .../src}/test/java/utils/FileIoUtilsTest.java | 0 .../src}/test/java/utils/HandlebarsTest.java | 0 .../test/java/utils/HttpRequestUtilsTest.java | 0 .../src}/test/java/utils/IOUtilsTest.java | 0 .../src}/test/java/view/ViewTest.java | 0 .../src}/test/java/web/HttpMethodTest.java | 0 .../test/java/web/HttpRequestHeadersTest.java | 0 .../test/java/web/HttpRequestLineTest.java | 0 .../test/java/web/HttpRequestParamsTest.java | 0 .../src}/test/java/web/HttpRequestTest.java | 0 .../src}/test/java/web/HttpResponseTest.java | 0 .../test/java/webserver/ExecutorsTest.java | 0 web-server/src/test/resources/Http_Create.txt | 8 + web-server/src/test/resources/Http_GET.txt | 4 + web-server/src/test/resources/Http_List.txt | 5 + web-server/src/test/resources/Http_Login.txt | 9 + web-server/src/test/resources/Http_POST2.txt | 8 + 124 files changed, 1821 insertions(+), 304 deletions(-) create mode 100644 service-app/build.gradle rename {src => service-app/src}/main/java/db/DataBase.java (100%) rename {src/main/java/web/controller => service-app/src/main/java/interfaces}/CreateUserController.java (53%) rename {src/main/java/web/controller => service-app/src/main/java/interfaces}/LoginController.java (94%) rename {src/main/java/web/controller => service-app/src/main/java/interfaces}/UserListController.java (94%) create mode 100644 service-app/src/main/java/interfaces/urlmapper/UrlAppender.java rename {src => service-app/src}/main/resources/logback.xml (100%) rename {src => service-app/src}/main/resources/static/css/bootstrap.min.css (100%) rename {src => service-app/src}/main/resources/static/css/styles.css (100%) create mode 100644 service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.eot rename {src => service-app/src}/main/resources/static/fonts/glyphicons-halflings-regular.svg (100%) create mode 100644 service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf create mode 100644 service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.woff create mode 100644 service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 rename {src => service-app/src}/main/resources/static/images/80-text.png (100%) rename {src => service-app/src}/main/resources/static/js/bootstrap.min.js (100%) rename {src => service-app/src}/main/resources/static/js/jquery-2.2.0.min.js (100%) rename {src => service-app/src}/main/resources/static/js/scripts.js (100%) create mode 100644 service-app/src/main/resources/templates/favicon.ico rename {src => service-app/src}/main/resources/templates/index.html (91%) rename {src => service-app/src}/main/resources/templates/qna/form.html (100%) rename {src => service-app/src}/main/resources/templates/qna/show.html (100%) rename {src => service-app/src}/main/resources/templates/user/form.html (94%) rename {src => service-app/src}/main/resources/templates/user/list.html (93%) rename {src => service-app/src}/main/resources/templates/user/login.html (93%) rename {src => service-app/src}/main/resources/templates/user/login_failed.html (93%) rename {src => service-app/src}/main/resources/templates/user/profile.html (93%) rename {src/test/java/web/controller => service-app/src/test/java/interfaces}/CreateUserControllerTest.java (94%) rename {src/test/java/web/controller => service-app/src/test/java/interfaces}/LoginControllerTest.java (97%) rename {src/test/java/web/controller => service-app/src/test/java/interfaces}/UserListControllerTest.java (95%) rename {src => service-app/src}/test/resources/Http_Create.txt (100%) rename {src => service-app/src}/test/resources/Http_GET.txt (100%) rename {src => service-app/src}/test/resources/Http_List.txt (100%) rename {src => service-app/src}/test/resources/Http_Login.txt (100%) rename {src => service-app/src}/test/resources/Http_POST2.txt (100%) create mode 100644 settings.gradle delete mode 100644 src/main/java/webserver/RequestMapping.java delete mode 100644 src/test/java/coordinate/AbstractFigure.java delete mode 100644 src/test/java/coordinate/Figure.java delete mode 100644 src/test/java/coordinate/FigureCreator.java delete mode 100644 src/test/java/coordinate/FigureFactory.java delete mode 100644 src/test/java/coordinate/FigureFactoryTest.java delete mode 100644 src/test/java/coordinate/Line.java delete mode 100644 src/test/java/coordinate/Point.java delete mode 100644 src/test/java/coordinate/Rectangle.java delete mode 100644 src/test/java/coordinate/Triangle.java rename build.gradle => web-common/build.gradle (100%) rename {src => web-common/src}/main/java/model/User.java (74%) create mode 100644 web-common/src/main/java/model/UserDto.java create mode 100644 web-common/src/test/java/model/UserTest.java create mode 100644 web-common/src/test/resources/Http_Create.txt create mode 100644 web-common/src/test/resources/Http_GET.txt create mode 100644 web-common/src/test/resources/Http_List.txt create mode 100644 web-common/src/test/resources/Http_Login.txt create mode 100644 web-common/src/test/resources/Http_POST2.txt create mode 100644 web-server/build.gradle rename {src => web-server/src}/main/java/exception/CustomException.java (100%) rename {src => web-server/src}/main/java/exception/CustomExceptionStatus.java (100%) rename {src => web-server/src}/main/java/utils/FileIoUtils.java (100%) rename {src => web-server/src}/main/java/utils/FormatUtils.java (100%) rename {src => web-server/src}/main/java/utils/HttpRequestUtils.java (100%) rename {src => web-server/src}/main/java/utils/IOUtils.java (100%) rename {src => web-server/src}/main/java/view/ModelAndView.java (100%) rename {src => web-server/src}/main/java/view/View.java (100%) rename {src => web-server/src}/main/java/web/StaticFile.java (100%) rename {src => web-server/src}/main/java/web/controller/AbstractController.java (100%) rename {src => web-server/src}/main/java/web/controller/Controller.java (100%) rename {src => web-server/src}/main/java/web/controller/ExceptionHandler.java (100%) rename {src => web-server/src}/main/java/web/http/HttpCookie.java (100%) rename {src => web-server/src}/main/java/web/http/HttpMethod.java (100%) rename {src => web-server/src}/main/java/web/http/HttpRequest.java (100%) rename {src => web-server/src}/main/java/web/http/HttpRequestHeaders.java (100%) rename {src => web-server/src}/main/java/web/http/HttpRequestLine.java (100%) rename {src => web-server/src}/main/java/web/http/HttpRequestParams.java (100%) rename {src => web-server/src}/main/java/web/http/HttpResponse.java (100%) rename {src => web-server/src}/main/java/web/http/HttpResponseHeader.java (100%) rename {src => web-server/src}/main/java/web/http/HttpResponseLine.java (100%) rename {src => web-server/src}/main/java/web/http/HttpStatus.java (100%) rename {src => web-server/src}/main/java/web/http/Protocol.java (100%) rename {src => web-server/src}/main/java/web/session/HttpSession.java (100%) rename {src => web-server/src}/main/java/web/session/Session.java (100%) rename {src => web-server/src}/main/java/web/session/SessionStorage.java (100%) rename {src => web-server/src}/main/java/webserver/RequestHandler.java (100%) create mode 100644 web-server/src/main/java/webserver/RequestMapping.java rename {src => web-server/src}/main/java/webserver/WebServer.java (100%) create mode 100644 web-server/src/main/resources/logback.xml create mode 100644 web-server/src/main/resources/static/css/bootstrap.min.css create mode 100644 web-server/src/main/resources/static/css/styles.css rename {src => web-server/src}/main/resources/static/fonts/glyphicons-halflings-regular.eot (100%) create mode 100644 web-server/src/main/resources/static/fonts/glyphicons-halflings-regular.svg rename {src => web-server/src}/main/resources/static/fonts/glyphicons-halflings-regular.ttf (100%) rename {src => web-server/src}/main/resources/static/fonts/glyphicons-halflings-regular.woff (100%) rename {src => web-server/src}/main/resources/static/fonts/glyphicons-halflings-regular.woff2 (100%) create mode 100644 web-server/src/main/resources/static/images/80-text.png create mode 100644 web-server/src/main/resources/static/js/bootstrap.min.js create mode 100644 web-server/src/main/resources/static/js/jquery-2.2.0.min.js create mode 100644 web-server/src/main/resources/static/js/scripts.js rename {src => web-server/src}/main/resources/templates/favicon.ico (100%) create mode 100644 web-server/src/main/resources/templates/index.html create mode 100644 web-server/src/main/resources/templates/qna/form.html create mode 100644 web-server/src/main/resources/templates/qna/show.html create mode 100644 web-server/src/main/resources/templates/user/form.html create mode 100644 web-server/src/main/resources/templates/user/list.html create mode 100644 web-server/src/main/resources/templates/user/login.html create mode 100644 web-server/src/main/resources/templates/user/login_failed.html create mode 100644 web-server/src/main/resources/templates/user/profile.html rename {src => web-server/src}/test/java/utils/FileIoUtilsTest.java (100%) rename {src => web-server/src}/test/java/utils/HandlebarsTest.java (100%) rename {src => web-server/src}/test/java/utils/HttpRequestUtilsTest.java (100%) rename {src => web-server/src}/test/java/utils/IOUtilsTest.java (100%) rename {src => web-server/src}/test/java/view/ViewTest.java (100%) rename {src => web-server/src}/test/java/web/HttpMethodTest.java (100%) rename {src => web-server/src}/test/java/web/HttpRequestHeadersTest.java (100%) rename {src => web-server/src}/test/java/web/HttpRequestLineTest.java (100%) rename {src => web-server/src}/test/java/web/HttpRequestParamsTest.java (100%) rename {src => web-server/src}/test/java/web/HttpRequestTest.java (100%) rename {src => web-server/src}/test/java/web/HttpResponseTest.java (100%) rename {src => web-server/src}/test/java/webserver/ExecutorsTest.java (100%) create mode 100644 web-server/src/test/resources/Http_Create.txt create mode 100644 web-server/src/test/resources/Http_GET.txt create mode 100644 web-server/src/test/resources/Http_List.txt create mode 100644 web-server/src/test/resources/Http_Login.txt create mode 100644 web-server/src/test/resources/Http_POST2.txt diff --git a/README.md b/README.md index cdd99d780..4bdc918ff 100644 --- a/README.md +++ b/README.md @@ -17,4 +17,5 @@ - [x] void invalidate() : 현재 세션에 저장되어 있는 모든 값을 삭제 - [x] 세션의 고유 아이디는 JDK에서 제공하는 UUID 클래스를 사용해 고유한 아이디를 활용한다. - [x] 세션 관리를 위한 자료구조는 Map을 사용하며, Map와 같은 구조가 된다. 이 때, 키는 UUID이다. -- [ ] service application과 server/servlet부분을 멀티 모듈로 분리한다. \ No newline at end of file +- [x] service application과 server/servlet부분을 멀티 모듈로 분리한다. + - [x] web-server, web-common, service-app 세개의 모듈로 분리 \ No newline at end of file diff --git a/service-app/build.gradle b/service-app/build.gradle new file mode 100644 index 000000000..3883efd0d --- /dev/null +++ b/service-app/build.gradle @@ -0,0 +1,27 @@ +plugins { + id 'java' + id 'idea' + id 'eclipse' +} + +version = '1.0.0' +sourceCompatibility = 1.8 + +repositories { + mavenCentral() +} + +dependencies { + implementation project (':web-server') + implementation project (':web-common') + implementation 'com.google.guava:guava:29.0-jre' + implementation 'ch.qos.logback:logback-classic:1.2.3' + implementation 'com.github.jknack:handlebars:4.2.0' + implementation 'org.springframework:spring-core:5.2.6.RELEASE' + testImplementation 'org.junit.jupiter:junit-jupiter:5.6.2' + testImplementation 'org.assertj:assertj-core:3.16.1' +} + +test { + useJUnitPlatform() +} diff --git a/src/main/java/db/DataBase.java b/service-app/src/main/java/db/DataBase.java similarity index 100% rename from src/main/java/db/DataBase.java rename to service-app/src/main/java/db/DataBase.java diff --git a/src/main/java/web/controller/CreateUserController.java b/service-app/src/main/java/interfaces/CreateUserController.java similarity index 53% rename from src/main/java/web/controller/CreateUserController.java rename to service-app/src/main/java/interfaces/CreateUserController.java index 04ce9e54d..f1bc73c4f 100644 --- a/src/main/java/web/controller/CreateUserController.java +++ b/service-app/src/main/java/interfaces/CreateUserController.java @@ -1,11 +1,14 @@ -package web.controller; +package interfaces; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import db.DataBase; import model.User; +import model.UserDto; +import web.controller.AbstractController; import web.http.HttpRequest; +import web.http.HttpRequestParams; import web.http.HttpResponse; public class CreateUserController extends AbstractController { @@ -13,7 +16,14 @@ public class CreateUserController extends AbstractController { @Override protected void doPost(HttpRequest request, HttpResponse response) { - User user = User.from(request.getRequestBody()); + HttpRequestParams requestParams = request.getRequestBody(); + UserDto userDto = new UserDto( + requestParams.getParameter("userId"), + requestParams.getParameter("password"), + requestParams.getParameter("name"), + requestParams.getParameter("email")); + + User user = userDto.toUser(); logger.info("user : {}", user); DataBase.addUser(user); response.sendRedirect("/index.html"); diff --git a/src/main/java/web/controller/LoginController.java b/service-app/src/main/java/interfaces/LoginController.java similarity index 94% rename from src/main/java/web/controller/LoginController.java rename to service-app/src/main/java/interfaces/LoginController.java index d8e699810..d673bfd7f 100644 --- a/src/main/java/web/controller/LoginController.java +++ b/service-app/src/main/java/interfaces/LoginController.java @@ -1,7 +1,8 @@ -package web.controller; +package interfaces; import db.DataBase; import model.User; +import web.controller.AbstractController; import web.http.HttpRequest; import web.http.HttpResponse; import web.session.HttpSession; diff --git a/src/main/java/web/controller/UserListController.java b/service-app/src/main/java/interfaces/UserListController.java similarity index 94% rename from src/main/java/web/controller/UserListController.java rename to service-app/src/main/java/interfaces/UserListController.java index 0bf1458e5..791d39180 100644 --- a/src/main/java/web/controller/UserListController.java +++ b/service-app/src/main/java/interfaces/UserListController.java @@ -1,4 +1,4 @@ -package web.controller; +package interfaces; import java.util.Collection; import java.util.HashMap; @@ -9,6 +9,7 @@ import view.ModelAndView; import view.View; import web.StaticFile; +import web.controller.AbstractController; import web.http.HttpRequest; import web.http.HttpResponse; import web.session.HttpSession; diff --git a/service-app/src/main/java/interfaces/urlmapper/UrlAppender.java b/service-app/src/main/java/interfaces/urlmapper/UrlAppender.java new file mode 100644 index 000000000..108c2f0c4 --- /dev/null +++ b/service-app/src/main/java/interfaces/urlmapper/UrlAppender.java @@ -0,0 +1,28 @@ +package interfaces.urlmapper; + +import java.util.Arrays; + +import interfaces.CreateUserController; +import interfaces.LoginController; +import interfaces.UserListController; +import web.controller.Controller; +import webserver.RequestMapping; + +public enum UrlAppender { + CREATE_USER_CONTROLLER("/user/create", new CreateUserController()), + LOGIN_CONTROLLER("/user/login", new LoginController()), + USER_LIST_CONTROLLER("/user/list", new UserListController()); + + private final String url; + private final Controller controller; + + UrlAppender(String url, Controller controller) { + this.url = url; + this.controller = controller; + } + + static { + Arrays.stream(values()) + .forEach(v -> RequestMapping.addUrl(v.url, v.controller)); + } +} diff --git a/src/main/resources/logback.xml b/service-app/src/main/resources/logback.xml similarity index 100% rename from src/main/resources/logback.xml rename to service-app/src/main/resources/logback.xml diff --git a/src/main/resources/static/css/bootstrap.min.css b/service-app/src/main/resources/static/css/bootstrap.min.css similarity index 100% rename from src/main/resources/static/css/bootstrap.min.css rename to service-app/src/main/resources/static/css/bootstrap.min.css diff --git a/src/main/resources/static/css/styles.css b/service-app/src/main/resources/static/css/styles.css similarity index 100% rename from src/main/resources/static/css/styles.css rename to service-app/src/main/resources/static/css/styles.css diff --git a/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.eot b/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 000000000..e69de29bb diff --git a/src/main/resources/static/fonts/glyphicons-halflings-regular.svg b/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from src/main/resources/static/fonts/glyphicons-halflings-regular.svg rename to service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.svg diff --git a/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf b/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 000000000..e69de29bb diff --git a/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.woff b/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 000000000..e69de29bb diff --git a/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 b/service-app/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 000000000..e69de29bb diff --git a/src/main/resources/static/images/80-text.png b/service-app/src/main/resources/static/images/80-text.png similarity index 100% rename from src/main/resources/static/images/80-text.png rename to service-app/src/main/resources/static/images/80-text.png diff --git a/src/main/resources/static/js/bootstrap.min.js b/service-app/src/main/resources/static/js/bootstrap.min.js similarity index 100% rename from src/main/resources/static/js/bootstrap.min.js rename to service-app/src/main/resources/static/js/bootstrap.min.js diff --git a/src/main/resources/static/js/jquery-2.2.0.min.js b/service-app/src/main/resources/static/js/jquery-2.2.0.min.js similarity index 100% rename from src/main/resources/static/js/jquery-2.2.0.min.js rename to service-app/src/main/resources/static/js/jquery-2.2.0.min.js diff --git a/src/main/resources/static/js/scripts.js b/service-app/src/main/resources/static/js/scripts.js similarity index 100% rename from src/main/resources/static/js/scripts.js rename to service-app/src/main/resources/static/js/scripts.js diff --git a/service-app/src/main/resources/templates/favicon.ico b/service-app/src/main/resources/templates/favicon.ico new file mode 100644 index 000000000..e69de29bb diff --git a/src/main/resources/templates/index.html b/service-app/src/main/resources/templates/index.html similarity index 91% rename from src/main/resources/templates/index.html rename to service-app/src/main/resources/templates/index.html index e9ec82d5d..43c64a894 100644 --- a/src/main/resources/templates/index.html +++ b/service-app/src/main/resources/templates/index.html @@ -86,12 +86,12 @@
- 국내에서 Ruby on Rails와 Play가 활성화되기 힘든 이유는 뭘까? + 국내에서 Ruby on Rails와 Play가 활성화되기 힘든 이유는 뭘까?
2016-01-15 18:47 - 자바지기 + 자바지기
@@ -104,12 +104,12 @@ diff --git a/src/main/resources/templates/qna/form.html b/service-app/src/main/resources/templates/qna/form.html similarity index 100% rename from src/main/resources/templates/qna/form.html rename to service-app/src/main/resources/templates/qna/form.html diff --git a/src/main/resources/templates/qna/show.html b/service-app/src/main/resources/templates/qna/show.html similarity index 100% rename from src/main/resources/templates/qna/show.html rename to service-app/src/main/resources/templates/qna/show.html diff --git a/src/main/resources/templates/user/form.html b/service-app/src/main/resources/templates/user/form.html similarity index 94% rename from src/main/resources/templates/user/form.html rename to service-app/src/main/resources/templates/user/form.html index 43bf79632..666f1bba6 100644 --- a/src/main/resources/templates/user/form.html +++ b/service-app/src/main/resources/templates/user/form.html @@ -49,7 +49,7 @@