'Web'에 해당되는 글 28건

  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
  7. 2012.08.23 결과화면
  8. 2012.08.23 list.jsp 최종
  9. 2012.08.23 BoardDao 최종
  10. 2012.08.23 BoardDao 추가
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
Web/게시판2012. 8. 23. 23:44



결과화면이다.

급하게 만든 게시판이다. 쓰기와 로그인 리스트와 페이징만 되는 게시판이다.

게시판의 기능으로 읽기도 있을것이며 삭제, 수정, 답글달기 댓글달기는

MVC패턴의 게시판을 하면서 하겠습니다.

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

list.jsp 최종  (0) 2012.08.23
BoardDao 최종  (0) 2012.08.23
BoardDao 추가  (0) 2012.08.23
페이징 할때 쿼리  (0) 2012.08.21
전체글 갯수 구하기  (0) 2012.08.20
Posted by NeverTry
Web/게시판2012. 8. 23. 23:39

list.jsp파일 내용


<%@page import="java.util.Iterator"%>

<%@page import="endless.test.Board"%>

<%@page import="java.util.Vector"%>

<%@page import="endless.test.BoardDao"%>

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<% request.setCharacterEncoding("euc-kr"); %>

<jsp:useBean id="list" class="endless.test.Board" />

<jsp:setProperty property="*" name="list"/>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>목록</title>

</head>

<body>

<%

int pageSize = 10; //한 화면에 보여질 페이지의 수입니다.

String pageNumber = request.getParameter("pageNumber");

if (pageNumber == null) {

pageNumber = "1";

}//만약에 페이지 수가 없다면 1이라는 숫자를 찍어라


int currentPage = Integer.parseInt(pageNumber);

int startRow = (currentPage - 1) * pageSize + 1;

int endRow = currentPage * pageSize;

int count = 0;

BoardDao dao = new BoardDao();

count = dao.getBoardCount();

dao.insert(list);

Vector<Board> boardlist = dao.getBoard(startRow, endRow);

Iterator<Board> i = boardlist.iterator(); 

%>

<table border="1">

<tr>

<td>번호</td>

<td>제목</td>

<td>글쓴이</td>

<td>등록일</td>

<td>조회</td>

</tr> <% while (i.hasNext()) { Board board = i.next(); %>

<tr>

<td><%=board.getWritenum()%></td>

<td><%=board.getTitle()%></td>

<td><%=board.getId()%></td>

<td><%=board.getWritedate()%></td>

<td><%=board.getHit() %></td>

</tr> <% } %>

<tr align="right">

<td colspan="5">

<%

if (count > 0) {

int pageCount = count / pageSize

+ (count % pageSize == 0 ? 0 : 1);

//페이지 숫자를 체크하기위해서.

//만약에 페이지의 숫자가 0일경우를 대비해서 한다.


int startPage = (int) ((currentPage - 1) / 10) * 10 + 1;

//처음페이지의 숫자

int pageBlock = 10; //페이지의숫자는 10

int endPage = startPage + pageBlock - 1;

if (endPage > pageCount) 

endPage = pageCount;

if (startPage > 10) {

%><a href="list.jsp?pageNumber=<%=startPage - 10%>">[이전]</a>

<%

}

for (int pagecounter = startPage; pagecounter <= endPage; pagecounter++) {

%><a href="list.jsp?pageNumber=<%=pagecounter%>">[<%=pagecounter%>]</a>

<%

}

if (endPage < pageCount) {

%><a href="list.jsp?pageNumber=<%=startPage + 10%>">[다음]</a>

<%

}

}

%> <input type="submit" value="글쓰기">

</td>

</tr>

</table>

</body>

</html>

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

결과화면  (0) 2012.08.23
BoardDao 최종  (0) 2012.08.23
BoardDao 추가  (0) 2012.08.23
페이징 할때 쿼리  (0) 2012.08.21
전체글 갯수 구하기  (0) 2012.08.20
Posted by NeverTry
Web/게시판2012. 8. 23. 23:34
package endless.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

public class BoardDao {
	Board board;
	Connection connection;
	PreparedStatement preparedStatement;
	DataBaseChoice dbchoice = new DataBaseChoice();
	Vector boardlist;
	ResultSet resultset;

	public void insert(Object object) throws SQLException,
			ClassNotFoundException {
		board = (Board) object;
		connection = dbchoice.makeConnection();
		String insertQuery = "INSERT INTO BOARD (id,title,content,hit,writedate) VALUES (?,?,?,0,now())";
		preparedStatement = connection.prepareStatement(insertQuery);
		preparedStatement.setString(1, board.getId());
		preparedStatement.setString(2, board.getTitle());
		preparedStatement.setString(3, board.getContent());
		preparedStatement.executeUpdate();

		preparedStatement.close();
		connection.close();

	}

	public int getBoardCount() throws SQLException, ClassNotFoundException {
		int value = 0;
		connection = dbchoice.makeConnection();
		String countQuery = "SELECT COUNT(*) FROM BOARD";
		preparedStatement = connection.prepareStatement(countQuery);
		resultset = preparedStatement.executeQuery();

		if (resultset.next()) {
			value = resultset.getInt(1);
		}
		return value;
	}

	public Vector getBoard(int startRow, int endRow)
			throws SQLException, ClassNotFoundException {
		boardlist = new Vector();

		connection = dbchoice.makeConnection();
		String pagingQuery = "SELECT * FROM (SELECT @ROWNUM :=@ROWNUM +1 AS ROW, A.* FROM (SELECT * FROM BOARD ORDER BY WRITENUM DESC) A, (SELECT @ROWNUM := 0) B) C WHERE C.ROW BETWEEN ? AND ?";
		preparedStatement = connection.prepareStatement(pagingQuery);
		preparedStatement.setInt(1, startRow);
		preparedStatement.setInt(2, endRow);

		resultset = preparedStatement.executeQuery();

		while (resultset.next()) {
			board = new Board();

			board.setWritenum(resultset.getInt("writenum"));
			board.setId(resultset.getString("id"));
			board.setTitle(resultset.getString("title"));
			board.setContent(resultset.getString("content"));
			board.setHit(resultset.getInt("hit"));
			board.setWritedate(resultset.getTimestamp("writedate"));

			boardlist.add(board);
		}

		preparedStatement.close();
		connection.close();

		return boardlist;

	}

}

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

결과화면  (0) 2012.08.23
list.jsp 최종  (0) 2012.08.23
BoardDao 추가  (0) 2012.08.23
페이징 할때 쿼리  (0) 2012.08.21
전체글 갯수 구하기  (0) 2012.08.20
Posted by NeverTry
Web/게시판2012. 8. 23. 23:13



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

list.jsp 최종  (0) 2012.08.23
BoardDao 최종  (0) 2012.08.23
페이징 할때 쿼리  (0) 2012.08.21
전체글 갯수 구하기  (0) 2012.08.20
list.jsp 및 결과  (0) 2012.08.19
Posted by NeverTry