'Web/MVC패턴 게시판'에 해당되는 글 6건

  1. 2012.09.15 MVC게시판 정리
  2. 2012.09.15 web.xml
  3. 2012.09.15 View
  4. 2012.09.15 Model
  5. 2012.09.15 Control
  6. 2012.09.15 (Model View Control) Pattern
Web/MVC패턴 게시판2012. 9. 15. 11:52

환경  :   WINDOWS7,  ECLIPSE JUNO,  JDK7,  ,TOMCAT7.0


만드실 파일 : Controller.java, Impl.java, Lislmpl.java, web.xml, start.jsp, test.jsp, test.param

    ↓ 완성파일

Test.zip


전체 설명 )

start.jsp를 실행시킨다.

실행을 하면 제일 먼저 web.xml에서 설정한대로 Servlet클래스로 먼저간다.

Controller.java 클래스를 실행하고 Servlet 생명주기대로 init() method가 먼저 실행한다.

init() method가 하는 역할은 list.test라는 게 들어오면  MVC패키지 밑의 ListImpl클래스로 가게 한다.

init() method에서 test.param에 있는 내용

  /받아오는 문자열 = 실행시킬클래스   

list.test가 오면 MVC패키지 안에 ListImpl클래스를 실행시키도록 설정을 하고 Map에 담고 있다.

이렇게 설정을 하고

start.jsp 실행시킨다.

start.jsp에서는 버튼 한개 뿐이다.

버튼을 클릭하면 방식은 post방식으로 그리고 주소는 list.test로 이동한다.

Controller.java에서 

@Override 되어있는 부분중 doPost() method를 실행시킨다.

그 안에는 excute() method가 있다.

excute() method에서는 list.test가 들어오면 ListImpl로 이동시킨다.

ListImpl Class에서는 test.jsp로 리턴하는 내용뿐이다.

다시 excute() method로 돌아와서 test.jsp로 이동해라고 명령을 내린다.

그러면 test.jsp가 보여지게 된다.


결과 화면)

 -> 



 




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

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


Servlet 클래스는 MVC패키지 밑 Controller 클래스입니다.

param이름은 param이고 그 위치는 E:\work\Test\WebContent\test.param입니다.

Servelt Mapping에서 url-pattern은 사용하는 패턴 *.test 입니다.


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

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

간단하게 패턴만 보는 것이므로. 

start.jsp 에서 submit 하게 되면   테스트 프로젝트 밑 list.test(/Test/list.test) 로 가게 되고 방식은 post 방식으로 보냅니다.

만약 설정대로 갔다면 test.jsp가 보여질 것입니다.


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

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

Interface

package MVC;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface Impl {
	public String boardImpl(HttpServletRequest req, HttpServletResponse res);
}


Class

package MVC;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Listlmpl implements Impl {

	@Override
	public String boardImpl(HttpServletRequest req, HttpServletResponse res) {
		
		return "test.jsp";
	}

}


ListImpl을 호출을 했다면 test.jsp로 이동합니다.

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

MVC게시판 정리  (0) 2012.09.15
web.xml  (0) 2012.09.15
View  (0) 2012.09.15
Control  (0) 2012.09.15
(Model View Control) Pattern  (0) 2012.09.15
Posted by NeverTry
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