본문 바로가기

카테고리 없음

53/MVCmodel2/파라메터방식/URI방식

단순게시판

 

model 1

              board write1.jsp              -> BoardTO              -> BoardDAO              -> DB / file / network

              board write1_ok.jsp

              board list1.jsp

              ....

 

model2

              controller                 연결클래스

                                               BoardAction(|)             

                            writer           WriteAction                          -> BoardTO              -> BoardDAO              -> DB / file / network

                            write_ok      WriteOkAction

                            list

                            ...

             <- *.jsp

 

 

URI

http://localhost:8080/프로젝트명/view1.do                   - view1.jsp

http://localhost:8080/프로젝트명/view2.do                   - view2.jsp

 

서블릿에서는

*.do  방식으로 받는다 선언해주는게 좋다

 

파라메터

http://localhost:8080/프로젝트명/controller?action=gugudan

http://localhost:8080/프로젝트명/controller?action=gugudan_ok

 

URI

http://localhost:8080/프로젝트명/gugudan.do

http://localhost:8080/프로젝트명/gugudan_ok.do

 

 

게시판 URI

http://localhost:8080/프로젝트명/write.do

http://localhost:8080/프로젝트명/write_ok.do

http://localhost:8080/프로젝트명/list.do

...

 

*Controller 와

*jsp 수정..

 


model2 파라메터 방식

게시판 model1 -> model2로 바꾸기

 

model2의 기본적인 구조

1.  scr/main/java폴더안에 model1패키지는 모델에 해당됨

2. scr/main/java폴더안에 model2패키지는 로직처리 클래스(비즈니스 로직처리)

3. scr/main/java폴더안에servlet패키지는 컨트롤러

4. src -> main -> webapp -> WEB-INF -> views폴더는

5. 파라메터 방식의 서블릿 (컨트롤러)는 ./controller 로 받는다

 

헷갈릴수 있는것들

1. model1의 구조를 가져와서 model2로 만드는것이 기본적이다.

2. mariadb폴더안의 model1폴더는 디폴트값을 남겨두는것

(저걸로 사용하지않음 / model1폴더를 WEB-INF폴더에 넣어 views폴더로 바꾼것)

3. DAO / TO, context.xml, jar파일 은 model1에서 썼던것들을 그대로 가져왔다

 

MVC패턴(518p)


파라메터 방식으로 연결

 

package servlet;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model2.BoardAction;
import model2.DeleteAction;
import model2.DeleteOkAction;
import model2.ListAction;
import model2.ModifyAction;
import model2.ModifyOkAction;
import model2.ViewAction;
import model2.WriteAction;
import model2.WriteOkAction;

/**
 * Servlet implementation class BoardController
 */
@WebServlet("/controller")
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doProcess(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doProcess(request, response);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		try {
			request.setCharacterEncoding("utf-8");
			
			String action = request.getParameter("action");
			
			// 잘못입력했을경우 에러페이지로 빠져나가는 경우를 만들어줌
			String url = "/WEB-INF/views/board_error1.jsp";
			
			// 클래스연결
			BoardAction boardAction = null;
			
			if(action == null || action.equals("") || action.equals("list")) {
				boardAction = new ListAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_list1.jsp";
			}else if(action.equals("view")){
				boardAction = new ViewAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_view1.jsp";
			}else if(action.equals("write")){
				boardAction = new WriteAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_write1.jsp";
			}else if(action.equals("write_ok")){
				boardAction = new WriteOkAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_write1_ok.jsp";
			}else if(action.equals("modify")){
				boardAction = new ModifyAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_modify1.jsp";
			}else if(action.equals("modify_ok")){
				boardAction = new ModifyOkAction();
				boardAction.execute(request, response);				
				
				url = "/WEB-INF/views/board_modify_ok.jsp";
			}else if(action.equals("delete")){
				boardAction = new DeleteAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_delete1.jsp";
			}else if(action.equals("delete_ok")){
				boardAction = new DeleteOkAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_delete_ok.jsp";
			}
			
			RequestDispatcher dispatcher = request.getRequestDispatcher(url);
			dispatcher.forward(request, response);
			
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ServletException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

BoardController.java

컨트롤러

컨트롤러에서 실행시킨다

 

 

package model2;

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

public interface BoardAction {
	// 모든 클래스에서 사용할 메서드 저장
	
	public abstract void execute(HttpServletRequest request, HttpServletResponse response);
	
}

BoardAction.java

 

모든 클래스에서 사용할 메서드를 저장한 인터페이스 클래스

 

 

package model2;

import java.util.ArrayList;

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

import model1.BoardDAO;
import model1.BoardTO;

public class ListAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("ListAction 호출");
		
		BoardDAO dao = new BoardDAO();
		ArrayList<BoardTO> boardLists = dao.boardList();
		
		request.setAttribute("boardLists", boardLists);
	}

}

ListAction.java

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@ page import="model1.BoardTO" %>
<%@ page import="java.util.ArrayList" %>

<%
	ArrayList<BoardTO> boardLists = (ArrayList<BoardTO>)request.getAttribute( "boardLists" );

	int totalRecord = boardLists.size();
	
	StringBuilder sbHtml = new StringBuilder(); 
		
		for(BoardTO to : boardLists ){
			String seq = to.getSeq();
			String subject = to.getSubject();
			String writer = to.getWriter();
			String wdate = to.getWdate();
			String hit = to.getHit();
			int wgap = to.getWgap();
			
			sbHtml.append("<tr>");
			sbHtml.append("<td>&nbsp;</td>");
			sbHtml.append("<td>" + seq + "</td>");
			sbHtml.append("<td class='left'>");
			sbHtml.append("<a href='./controller?action=view&seq=" + seq + "'>" + subject + "</a>&nbsp");
			if(wgap == 0){
				sbHtml.append("<img src='./images/icon_new.gif' alt='NEW'></td>");
			}
			sbHtml.append("<td>" + writer + "</td>");
			sbHtml.append("<td>" + wdate + "</td>");
			sbHtml.append("<td>" + hit + "</td>");
			sbHtml.append("<td>&nbsp;</td>");
			sbHtml.append("</tr>");
		}
%>
	
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<div class="contents_sub">
		<div class="board_top">
			<div class="bold">총 <span class="txt_orange"><%=totalRecord %></span>건</div>
		</div>

		<!--게시판-->
		<div class="board">
			<table>
			<tr>
				<th width="3%">&nbsp;</th>
				<th width="5%">번호</th>
				<th>제목</th>
				<th width="10%">글쓴이</th>
				<th width="17%">등록일</th>
				<th width="5%">조회</th>
				<th width="3%">&nbsp;</th>
			</tr>
<%=sbHtml.toString() %>
<!-- 
			<tr>
				<td>&nbsp;</td>
				<td>1</td>
				<td class="left"><a href="board_view1.jsp">adfas</a>&nbsp;<img src="./images/icon_new.gif" alt="NEW"></td>
				<td>asdfa</td>
				<td>2017-01-31</td>
				<td>6</td>
				<td>&nbsp;</td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td>1</td>
				<td class="left"><a href="board_view1.jsp">adfas</a>&nbsp;<img src="./images/icon_new.gif" alt="NEW"></td>
				<td>asdfa</td>
				<td>2017-01-31</td>
				<td>6</td>
				<td>&nbsp;</td>
			</tr>
 -->
			</table>
		</div>	

		<div class="btn_area">
			<div class="align_right">
				<input type="button" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" onclick="location.href='./controller?action=write'" />
			</div>
		</div>
		<!--//게시판-->
	</div>
</div>
<!--//하단 디자인 -->

</body>
</html>

board_list1.jsp

 

model1에서는 DAO와TO를 생성하고 jsp클래스안에있는 sql문을 DAO안에 넣어주었다면

model2에서는 DAO나 TO 생성자를 Action클래스(비지니스클래스) 에 넣어준다

 

또한, 경로도 바뀌는데  location.href='board_write1.jsp 에서

location.href='./controller?action=write' 처럼 파라메터 방식으로 바뀐다

(경로지정시 ../../ -> ./ 로 바꿔주는것도 생각하기)

 

model2 는 경로지정을 jsp로 지정하지않음

 

 

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class ViewAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("ViewAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));
		
		BoardDAO dao = new BoardDAO();
		to = dao.boardView(to);
		
		request.setAttribute("to", to);
	}

}

ViewAction.java

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@ page import="model1.BoardTO" %>

<%
	BoardTO to = (BoardTO)request.getAttribute("to");
	
	String seq = to.getSeq();
	String subject = to.getSubject();
	String writer = to.getWriter();
	String mail = to.getMail();
	String wip = to.getWip();
	String wdate = to.getWdate();
	String hit = to.getHit();
	String content = to.getContent();
%>
	
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<div class="contents_sub">
		<!--게시판-->
		<div class="board_view">
			<table>
			<tr>
				<th width="10%">제목</th>
				<td width="60%"><%=subject %></td>
				<th width="10%">등록일</th>
				<td width="20%"><%=wdate %></td>
			</tr>
			<tr>
				<th>글쓴이</th>
				<td><%=writer %>(<%=mail %>)(<%=wip %>)</td>
				<th>조회</th>
				<td><%=hit %></td>
			</tr>
			<tr>
				<td colspan="4" height="200" valign="top" style="padding: 20px; line-height: 160%"><%=content %></td>
			</tr>
			</table>
		</div>

		<div class="btn_area">
			<div class="align_left">
				<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./controller?action=list'" />
			</div>
			<div class="align_right">
				<input type="button" value="수정" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./controller?action=modify&seq=<%=seq %>'" />
				<input type="button" value="삭제" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./controller?action=delete&seq=<%=seq %>'" />
				<input type="button" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" onclick="location.href='./controller?action=write'" />
			</div>
		</div>	
		<!--//게시판-->
	</div>
</div>
<!-- 하단 디자인 -->

</body>
</html>

board_view1.jsp

 

 

 

 

package model2;

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

public class WriteAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("WriteAction 호출");
	}

}

WriteAction.java

 

DAO, TO 객체를 옮길 필요없음

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
<script type="text/javascript">
	window.onload = function(){
		document.getElementById('wbtn').onclick = function(){
			//alert('click');
			// 필수 입력 항목검사
			if(document.wfrm.info.checked == false){
				alert('동의하셔야 합니다.');
				return false;
			}
			if(document.wfrm.writer.value.trim() == ''){
				alert('글쓴이를 입력하셔야 합니다');
				return false;
			}
			if(document.wfrm.subject.value.trim() == ''){
				alert('제목을 입력하셔야 합니다');
				return false;
			}
			if(document.wfrm.password.value.trim() == ''){
				alert('비밀번호를 입력하셔야 합니다');
				return false;
			}
			document.wfrm.submit();
		};
	}
</script>
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_menu"></div>
<div class="con_txt">
	<form action="./controller" method="post" name="wfrm">
	<input type="hidden" name="action" value="write_ok" />
		<div class="contents_sub">	
			<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top"><input type="text" name="writer" value="" class="board_view_input_mail" maxlength="5" /></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><input type="text" name="subject" value="" class="board_view_input" /></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				<tr>
					<th>내용</th>
					<td><textarea name="content" class="board_editor_area"></textarea></td>
				</tr>
				<tr>
					<th>이메일</th>
					<td><input type="text" name="mail1" value="" class="board_view_input_mail"/> @ <input type="text" name="mail2" value="" class="board_view_input_mail"/></td>
				</tr>
				</table>
				
				<table>
				<tr>
					<br />
					<td style="text-align:left;border:1px solid #e0e0e0;background-color:f9f9f9;padding:5px">
						<div style="padding-top:7px;padding-bottom:5px;font-weight:bold;padding-left:7px;font-family: Gulim,Tahoma,verdana;">※ 개인정보 수집 및 이용에 관한 안내</div>
						<div style="padding-left:10px;">
							<div style="width:97%;height:95px;font-size:11px;letter-spacing: -0.1em;border:1px solid #c5c5c5;background-color:#fff;padding-left:14px;padding-top:7px;">
								1. 수집 개인정보 항목 : 회사명, 담당자명, 메일 주소, 전화번호, 홈페이지 주소, 팩스번호, 주소 <br />
								2. 개인정보의 수집 및 이용목적 : 제휴신청에 따른 본인확인 및 원활한 의사소통 경로 확보 <br />
								3. 개인정보의 이용기간 : 모든 검토가 완료된 후 3개월간 이용자의 조회를 위하여 보관하며, 이후 해당정보를 지체 없이 파기합니다. <br />
								4. 그 밖의 사항은 개인정보취급방침을 준수합니다.
							</div>
						</div>
						<div style="padding-top:7px;padding-left:5px;padding-bottom:7px;font-family: Gulim,Tahoma,verdana;">
							<input type="checkbox" name="info" value="1" class="input_radio"> 개인정보 수집 및 이용에 대해 동의합니다.
						</div>
					</td>
				</tr>
				</table>
			</div>
			
			<div class="btn_area">
				<div class="align_left">
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./controller?action=list'" />
				</div>
				<div class="align_right">
					<input type="button" id="wbtn" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" />
				</div>
			</div>
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

board_write1.jsp

 

write1.jsp 에서 write_ok.jsp 로 넘어가는 form문에서

action을 ./controller로 바꾸어야하고

 

아래 input태그를 하나 더 만들어

<input type="hidden" name="action" value="write_ok" />

로 write_ok로 넘어간다고 지정해주어야함

 

 

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class WriteOkAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		// 모든 요청작업 DB작업은 여기서 끝낸다
		System.out.println("WriteOkAction 호출");
		
		// board_write_ok.jsp에서 가져오기
		BoardTO to = new BoardTO();
		to.setSubject(request.getParameter("subject"));
		to.setWriter(request.getParameter("writer"));
		to.setMail("");
		if(!request.getParameter("mail1").equals("") && !request.getParameter("mail2").equals("") ){
			to.setMail(request.getParameter("mail1") + "@" + request.getParameter("mail2"));
		}
		to.setPassword(request.getParameter("password"));
		to.setContent(request.getParameter("content"));
		to.setWip(request.getRemoteAddr());
		
		
		BoardDAO dao = new BoardDAO();
		int flag = dao.boardWriteOk(to);
		
		// 여기서 끝낸 결과를 jsp페이지에 보낸다
		request.setAttribute("flag", flag);
	}

}

WriteOkAction.java

 

 

 

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

<% 
	int flag = (Integer)request.getAttribute("flag");

	out.println("<script type='text/javascript'>");
	
	if(flag == 0){
		//out.println("정상 입력");
		out.println("alert('글쓰기에 성공했습니다');");
		out.println("location.href='./controller?action=list';"); // 경로 controller로 변경
	}else{
		//out.println("비정상 입력");
		out.println("alert('글쓰기에 실패했습니다');");
		out.println("history.back();");
	}
	out.println("</script>");
	
%>

board_write1_ok.jsp

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class ModifyAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("ModifyAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));
		
		BoardDAO dao = new BoardDAO();
		to = dao.boardModify(to);
		
		request.setAttribute("to", to);
		
	}

}

ModifyAction.java

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@ page import="model1.BoardTO" %>

<%
	BoardTO to = (BoardTO)request.getAttribute( "to" );

	String seq = to.getSeq();
	String subject = to.getSubject();
	String writer = to.getWriter();
	String[] mail = null;
	if(to.getMail().equals("")){
		mail = new String[]{"", ""};
	}else{
		mail = to.getMail().split("@");
	}
	String content = to.getContent();
	
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
<script type="text/javascript">
	window.onload = function(){
		document.getElementById('dbtn').onclick = function(){
			//alert('click');
			if(document.dfrm.password.value.trim() == ''){
				alert('비밀번호를 입력하셔야 합니다');
				return;
			}
			// submit() = form 전송시도할때 발생하는 이벤트
			document.dfrm.submit();
		}
	}
</script>
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<form action="./controller" method="post" name="dfrm">
		<input type="hidden" name="action" value="modify_ok" />
		<input type="hidden" name="seq" value="<%=seq %>" />
		<div class="contents_sub">	
			<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top"><input type="text" name="writer" value="<%=writer %>" class="board_view_input_mail" maxlength="5" readonly/></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><input type="text" name="subject" value="<%=subject %>" class="board_view_input" /></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				<tr>
					<th>내용</th>
					<td><textarea name="content" value="" class="board_editor_area"><%=content %></textarea></td>
				</tr>
				<tr>
					<th>이메일</th>
					<td><input type="text" name="mail1" value="<%=mail[0] %>" class="board_view_input_mail"/> @ <input type="text" name="mail2" value="<%=mail[1] %>" class="board_view_input_mail"/></td>
				</tr>
				</table>
			</div>
			
			<div class="btn_area">
				<div class="align_left">
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./controller?action=list'" />
					<input type="button" value="보기" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./controller?action=view&seq=<%=seq %>'" />
				</div>
				<div class="align_right">
					<input type="button" id="dbtn" value="수정" class="btn_write btn_txt01" style="cursor: pointer;" />
				</div>
			</div>
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

board_modify1.jsp

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class ModifyOkAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("ModifyOkAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));

		to.setMail("");
		if(!request.getParameter("mail1").equals("") && !request.getParameter("mail2").equals("") ){
			to.setMail(request.getParameter("mail1") + "@" + request.getParameter("mail2"));
		}
		
		to.setSubject(request.getParameter("subject"));
		to.setContent(request.getParameter("content"));
		to.setPassword(request.getParameter("password"));
		
		BoardDAO dao = new BoardDAO();
		int flag = dao.boardModifyOk(to);
		
		request.setAttribute("flag", flag);
		request.setAttribute("seq", to.getSeq());
	}

}

ModifyOkAction.java

 

 

 

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

<% 
	int flag = (Integer)request.getAttribute("flag");
	String seq = (String)request.getAttribute("seq");

	
	out.println("<script type='text/javascript'>");
	if(flag == 0){
		out.println("alert('글수정에 성공했습니다');");
		out.println("location.href='./controller?action=view&seq=" + seq + "';");
	}else if(flag == 1){
		out.println("alert('비밀번호가 잘못되었습니다');");
		out.println("history.back();");
	}else{
		// 시스템적 오류부분 경고문
		out.println("alert('글쓰기에 실패했습니다');");
		out.println("history.back();");
	}
	out.println("</script>");
%>

board_modify_ok.jsp

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class DeleteAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("DeleteAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));
		
		BoardDAO dao = new BoardDAO();
		to = dao.boardModify(to);
		
		request.setAttribute("to", to);
	}

}

DeleteAction.java

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@page import="model1.BoardTO"%>
	
<%
	BoardTO to = (BoardTO)request.getAttribute( "to" );
		
	
	String seq = to.getSeq();
	String subject = to.getSubject();
	String writer = to.getWriter();
	
	
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
<script type="text/javascript">
	window.onload = function(){
		document.getElementById('dbtn').onclick = function(){
			//alert('click');
			if(document.dfrm.password.value.trim() == ''){
				alert('비밀번호를 입력하셔야 합니다');
				return;
			}
			document.dfrm.submit();
		}
	}
</script>
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<form action="./controller" method="post" name="dfrm">
		<input type="hidden" name="action" value="delete_ok">
		<input type="hidden" name="seq" value="<%=seq %>">
		<div class="contents_sub">	
			<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top"><input type="text" name="writer" value="<%=writer %>" class="board_view_input_mail" maxlength="5" readonly/></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><input type="text" name="subject" value="<%=subject %>" class="board_view_input" readonly/></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				</table>
			</div>
			
			<div class="btn_area">
				<div class="align_left">
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./controller?action=list'" />
					<input type="button" value="보기" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./controller?action=view&seq=<%=seq %>'" />
				</div>
				<div class="align_right">
					<input type="button" id="dbtn" value="삭제" class="btn_write btn_txt01" style="cursor: pointer;" />
				</div>
			</div>
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

board_delete1.jsp

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class DeleteOkAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("DeleteOkAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));
		to.setPassword(request.getParameter("password"));
		
		BoardDAO dao = new BoardDAO();
		int flag = dao.boardDeleteOk(to);
		
		request.setAttribute("flag", flag);
	}

}

DeleteOkAction.java

 

 

 

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

<% 
	int flag = (Integer)request.getAttribute("flag");

	
	
	out.println("<script type='text/javascript'>");
	if(flag == 0){
		out.println("alert('글삭제에 성공했습니다');");
		out.println("location.href='./controller?action=list';");
	}else if(flag == 1){
		out.println("alert('비밀번호가 잘못되었습니다');");
		out.println("history.back();");
	}else{
		// 시스템적 오류부분 경고문
		out.println("alert('글쓰기에 실패했습니다');");
		out.println("history.back();");
	}
	out.println("</script>");
%>

board_delete_ok.jsp

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
잘못된 페이지 요청입니다
</body>
</html>

board_error1.jsp

 

에러상황 발생시 여기로 보내진다

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	response.sendRedirect("./controller?action=write");
%>

index.jsp

 

가장처음 작업시작시 이렇게 write를 들어갈 경로부터 만들어 놓고 시작

 

 


model2 URI 방식

 

URI방식의 기본적인 구조는 파라메터 방식와 유사함

 

URI와 파라메터 방식의 다른점

 

1. 컨트롤러에서의 가져오고 경로지정방식이 다름

2. Action클래스에서의 경로지정이 다름

3. jsp에서의 경로지정이 다름

4. 파라메터는 parameter메서드로 경로를 지정하지만

uri방식은 url로 경로지정

5. 파라메터는 서블릿 맵핑을 ./controller로 받지만

URI방식은 *.do 로 받는다

 


package servlet;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model2.BoardAction;
import model2.DeleteAction;
import model2.DeleteOkAction;
import model2.ListAction;
import model2.ModifyAction;
import model2.ModifyOkAction;
import model2.ViewAction;
import model2.WriteAction;
import model2.WriteOkAction;

/**
 * Servlet implementation class BoardController
 */
@WebServlet("*.do")
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doProcess(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doProcess(request, response);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		try {
			request.setCharacterEncoding("utf-8");
			
			String path = request.getRequestURI().replaceAll(request.getContextPath(), "");
			String url = "/WEB-INF/views/board_error1.jsp";
			BoardAction boardAction = null;
			
			if(path.equals("/") || path.equals("/*.do") || path.equals("/list.do")) {
				boardAction = new ListAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_list1.jsp";
				
			}else if(path.equals("/view.do")) {
				boardAction = new ViewAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_view1.jsp";
				
			}else if(path.equals("/write.do")) {
				boardAction = new WriteAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_write1.jsp";
				
			}else if(path.equals("/write_ok.do")) {
				boardAction = new WriteOkAction();
				boardAction.execute(request, response);
				
				
				url = "/WEB-INF/views/board_write1_ok.jsp";
				
			}else if(path.equals("/modify.do")) {
				boardAction = new ModifyAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_modify1.jsp";
				
			}else if(path.equals("/modify_ok.do")) {
				boardAction = new ModifyOkAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_modify_ok.jsp";
				
			}else if(path.equals("/delete.do")) {
				boardAction = new DeleteAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_delete1.jsp";
				
			}else if(path.equals("/delete_ok.do")) {
				boardAction = new DeleteOkAction();
				boardAction.execute(request, response);
				
				url = "/WEB-INF/views/board_delete_ok.jsp";
				
			}
			
			RequestDispatcher dispatcher = request.getRequestDispatcher(url);
			dispatcher.forward(request, response);
			
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ServletException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

BoardController.java

 

 

package model2;

import java.util.ArrayList;

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

import model1.BoardDAO;
import model1.BoardTO;

public class ListAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("ListAction 호출");
		
		BoardDAO dao = new BoardDAO();
		ArrayList<BoardTO> boardLists = dao.boardList();
		
		request.setAttribute("boardLists", boardLists);
	}

}

ListAction.java

 

기본적으로 DAO, TO를 가져오는건 파라메타방식과 같음

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@ page import="model1.BoardTO" %>
<%@ page import="java.util.ArrayList" %>

<%
	ArrayList<BoardTO> boardLists = (ArrayList<BoardTO>)request.getAttribute( "boardLists" );
	
	int totalRecord = boardLists.size();
	
	StringBuilder sbHtml = new StringBuilder(); 
		
		for(BoardTO to : boardLists ){
			String seq = to.getSeq();
			String subject = to.getSubject();
			String writer = to.getWriter();
			String wdate = to.getWdate();
			String hit = to.getHit();
			int wgap = to.getWgap();
			
			sbHtml.append("<tr>");
			sbHtml.append("<td>&nbsp;</td>");
			sbHtml.append("<td>" + seq + "</td>");
			sbHtml.append("<td class='left'>");
			sbHtml.append("<a href='./view.do?seq=" + seq + "'>" + subject + "</a>&nbsp");
			if(wgap == 0){
				sbHtml.append("<img src='./images/icon_new.gif' alt='NEW'></td>");
			}
			sbHtml.append("<td>" + writer + "</td>");
			sbHtml.append("<td>" + wdate + "</td>");
			sbHtml.append("<td>" + hit + "</td>");
			sbHtml.append("<td>&nbsp;</td>");
			sbHtml.append("</tr>");
		}
%>
	
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<div class="contents_sub">
		<div class="board_top">
			<div class="bold">총 <span class="txt_orange"><%=totalRecord %></span>건</div>
		</div>

		<!--게시판-->
		<div class="board">
			<table>
			<tr>
				<th width="3%">&nbsp;</th>
				<th width="5%">번호</th>
				<th>제목</th>
				<th width="10%">글쓴이</th>
				<th width="17%">등록일</th>
				<th width="5%">조회</th>
				<th width="3%">&nbsp;</th>
			</tr>
<%=sbHtml.toString() %>
<!-- 
			<tr>
				<td>&nbsp;</td>
				<td>1</td>
				<td class="left"><a href="board_view1.jsp">adfas</a>&nbsp;<img src="./images/icon_new.gif" alt="NEW"></td>
				<td>asdfa</td>
				<td>2017-01-31</td>
				<td>6</td>
				<td>&nbsp;</td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td>1</td>
				<td class="left"><a href="board_view1.jsp">adfas</a>&nbsp;<img src="./images/icon_new.gif" alt="NEW"></td>
				<td>asdfa</td>
				<td>2017-01-31</td>
				<td>6</td>
				<td>&nbsp;</td>
			</tr>
 -->
			</table>
		</div>	

		<div class="btn_area">
			<div class="align_right">
				<input type="button" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" onclick="location.href='./write.do'" />
			</div>
		</div>
		<!--//게시판-->
	</div>
</div>
<!--//하단 디자인 -->

</body>
</html>

board_list1.jsp

 

*.do 로 맵칭을 했기때문에

경로는 ./write.do 가 된다

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class ViewAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("ViewAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));
		
		BoardDAO dao = new BoardDAO();
		to = dao.boardView(to);
		
		request.setAttribute("to", to);
	}

}

ViewAction.java

 

 

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@ page import="model1.BoardTO" %>

<%
	BoardTO to = (BoardTO)request.getAttribute("to");
	
	String seq = to.getSeq();
	String subject = to.getSubject();
	String writer = to.getWriter();
	String mail = to.getMail();
	String wip = to.getWip();
	String wdate = to.getWdate();
	String hit = to.getHit();
	String content = to.getContent();
%>
	
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<div class="contents_sub">
		<!--게시판-->
		<div class="board_view">
			<table>
			<tr>
				<th width="10%">제목</th>
				<td width="60%"><%=subject %></td>
				<th width="10%">등록일</th>
				<td width="20%"><%=wdate %></td>
			</tr>
			<tr>
				<th>글쓴이</th>
				<td><%=writer %>(<%=mail %>)(<%=wip %>)</td>
				<th>조회</th>
				<td><%=hit %></td>
			</tr>
			<tr>
				<td colspan="4" height="200" valign="top" style="padding: 20px; line-height: 160%"><%=content %></td>
			</tr>
			</table>
		</div>

		<div class="btn_area">
			<div class="align_left">
				<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./list.do'" />
			</div>
			<div class="align_right">
				<input type="button" value="수정" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./modify.do?seq=<%=seq %>'" />
				<input type="button" value="삭제" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./delete.do?seq=<%=seq %>'" />
				<input type="button" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" onclick="location.href='./write.do'" />
			</div>
		</div>	
		<!--//게시판-->
	</div>
</div>
<!-- 하단 디자인 -->

</body>
</html>

board_view1.jsp

 

 

 

package model2;

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

public class WriteAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("WriteAction 호출");
	}

}

WriteAction.java

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
<script type="text/javascript">
	window.onload = function(){
		document.getElementById('wbtn').onclick = function(){
			//alert('click');
			// 필수 입력 항목검사
			if(document.wfrm.info.checked == false){
				alert('동의하셔야 합니다.');
				return false;
			}
			if(document.wfrm.writer.value.trim() == ''){
				alert('글쓴이를 입력하셔야 합니다');
				return false;
			}
			if(document.wfrm.subject.value.trim() == ''){
				alert('제목을 입력하셔야 합니다');
				return false;
			}
			if(document.wfrm.password.value.trim() == ''){
				alert('비밀번호를 입력하셔야 합니다');
				return false;
			}
			document.wfrm.submit();
		};
	}
</script>
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_menu"></div>
<div class="con_txt">
	<form action="./write_ok.do" method="post" name="wfrm">
		<div class="contents_sub">	
			<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top"><input type="text" name="writer" value="" class="board_view_input_mail" maxlength="5" /></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><input type="text" name="subject" value="" class="board_view_input" /></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				<tr>
					<th>내용</th>
					<td><textarea name="content" class="board_editor_area"></textarea></td>
				</tr>
				<tr>
					<th>이메일</th>
					<td><input type="text" name="mail1" value="" class="board_view_input_mail"/> @ <input type="text" name="mail2" value="" class="board_view_input_mail"/></td>
				</tr>
				</table>
				
				<table>
				<tr>
					<br />
					<td style="text-align:left;border:1px solid #e0e0e0;background-color:f9f9f9;padding:5px">
						<div style="padding-top:7px;padding-bottom:5px;font-weight:bold;padding-left:7px;font-family: Gulim,Tahoma,verdana;">※ 개인정보 수집 및 이용에 관한 안내</div>
						<div style="padding-left:10px;">
							<div style="width:97%;height:95px;font-size:11px;letter-spacing: -0.1em;border:1px solid #c5c5c5;background-color:#fff;padding-left:14px;padding-top:7px;">
								1. 수집 개인정보 항목 : 회사명, 담당자명, 메일 주소, 전화번호, 홈페이지 주소, 팩스번호, 주소 <br />
								2. 개인정보의 수집 및 이용목적 : 제휴신청에 따른 본인확인 및 원활한 의사소통 경로 확보 <br />
								3. 개인정보의 이용기간 : 모든 검토가 완료된 후 3개월간 이용자의 조회를 위하여 보관하며, 이후 해당정보를 지체 없이 파기합니다. <br />
								4. 그 밖의 사항은 개인정보취급방침을 준수합니다.
							</div>
						</div>
						<div style="padding-top:7px;padding-left:5px;padding-bottom:7px;font-family: Gulim,Tahoma,verdana;">
							<input type="checkbox" name="info" value="1" class="input_radio"> 개인정보 수집 및 이용에 대해 동의합니다.
						</div>
					</td>
				</tr>
				</table>
			</div>
			
			<div class="btn_area">
				<div class="align_left">
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./list.do'" />
				</div>
				<div class="align_right">
					<input type="button" id="wbtn" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" />
				</div>
			</div>
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

board_write1.jsp

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class WriteOkAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		// 모든 요청작업 DB작업은 여기서 끝낸다
		System.out.println("WriteOkAction 호출");
		
		// board_write_ok.jsp에서 가져오기
		BoardTO to = new BoardTO();
		to.setSubject(request.getParameter("subject"));
		to.setWriter(request.getParameter("writer"));
		to.setMail("");
		if(!request.getParameter("mail1").equals("") && !request.getParameter("mail2").equals("") ){
			to.setMail(request.getParameter("mail1") + "@" + request.getParameter("mail2"));
		}
		to.setPassword(request.getParameter("password"));
		to.setContent(request.getParameter("content"));
		to.setWip(request.getRemoteAddr());
		
		
		BoardDAO dao = new BoardDAO();
		int flag = dao.boardWriteOk(to);
		
		// 여기서 끝낸 결과를 jsp페이지에 보낸다
		request.setAttribute("flag", flag);
	}

}

WriteOkAction.java

 

 

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

<% 
	int flag = (Integer)request.getAttribute("flag");
	
	out.println("<script type='text/javascript'>");
	
	if(flag == 0){
		//out.println("정상 입력");
		out.println("alert('글쓰기에 성공했습니다');");
		out.println("location.href='./list.do';");
	}else{
		//out.println("비정상 입력");
		out.println("alert('글쓰기에 실패했습니다');");
		out.println("history.back();");
	}
	out.println("</script>");
	
%>

board_write1_ok.jsp

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class ModifyAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("ModifyAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));
		
		BoardDAO dao = new BoardDAO();
		to = dao.boardModify(to);
		
		request.setAttribute("to", to);
		
	}

}

ModifyAction.java

 

 

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

<%@ page import="model1.BoardTO" %>

<%
	BoardTO to = (BoardTO)request.getAttribute("to");
	
	String seq = to.getSeq();
	String subject = to.getSubject();
	String writer = to.getWriter();
	String[] mail = null;
	if(to.getMail().equals("")){
		mail = new String[]{"", ""};
	}else{
		mail = to.getMail().split("@");
	}
	String content = to.getContent();
	
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
<script type="text/javascript">
	window.onload = function(){
		document.getElementById('dbtn').onclick = function(){
			//alert('click');
			if(document.dfrm.password.value.trim() == ''){
				alert('비밀번호를 입력하셔야 합니다');
				return;
			}
			// submit() = form 전송시도할때 발생하는 이벤트
			document.dfrm.submit();
		}
	}
</script>
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<form action="./modify_ok.do" method="post" name="dfrm">
		<input type="hidden" name="seq" value="<%=seq %>" />
		<div class="contents_sub">	
			<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top"><input type="text" name="writer" value="<%=writer %>" class="board_view_input_mail" maxlength="5" readonly/></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><input type="text" name="subject" value="<%=subject %>" class="board_view_input" /></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				<tr>
					<th>내용</th>
					<td><textarea name="content" value="" class="board_editor_area"><%=content %></textarea></td>
				</tr>
				<tr>
					<th>이메일</th>
					<td><input type="text" name="mail1" value="<%=mail[0] %>" class="board_view_input_mail"/> @ <input type="text" name="mail2" value="<%=mail[1] %>" class="board_view_input_mail"/></td>
				</tr>
				</table>
			</div>
			
			<div class="btn_area">
				<div class="align_left">
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./list.do'" />
					<input type="button" value="보기" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./view.do?seq=<%=seq %>'" />
				</div>
				<div class="align_right">
					<input type="button" id="dbtn" value="수정" class="btn_write btn_txt01" style="cursor: pointer;" />
				</div>
			</div>
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

board_modify1.jsp

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class ModifyOkAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("ModifyOkAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));

		to.setMail("");
		if(!request.getParameter("mail1").equals("") && !request.getParameter("mail2").equals("") ){
			to.setMail(request.getParameter("mail1") + "@" + request.getParameter("mail2"));
		}
		
		to.setSubject(request.getParameter("subject"));
		to.setContent(request.getParameter("content"));
		to.setPassword(request.getParameter("password"));
		
		BoardDAO dao = new BoardDAO();
		int flag = dao.boardModifyOk(to);
		
		request.setAttribute("flag", flag);
		request.setAttribute("seq", to.getSeq());
	}

}

ModifyOkAction.java

 

 

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

<% 
	int flag = (Integer)request.getAttribute("flag");
	String seq = (String)request.getAttribute("seq"); 

	
	out.println("<script type='text/javascript'>");
	if(flag == 0){
		out.println("alert('글수정에 성공했습니다');");
		out.println("location.href='./list.do?seq=" + seq + "';");
	}else if(flag == 1){
		out.println("alert('비밀번호가 잘못되었습니다');");
		out.println("history.back();");
	}else{
		// 시스템적 오류부분 경고문
		out.println("alert('글쓰기에 실패했습니다');");
		out.println("history.back();");
	}
	out.println("</script>");
%>

board_modify_ok.jsp

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class DeleteAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("DeleteAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));
		
		BoardDAO dao = new BoardDAO();
		to = dao.boardModify(to);
		
		request.setAttribute("to", to);
	}

}

DeleteAction.java

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@ page import="model1.BoardTO" %>

<%
	BoardTO to = (BoardTO)request.getAttribute("to");
	
	String seq = to.getSeq();
	String subject = to.getSubject();
	String writer = to.getWriter();
	
	
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="./css/board.css">
<script type="text/javascript">
	window.onload = function(){
		document.getElementById('dbtn').onclick = function(){
			//alert('click');
			if(document.dfrm.password.value.trim() == ''){
				alert('비밀번호를 입력하셔야 합니다');
				return;
			}
			document.dfrm.submit();
		}
	}
</script>
</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<form action="./delete_ok.do" method="post" name="dfrm">
		<input type="hidden" name="seq" value="<%=seq %>">
		<div class="contents_sub">	
			<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top"><input type="text" name="writer" value="<%=writer %>" class="board_view_input_mail" maxlength="5" readonly/></td>
				</tr>
				<tr>
					<th>제목</th>
					<td><input type="text" name="subject" value="<%=subject %>" class="board_view_input" readonly/></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				</table>
			</div>
			
			<div class="btn_area">
				<div class="align_left">
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./list.do'" />
					<input type="button" value="보기" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='./view.do?seq=<%=seq %>'" />
				</div>
				<div class="align_right">
					<input type="button" id="dbtn" value="삭제" class="btn_write btn_txt01" style="cursor: pointer;" />
				</div>
			</div>
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

board_delete1.jsp

 

 

 

package model2;

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

import model1.BoardDAO;
import model1.BoardTO;

public class DeleteOkAction implements BoardAction {

	@Override
	public void execute(HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		System.out.println("DeleteOkAction 호출");
		
		BoardTO to = new BoardTO();
		to.setSeq(request.getParameter("seq"));
		to.setPassword(request.getParameter("password"));
		
		BoardDAO dao = new BoardDAO();
		int flag = dao.boardDeleteOk(to);
		
		request.setAttribute("flag", flag);
	}

}

DeleteOkAction.java

 

 

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

<% 
	int flag = (Integer)request.getAttribute("flag");
	
	
	out.println("<script type='text/javascript'>");
	if(flag == 0){
		out.println("alert('글삭제에 성공했습니다');");
		out.println("location.href='./list.do';");
	}else if(flag == 1){
		out.println("alert('비밀번호가 잘못되었습니다');");
		out.println("history.back();");
	}else{
		// 시스템적 오류부분 경고문
		out.println("alert('글쓰기에 실패했습니다');");
		out.println("history.back();");
	}
	out.println("</script>");
%>

board_delete_ok.jsp