단순게시판
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에서 썼던것들을 그대로 가져왔다

파라메터 방식으로 연결
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> </td>");
sbHtml.append("<td>" + seq + "</td>");
sbHtml.append("<td class='left'>");
sbHtml.append("<a href='./controller?action=view&seq=" + seq + "'>" + subject + "</a> ");
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> </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 > 게시판 > <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%"> </th>
<th width="5%">번호</th>
<th>제목</th>
<th width="10%">글쓴이</th>
<th width="17%">등록일</th>
<th width="5%">조회</th>
<th width="3%"> </th>
</tr>
<%=sbHtml.toString() %>
<!--
<tr>
<td> </td>
<td>1</td>
<td class="left"><a href="board_view1.jsp">adfas</a> <img src="./images/icon_new.gif" alt="NEW"></td>
<td>asdfa</td>
<td>2017-01-31</td>
<td>6</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>1</td>
<td class="left"><a href="board_view1.jsp">adfas</a> <img src="./images/icon_new.gif" alt="NEW"></td>
<td>asdfa</td>
<td>2017-01-31</td>
<td>6</td>
<td> </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 > 게시판 > <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 > 게시판 > <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 > 게시판 > <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 > 게시판 > <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> </td>");
sbHtml.append("<td>" + seq + "</td>");
sbHtml.append("<td class='left'>");
sbHtml.append("<a href='./view.do?seq=" + seq + "'>" + subject + "</a> ");
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> </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 > 게시판 > <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%"> </th>
<th width="5%">번호</th>
<th>제목</th>
<th width="10%">글쓴이</th>
<th width="17%">등록일</th>
<th width="5%">조회</th>
<th width="3%"> </th>
</tr>
<%=sbHtml.toString() %>
<!--
<tr>
<td> </td>
<td>1</td>
<td class="left"><a href="board_view1.jsp">adfas</a> <img src="./images/icon_new.gif" alt="NEW"></td>
<td>asdfa</td>
<td>2017-01-31</td>
<td>6</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>1</td>
<td class="left"><a href="board_view1.jsp">adfas</a> <img src="./images/icon_new.gif" alt="NEW"></td>
<td>asdfa</td>
<td>2017-01-31</td>
<td>6</td>
<td> </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 > 게시판 > <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 > 게시판 > <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 > 게시판 > <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 > 게시판 > <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