src/controller/CampDAO

package contorller;

import java.io.IOException;

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 model.CampDAO;
import model.CampVO;
import model.FacilityDAO;
import model.StyleDAO;

@WebServlet(value={"/list","/insert","/delete","/read","/update"})
public class Camp extends HttpServlet {
	private static final long serialVersionUID = 1L;
	CampDAO dao = new CampDAO();
	FacilityDAO fdao = new FacilityDAO();
	StyleDAO sdao = new StyleDAO();
       
   
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		RequestDispatcher dis =null;
		
		
		switch(request.getServletPath()) {
		case "/read":
			String cid =request.getParameter("cid");
			String sid =request.getParameter("sid");
			request.setAttribute("allArray", fdao.allList()); //전체시설물목록
			request.setAttribute("sallArray", sdao.allList()); 
			request.setAttribute("vo", dao.read(Integer.parseInt(cid))); //캠핑장목록
			request.setAttribute("farray", fdao.list(Integer.parseInt(cid))); 
			request.setAttribute("sarray", sdao.list(Integer.parseInt(cid)));
			dis=request.getRequestDispatcher("read.jsp");
			dis.forward(request, response);//read.jsp로 이동
			break;
		case "/delete":
			cid = request.getParameter("cid");
			
			
			dao.delete(Integer.parseInt(cid));
			response.sendRedirect("list");
			break;
		case "/list":
			request.setAttribute("array", dao.list()); //list결과를 array에 담아서 list.jsp로 이동한다.
			dis= request.getRequestDispatcher("list.jsp");
			dis.forward(request, response);
			break;
		case "/insert":
			dis= request.getRequestDispatcher("insert.jsp");
			dis.forward(request, response);
			break;
		}
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	      request.setCharacterEncoding("utf-8"); //한글셋팅
	      
	      CampVO vo=new CampVO();
	      vo.setName(request.getParameter("name"));
	      vo.setTel(request.getParameter("tel"));
	      vo.setAddress(request.getParameter("address"));
	      
	      switch(request.getServletPath()) {
	      case "/insert":
	         dao.insert(vo);
	         response.sendRedirect("list");
	         break;
	      case "/update":
	    	 String cid = request.getParameter("cid");
	         vo.setCid(Integer.parseInt(cid));
	         System.out.println(vo.toString());
	   
	         dao.update(vo);
	         response.sendRedirect("list");
	      }
	   }
}

src/controller/Facility

package contorller;

import java.io.IOException;
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 model.FacilityDAO;


@WebServlet(value ={"/fdelete", "/finsert"})
public class Facility extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	FacilityDAO dao = new FacilityDAO();

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		switch(request.getServletPath()) {
		case "/fdelete":
			int cid = Integer.parseInt(request.getParameter("cid"));
			int fid = Integer.parseInt(request.getParameter("fid"));
			dao.delete(cid, fid);
			response.sendRedirect("read?cid=" +cid);
			break;
		case "/finsert":
			 cid = Integer.parseInt(request.getParameter("cid"));
			 fid = Integer.parseInt(request.getParameter("fid"));
			dao.insert(cid, fid);
			response.sendRedirect("read?cid=" +cid);
			break;
		}
		
	}
}

src/controller/Style

package contorller;

import java.io.IOException;
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 model.FacilityDAO;
import model.StyleDAO;

@WebServlet(value ={"/sdelete", "/sinsert"})
public class Style extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	StyleDAO dao = new StyleDAO();
      
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		switch(request.getServletPath()) {
		case "/sdelete":
			int cid = Integer.parseInt(request.getParameter("cid"));
			int fid = Integer.parseInt(request.getParameter("sid"));
			dao.delete(cid, fid);
			response.sendRedirect("read?cid=" +cid);
			break;
		case "/sinsert":
			 cid = Integer.parseInt(request.getParameter("cid"));
			 fid = Integer.parseInt(request.getParameter("sid"));
			dao.insert(cid, fid);
			response.sendRedirect("read?cid=" +cid);
			break;
		}
	}
}

src/model/Database

package model;
import java.sql.*;

public class Database {
	public static Connection CON;
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			CON=DriverManager.getConnection("jdbc:mysql://localhost:3306/campdb","camp","pass");
		}catch(Exception e) { 
			System.out.println("접속실패:" + e.toString()); 
		}
	 }
}

src/model/Campvo

package model;

public class CampVO {
	private int cid;
	private String name;
	private String tel;
	private String address;
	
	public int getCid() {
		return cid;
	}
	public void setCid(int cid) {
		this.cid = cid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	
	@Override
	public String toString() {
		return "CampVO [cid=" + cid + ", name=" + name + ", tel=" + tel + ", address=" + address + "]";
	}
}

src/model/CampDAO

package model;

import java.sql.*;
import java.util.*;

public class CampDAO {
	
	//캠핑장정보 수정
	   public void update(CampVO vo) {
	      try {
	         String sql="update tbl_camp set name=?,tel=?,address=? where cid=?";
	         PreparedStatement ps=Database.CON.prepareStatement(sql);
	         ps.setString(1, vo.getName());
	         ps.setString(2, vo.getTel());
	         ps.setString(3, vo.getAddress());
	         ps.setInt(4, vo.getCid());
	         ps.execute();
	      }catch(Exception e) {
	         System.out.println("update:" + e.toString());
	      }
	   }
	
	//캠핑장정보읽기
	public CampVO read(int cid){
		CampVO vo = new CampVO();
		try {
			String sql = "select * from tbl_camp where cid=?";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ps.setInt(1, cid);
			ResultSet rs = ps.executeQuery();
			if(rs.next()) {
				vo.setCid(rs.getInt("cid"));
				vo.setName(rs.getString("name"));
				vo.setTel(rs.getString("tel"));
				vo.setAddress(rs.getString("address"));
				System.out.println(vo.toString());
			}
			
		}catch (Exception e) {
			System.out.println("read : "+e.toString());
		}
		return vo;
	}
	
	//캠핑장 삭제 
	public void delete(int cid) {
		try {
			String sql ="delete from tbl_camp where cid=?";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ps.setInt(1, cid);
			ps.execute();
		}catch (Exception e) {
			System.out.println("delete: "+e.toString());
		}
	}
	
	//캠핑장등록
	public void insert(CampVO vo) {
		try {
			String sql ="insert into tbl_camp(name,tel,address) values(?,?,?)";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ps.setString(1, vo.getName());
			ps.setString(2, vo.getTel());
			ps.setString(3, vo.getAddress());
			ps.execute();
			
		}catch (Exception e) {
			System.out.println("list : "+e.toString());
		}
	}
	
	//캠핑장목록
	public ArrayList<CampVO> list(){
		ArrayList<CampVO> array = new ArrayList<CampVO>();
		try {
			String sql = "select * from tbl_camp order by cid desc";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			
			while(rs.next()) {
				CampVO vo = new CampVO();
				vo.setCid(rs.getInt("cid"));
				vo.setName(rs.getString("name"));
				vo.setTel(rs.getString("tel"));
				vo.setAddress(rs.getString("address"));
				System.out.println(vo.toString());
				array.add(vo);
			}
			
		}catch (Exception e) {
			System.out.println("list : "+e.toString());
		}
		return array;
	}
}

src/model/NameVO

package model;

public class NameVO {
	private int id;
	private String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	@Override
	public String toString() {
		return "NameVO [id=" + id + ", name=" + name + "]";
	}	
}

src/model/FacilityDAO

package model;

import java.util.*;
import java.sql.*;

public class FacilityDAO {
	
	//시설물등록 
	public void insert(int cid, int fid) {
		try {
			String sql ="insert into tbl_camp_facility(cid,fid) values(?,?)";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ps.setInt(1, cid);
			ps.setInt(2, fid);
			ps.execute();
		}catch(Exception e) {
			System.out.println("Facility insert"+e.toString());
		}
	}
	
	//전체시설물 목록
	public ArrayList<NameVO> allList(){
		ArrayList<NameVO> array = new ArrayList<NameVO>();
		try {
			String sql ="select * from tbl_facility";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				NameVO vo = new NameVO();
				vo.setId(rs.getInt("fid"));
				vo.setName(rs.getString("name"));
				System.out.println(vo.toString());
				System.out.println(vo.toString());
				array.add(vo);
			}
		}catch(Exception e) {
			System.out.println("Facility all list"+e.toString());
		}
		return array;
	}
	
	//특정캠핑장의 시설물 삭제
	public void delete(int cid, int fid) {
		try {
			String sql ="delete from tbl_camp_facility where cid=? and fid=?";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ps.setInt(1, cid);
			ps.setInt(2, fid);
			ps.execute();
		}catch(Exception e) {
			System.out.println("Facility delete"+e.toString());
		}
	}
	
	//특정캠핑장의 시설물 목록
	public ArrayList<NameVO> list(int cid){
		ArrayList<NameVO> array=new ArrayList<NameVO>();
		try {
			String sql ="select c.*, f.name ";
			 		sql+= "from tbl_camp_facility c, tbl_facility f ";
					sql+= "where c.fid=f.fid and c.cid=?";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ps.setInt(1, cid);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				NameVO vo = new NameVO();
				vo.setId(rs.getInt("fid"));
				vo.setName(rs.getString("name"));
				System.out.println(vo.toString());
				array.add(vo);
			}
		}catch(Exception e) {
			System.out.println("Facility list"+e.toString());
		}
		return array;
	}
}

FacilityDAO와 StyleDAO 는 비슷하다.

src/model/StyleDAO

package model;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class StyleDAO {
	//스타일등록 
		public void insert(int cid, int sid) {
			try {
				String sql ="insert into tbl_camp_style(cid,sid) values(?,?)";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ps.setInt(1, cid);
				ps.setInt(2, sid);
				ps.execute();
			}catch(Exception e) {
				System.out.println("Style insert"+e.toString());
			}
		}
		
		//전체스타일 목록
		public ArrayList<NameVO> allList(){
			ArrayList<NameVO> array = new ArrayList<NameVO>();
			try {
				String sql ="select * from tbl_style";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ResultSet rs = ps.executeQuery();
				while(rs.next()) {
					NameVO vo = new NameVO();
					vo.setId(rs.getInt("sid"));
					vo.setName(rs.getString("name"));
					System.out.println(vo.toString());
					System.out.println(vo.toString());
					array.add(vo);
				}
			}catch(Exception e) {
				System.out.println("Style allList"+e.toString());
			}
			return array;
		}
		
		//특정캠핑장의 스타일 삭제
		public void delete(int cid, int sid) {
			try {
				String sql ="delete from tbl_camp_style where cid=? and sid=?";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ps.setInt(1, cid);
				ps.setInt(2, sid);
				ps.execute();
			}catch(Exception e) {
				System.out.println("Style delete"+e.toString());
			}
		}
		
		//특정캠핑장의 스타일 목록
		public ArrayList<NameVO> list(int cid){
			ArrayList<NameVO> array=new ArrayList<NameVO>();
			try {
				String sql ="select c.*, s.name ";
				 		sql+= "from tbl_camp_style c, tbl_style s ";
						sql+= "where c.sid=s.sid and c.cid=?";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ps.setInt(1, cid);
				ResultSet rs = ps.executeQuery();
				while(rs.next()) {
					NameVO vo = new NameVO();
					vo.setId(rs.getInt("sid"));
					vo.setName(rs.getString("name"));
					System.out.println(vo.toString());
					array.add(vo);
				}
			}catch(Exception e) {
				System.out.println("Style list"+e.toString());
			}
			return array;
		}
}

WebContent/insert

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>캠핑장등록</title>
</head>
<body>
	<h1>캠핑장등록</h1>
	<a href="list">캠핑장목록</a>
	<br>
	<form action = "insert" method="post" name ="frm">
		이름 : <input type ="text" name ="name" placeholder="이름">
		<hr/>
		전화 : <input type ="text" name ="tel" placeholder="전화">
		<hr/>
		주소 : <input type="text" name ="address" placeholder="주소">
		<hr/>
		<input type ="submit" value ="캠핑장등록">
		<input type ="reset" value ="등록취소">
	</form>
	
</body>
<script>
	$(frm).on("submit", function(e){
		e.preventDefault();
		var name = $(frm.name).val();
		var tel = $(frm.tel).val();
		var address = $(frm.address).val();
		if(name ==""){
			alert("이름을 입력하세요!");
			$(frm.name).focus();
		}else if (tel ==""){
			alert("전화번호를 입력하세요!");
			$(frm.tel).focus();
		}else if (tel ==""){
			alert("주소를 입력하세요!");
			$(frm.address).focus();
		}else {
			if(!confirm("새로운 캠핑장을 등록하실래요?")) return;
			frm.submit();
		}
	});
	
</script>
</html>

등록

WebContent/list

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>캠핑장목록</title>
</head>
<body>	<h1>캠핑장목록</h1>
	<a href="insert">캠핑장등록</a>
	<table border =1 id ="tbl">
		<c:forEach items="${array}" var="vo">
		<tr>
			<td width =50>${vo.cid}</td>
			<td width =200><a href="read?cid=${vo.cid}">${vo.name}</a></td>
			<td width =150>${vo.tel}</td>
			<td width =400>${vo.address}</td>
			<td><button cid ="${vo.cid}">삭제</button></td>
		</tr>
		</c:forEach>
	</table>' 
<script>
	$("#tbl").on("click","button", function(){
		var cid =$(this).attr("cid");
		if(!confirm(cid + "을(를) 삭제하실래요?")) return;
		location.href="delete?cid="+cid;
		
	});
</script>
</html>

목록

WebContent/read

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>캠핑장정보</title>
	<script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
	<h1>캠핑장정보</h1>
	<a href="list">캠핑장목록</a>
	<br>
	<form  name ="frm" action="update" method="post">
	
		번호 : <input type ="text" name ="cid" value="${vo.cid}" readonly>
		<hr/>
		이름 : <input type ="text" name ="name" value="${vo.name}">
		<hr/>
		전화 : <input type ="text" name ="tel" value="${vo.tel}">
		<hr/>
		주소 : <input type="text" name ="address" value="${vo.address}">
		<hr/>
		<input type ="submit" value ="캠핑장수정">
		<input type ="reset" value ="등록취소">
	</form>
	<hr/>
	<h2>${vo.name} 캠핑장의 시설물 목록</h2>
	<div>
		<select id ="fid">
			<c:forEach items="${allArray}" var ="vo">
			<option value ="${vo.id}">${vo.name}</option>
			</c:forEach>
		</select>
		<button id ="finsert">시설물등록</button>
	</div>
	<hr/>
	<div id="facility">
		<c:forEach items="${farray}" var ="vo">
			<span>
			${vo.name} <button fid = "${vo.id}">삭제</button></span>
		</c:forEach>
	</div>
	<h2>${vo.name} 캠핑장의 스타일 목록</h2>
	<hr>
	<div>
		<select id ="sid">
			<c:forEach items="${sallArray}" var ="vo">
			<option value ="${vo.id}">${vo.name}</option>
			</c:forEach>
		</select>
		<button id ="sinsert">스타일등록</button>
	</div>
	<hr/>
	<div id="style">
		<c:forEach items="${sarray}" var ="vo">
			<span>
			${vo.name} <button sid = "${vo.id}">삭제</button></span>
		</c:forEach>
	</div>
</body>
<script>

	var cid = ${vo.cid};
	
	$("#finsert").on("click",function(){
		var fid =$("#fid").val();
		if(!confirm(cid + ":" +fid + "을(를) 등록하실래요?")) return;
		location.href="finsert?cid="+cid+"&fid="+fid;
	})
	
	$("#facility").on("click","button", function(){
		var fid =$(this).attr("fid");
		if(!confirm(cid + ":"+fid+"을(를) 삭제할래요?")) return;
		location.href="fdelete?cid="+cid+"&fid="+fid;
	})
	//////////////////////////////////////////////////////////////////////////// 밑은 스타일등록
	$("#sinsert").on("click",function(){
		var sid =$("#sid").val();
		if(!confirm(cid + ":" +sid + "을(를) 등록하실래요?")) return;
		location.href="sinsert?cid="+cid+"&sid="+sid;
	})
	
	$("#style").on("click","button", function(){
		var sid =$(this).attr("sid");
		if(!confirm(cid + ":"+sid+"을(를) 삭제할래요?")) return;
		location.href="sdelete?cid="+cid+"&sid="+sid;
	})

	$(frm).on("submit", function(e){
		e.preventDefault();
		var name = $(frm.name).val();
		var tel = $(frm.tel).val();
		var address = $(frm.address).val();
		if(name ==""){
			alert("이름을 입력하세요!");
			$(frm.name).focus();
		}else if (tel ==""){
			alert("전화번호를 입력하세요!");
			$(frm.tel).focus();
		}else if (tel ==""){
			alert("주소를 입력하세요!");
			$(frm.address).focus();
		}else {
			if(!confirm("캠핑장 정보를 수정하실래요?")) return;
			frm.submit();
		}
	});
</script>
</html>

정보

댓글남기기