์ฐธ๊ณ ์๋ฃ :
https://readystory.tistory.com/117
[์์ฑ ํจํด] ํฉํ ๋ฆฌ ํจํด(Factory Pattern) ์ดํด ๋ฐ ์์
์ด๋ฒ์ ์ดํด๋ณผ ๋์์ธ ํจํด์ ๊ฐ์ฅ ์ ๋ช ํ ๋์์ธ ํจํด ์ค ํ๋์ธ ํฉํ ๋ฆฌ ํจํด(Factory Pattern)์ ๋๋ค. ์ด ํฉํ ๋ฆฌ ํจํด์ ์กฐ๊ธ ๋ ๊ตฌ์ฒด์ ์ธ ์ฉ์ด์ธ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด(Factory Method Pattern)์ผ๋ก๋ ๋๋ฆฌ ์๋ ค..
readystory.tistory.com
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ java์ ํด๋์ค๋ก ๋ง๋๋๊ฒ์ ๋ชจ๋ธ๋ง์ด๋ผ๊ณ ํ๋ค.
์ปดํฌ์ง์ , ํด๋์ค๊ฐ ๋ถ์ํ์ด ๋์ด ํจ๊ฒ ์ฌ์ฉํ ๋ ์ปดํฌ์ง์ (ํฉ์ฑ) ํ๋ค.
ํฉํ ๋ฆฌ : ์์ํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ฒ ํ๋ ๊ฒ
โ
์๊ณ ํ์ จ์ต๋๋น :-)
โ
1. ๊ธฐ๋ณธ ์ ํ
- server์ server.xml์ context path="/"๋ก ์ ํ ๋ง๋ฌ. ์ปจํธ๋กค๋ฌ๋ก ๋ฐ์ ๋ถ๋ฐฐํ๊ธฐ์ํด ๋ฃจํธํ์ผ๋ก ์ ํ
- action๊ณผ controller ํจํค์ง ๊ฐ๊ฐ ์์ฑํ์ฌ ์ญํ ์ ๋๋์ด์ค
- controllerํจํค์ง์ ์ปจํธ๋กค๋ฌ ์๋ธ๋ฆฟํ์ผ ์์ฑ
- @webservlet("ํจํค์ง๋ช ") : ์ด๋ ธํ ์ด์ ๊ธฐ๋ฒ, ํ์ผ์ด๋ฆ์ผ๋ก ์ ํ
- ๊ธฐ๋ณธ์ ์ผ๋ก UTF-8์ฒ๋ฆฌ๊ฐ ๋์ด์ผ ํจ.
request.setCharacterEncoding("utf-8"); // ์์ฒญํ ๋๋ utf-8๋ก ์์ฒญ
response.setContentType("text/html;charset=utf-8"); // ์๋ตํ ๋๋ utf-8๋ก ์๋ต
2. ์ปจํธ๋กค๋ฌ์ ์ญํ : ๋ถ๋ฐฐ๋ง ํด์ค ๊ฐ์ฒด ์์ฑ์ Actionํจํค์ง์ ํฉํ ๋ฆฌํจํด์ ์ด์ฉํ์ฌ ๋ค์ ๋ถ๋ฐฐ
*do get, do post๋ง ์์ฑํ๊ณ do get์ do post๋ก ๋ฐ๋ก ๋๊ธฐ๊ฒ ํจ.
1. String cmd = req.getParameter("cmd");
2. Action action = BoardFactory.route("cmd");
3. action.execute(req, resp);
1) ์์ฒญํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ Stringํ์ผ๋ก ์ ์ฅ
2) BoardFactory์ routeํจ์๋ฅผ ์ด์ฉํด ๋ฐ์ ์์ฒญ์ ๋ง๊ฒ ๋ถ๋ฐฐํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ Actionํ์ผ๋ก ์ ๋ฌ ๋ฐ์.
3) ์ ๋ฌ๋ฐ์ ๊ฐ์ฒด์ ๋ฉ์๋์ธ execute ์คํ. ์ด๋ ๊ฐ์ฒด์์ฑํ๋ ์ญํ ์ ํ๋ฉฐ ๊ฐ์ ์ฑ์ ๋ถ์ฌํ๊ธฐ ์ํด Action์ ์ธํฐํ์ด์ค๋ก ์์ฑ,๋ฉ์๋๋ฅผ ์์ฑํด๋์์ผํจ.
3. ํฉํ ๋ฆฌํจํด์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์์ฑํ์ฌ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌ
2-2)์ BoardFactory.route("cmd");๋ ์ผ๋จ Stringํ์ผ๋ก cmd๋ฅผ ์ ๋ฌ ๋ฐ์์ผ ํ๋ฉฐ route๋ผ๋ ๋ฉ์๋๊ฐ ์คํ ๋ ์ ์๊ฒ ์ ํ ๋์ด์ผ ํจ.
2-3)์ Actionํ์ action์ด execute๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ๊ฐ ๊ฐ์ฒด๋ค์ Action์ ์์๋ฐ์ ์ปจํธ๋กค๋ฌ์์ ์คํ๋ ์ ์๊ฒ ํด์ผํจ.
- BoardFactory
package com.cos.board.action.board;
import com.cos.board.action.Action;
public class BoardFactory {
public static Action route(String cmd) {
if(cmd.equals("list")) {
return new BoardListAction();
}else if(cmd.equals("delete")) {
return new BoardDeleteAction();
}else if(cmd.equals("write")) {
return new BoardWriteAction();
}else if(cmd.equals("update")) {
return new BoardUpdateAction();
}else if(cmd.equals("detail")) {
return new BoardDetailAction();
}
return null;
}
}
- Action
package com.cos.board.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Action {
void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException;
}
- Action์ ์์๋ฐ์ BoardListAction, ๊ฐ ๊ธฐ๋ฅ์ ๋ง๊ฒ ๋ค๋ฅธ java๋ ๊ตฌํ
package com.cos.board.action.board;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cos.board.action.Action;
public class BoardListAction implements Action {
@Override
public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
๋์ :-)
์ค๋๋ ์๊ณ ํ์ จ์ต๋๋น
'java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JSP - ๊ฒ์ํ ๋ง๋ค๊ธฐ(5) DB Connection Pool(CP) (0) | 2020.11.09 |
---|---|
JSP - ๊ฒ์ํ๋ง๋ค๊ธฐ(2) - MySQL ํ๊ธ ์ ํ ํ๊ธฐ, ์ ์ ์์ฑ (0) | 2020.11.09 |
MVCํจํด (0) | 2020.11.09 |
JAVA - Exception ์ข ๋ฅ (0) | 2020.11.09 |
JSP - ๊ฐ๋ ์ ๋ฆฌ (0) | 2020.11.09 |