Web/MVC패턴 게시판2012. 9. 15. 11:08
package MVC;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Controller extends HttpServlet {
	Map map = new HashMap();

	@Override
	public void init(ServletConfig config) throws ServletException {
		String readProperties = config.getInitParameter("param");
		Properties prop = new Properties();
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(readProperties);
			prop.load(fis);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		Iterator i = prop.keySet().iterator();
		while (i.hasNext()) {
			String key = (String) i.next();
			String className = prop.getProperty(key);
			try {
				Class makeClass = Class.forName(className);
				Object o = makeClass.newInstance();
				map.put(key, o);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public void excute(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		String view = null;
		Impl impl = null;
		try {
			String uri = req.getRequestURI();
			if (uri.indexOf(req.getContextPath()) == 0) {
				uri = uri.substring(req.getContextPath().length());
			}
			impl = (Impl) map.get(uri);
			view = impl.boardImpl(req, res);
		} catch (Exception e) {
			e.printStackTrace();
		}
		RequestDispatcher rd = req.getRequestDispatcher(view);
		rd.forward(req, res);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		excute(req, resp);
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		excute(req, resp);
	}
}


설명 : 


먼저 간단하게 Servlet 생명주기를 설명하자면 이렇게 움직인다. 

init()   ->   Service()   ->   doGet(), doPost()   ->   -> destroy()

init() :  생성자 다음으로 딱 한번 호출한다. 

Service() : 여러번 호출이 된다.

doGet(), doPost() :  view에서 get, post 방식으로 넘겼을 때 그에 해당하는 method가 호출된다.

Init()    ->     [Service -> doGet() -> Service -> doPost() -> Service() - > doGet()]반복     -> destroy() 




Control.java

먼저 이파일을 하나 만든다.


설명 : 

Properties Class 활용

/list.test  라는 요청이 들어오면  패키지명(MVC) 클래스명(ListImpl) MVC.ListImpl을 실행시킨다.


그 내용)

아까 Servlet 생명주기에서 제일 먼저 실행하는 것은 init() method이다.

init() method의 내용이 이렇게 해주는것이다.


'Web > MVC패턴 게시판' 카테고리의 다른 글

MVC게시판 정리  (0) 2012.09.15
web.xml  (0) 2012.09.15
View  (0) 2012.09.15
Model  (0) 2012.09.15
(Model View Control) Pattern  (0) 2012.09.15
Posted by NeverTry
Web/MVC패턴 게시판2012. 9. 15. 10:37

MVC 패턴

앞전 MVC패턴을 쓰지 않은 게시판을 작성을 해보면 그럭저럭 게시판 기능을 잘 하고 있다.

하지만 간단한 게시판일때는 수정 사항이 생겨도 쉽게 고칠수 있지만 

예로들어 쇼핑물을 만들고자 했을 때 수많은 클래스와 뷰를 앞전 MVC를 쓰지 않은 게시판처럼 만든다면

수정하기가 많이 힘들것이라고 예상한다.

그래서 각각 하는일을 나눠서 짜면 쉽게 유지보수 할수 있을 것이다.


M(Model) : 데이터의 상태를 유지, 데이터 처리 로직

V(View) : 사용자에게 보여주는 페이지 (UI)

C(Control) : 사용자의 요청을 관리, 데이터의 흐름을 관리


'Web > MVC패턴 게시판' 카테고리의 다른 글

MVC게시판 정리  (0) 2012.09.15
web.xml  (0) 2012.09.15
View  (0) 2012.09.15
Model  (0) 2012.09.15
Control  (0) 2012.09.15
Posted by NeverTry
another/UML2012. 9. 14. 23:42

교육센터에서 교육받을 때 처음 써봤던 UML

Star UML 설치



Star UML 홈페이지  

여기서 다운로드를 누른다.



빨간색 박스로 쳐진 부분을 누른다.



빨간색 박스로 된 부분을 누르면 파일이 다운받는다. 

이후 그냥 설치 하면 된다.

Posted by NeverTry