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