Servlet,JSP - 캠핑장관리
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>
댓글남기기