-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
191 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
18 changes: 18 additions & 0 deletions
18
servlet/src/main/java/me/choi/servlet/web/frontcontroller/version03/ControllerV3.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package me.choi.servlet.web.frontcontroller.version03; | ||
|
||
import me.choi.servlet.web.frontcontroller.ModelView; | ||
|
||
import java.util.Map; | ||
|
||
/** | ||
* Project : servlet | ||
* | ||
* @author : jwdeveloper | ||
* @comment : | ||
* Time : 9:31 오후 | ||
*/ | ||
public interface ControllerV3 { | ||
|
||
ModelView process(final Map<String, String> paramMap); | ||
|
||
} |
68 changes: 68 additions & 0 deletions
68
...src/main/java/me/choi/servlet/web/frontcontroller/version03/FrontControllerServletV3.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package me.choi.servlet.web.frontcontroller.version03; | ||
|
||
import me.choi.servlet.web.frontcontroller.ModelView; | ||
import me.choi.servlet.web.frontcontroller.MyView; | ||
import me.choi.servlet.web.frontcontroller.version03.controller.MemberFormControllerV3; | ||
import me.choi.servlet.web.frontcontroller.version03.controller.MemberListControllerV3; | ||
import me.choi.servlet.web.frontcontroller.version03.controller.MemberSaveControllerV3; | ||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
import javax.servlet.ServletException; | ||
import javax.servlet.annotation.WebServlet; | ||
import javax.servlet.http.HttpServlet; | ||
import javax.servlet.http.HttpServletRequest; | ||
import javax.servlet.http.HttpServletResponse; | ||
import java.io.IOException; | ||
import java.util.HashMap; | ||
import java.util.Map; | ||
|
||
/** | ||
* Project : servlet | ||
* | ||
* @author : jwdeveloper | ||
* @comment : 현재의 문제점 : HttpServletRequest, HttpServletResponse등의 사용하지 않는 코드가 너무 많다. | ||
* Time : 9:13 오후 | ||
*/ | ||
@WebServlet(name = "frontControllerServletV3", urlPatterns = "/front-controller/v3/*") | ||
public class FrontControllerServletV3 extends HttpServlet { | ||
|
||
private final Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
private final Map<String, ControllerV3> controllerMap = new HashMap<>(); | ||
|
||
public FrontControllerServletV3() { | ||
this.controllerMap.put("/front-controller/v3/members/new-form", new MemberFormControllerV3()); | ||
this.controllerMap.put("/front-controller/v3/members/save", new MemberSaveControllerV3()); | ||
this.controllerMap.put("/front-controller/v3/members", new MemberListControllerV3()); | ||
} | ||
|
||
@Override | ||
protected void service(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { | ||
|
||
final String requestURI = request.getRequestURI(); | ||
final ControllerV3 controller = controllerMap.get(requestURI); | ||
|
||
if (controller == null) { | ||
response.setStatus(HttpServletResponse.SC_NOT_FOUND); | ||
return; | ||
} | ||
|
||
final Map<String, String> paramMap = createParamMap(request); | ||
final ModelView mv = controller.process(paramMap); | ||
|
||
final String viewName = mv.getViewName();// 논리이름 | ||
final MyView view = viewResolver(viewName); | ||
view.render(mv.getModel(), request, response); | ||
} | ||
|
||
private MyView viewResolver(final String viewName) { | ||
return new MyView("/WEB-INF/views/" + viewName + ".jsp"); | ||
} | ||
|
||
private Map<String, String> createParamMap(final HttpServletRequest request) { | ||
final Map<String, String> paramMap = new HashMap<>(); | ||
request.getParameterNames().asIterator() | ||
.forEachRemaining(paramName -> paramMap.put(paramName, request.getParameter(paramName))); | ||
return paramMap; | ||
} | ||
} |
21 changes: 21 additions & 0 deletions
21
...java/me/choi/servlet/web/frontcontroller/version03/controller/MemberFormControllerV3.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package me.choi.servlet.web.frontcontroller.version03.controller; | ||
|
||
import me.choi.servlet.web.frontcontroller.ModelView; | ||
import me.choi.servlet.web.frontcontroller.version03.ControllerV3; | ||
|
||
import java.util.Map; | ||
|
||
/** | ||
* Project : servlet | ||
* | ||
* @author : jwdeveloper | ||
* @comment : | ||
* Time : 9:33 오후 | ||
*/ | ||
public class MemberFormControllerV3 implements ControllerV3 { | ||
|
||
@Override | ||
public ModelView process(final Map<String, String> paramMap) { | ||
return new ModelView("new-form"); | ||
} | ||
} |
32 changes: 32 additions & 0 deletions
32
...java/me/choi/servlet/web/frontcontroller/version03/controller/MemberListControllerV3.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package me.choi.servlet.web.frontcontroller.version03.controller; | ||
|
||
import me.choi.servlet.domain.member.Member; | ||
import me.choi.servlet.domain.member.MemberRepository; | ||
import me.choi.servlet.web.frontcontroller.ModelView; | ||
import me.choi.servlet.web.frontcontroller.version03.ControllerV3; | ||
|
||
import java.util.List; | ||
import java.util.Map; | ||
|
||
/** | ||
* Project : servlet | ||
* | ||
* @author : jwdeveloper | ||
* @comment : | ||
* Time : 9:37 오후 | ||
*/ | ||
public class MemberListControllerV3 implements ControllerV3 { | ||
|
||
private final MemberRepository memberRepository = MemberRepository.getInstance(); | ||
|
||
@Override | ||
public ModelView process(final Map<String, String> paramMap) { | ||
|
||
final List<Member> members = memberRepository.finalAll(); | ||
final ModelView mv = new ModelView("members"); | ||
mv.getModel().put("members", members); | ||
|
||
return mv; | ||
} | ||
|
||
} |
34 changes: 34 additions & 0 deletions
34
...java/me/choi/servlet/web/frontcontroller/version03/controller/MemberSaveControllerV3.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package me.choi.servlet.web.frontcontroller.version03.controller; | ||
|
||
import me.choi.servlet.domain.member.Member; | ||
import me.choi.servlet.domain.member.MemberRepository; | ||
import me.choi.servlet.web.frontcontroller.ModelView; | ||
import me.choi.servlet.web.frontcontroller.version03.ControllerV3; | ||
|
||
import java.util.Map; | ||
|
||
/** | ||
* Project : servlet | ||
* | ||
* @author : jwdeveloper | ||
* @comment : | ||
* Time : 9:34 오후 | ||
*/ | ||
public class MemberSaveControllerV3 implements ControllerV3 { | ||
|
||
private final MemberRepository memberRepository = MemberRepository.getInstance(); | ||
|
||
@Override | ||
public ModelView process(final Map<String, String> paramMap) { | ||
|
||
final String username = paramMap.get("username"); | ||
final int age = Integer.parseInt(paramMap.get("age")); | ||
|
||
final Member member = new Member(username, age); | ||
memberRepository.save(member); | ||
final ModelView mv = new ModelView("save-result"); | ||
mv.getModel().put("member", member); | ||
|
||
return mv; | ||
} | ||
} |