본문 바로가기
ICIA 수업일지

2021.09.01 수업일지(Servlet, Mysql, pl/sql, Template)

by 주성씨 2021. 9. 1.

- pl/sql

- list

CREATE DEFINER=`haksa`@`localhost` PROCEDURE `list`(
in i_table nvarchar(1000),
in i_key nvarchar(50),
in i_word nvarchar(50),
in i_order nvarchar(50),
in i_desc nvarchar(5),
in i_page int,
in i_perPage int
)
BEGIN
set @v_word = concat('%',i_word,'%');
set @v_order = concat(i_order,' ',i_desc);
set @v_start=concat(i_page-1)*i_perPage;
set @v_perPage=i_perPage;
set @v_sql=concat('select * from ',i_table,' where ',i_key,' like ? order by ',@v_order,' limit ?,?');
prepare ps from @v_sql;
execute ps using @v_word, @v_start, @v_perPage;

set @v_sql=concat('select count(*) from ',i_table,' where ',i_key,' like ?');
prepare ps from @v_sql;
execute ps using @v_word;
END

 

- 강좌정보를 누르면 페이지로 이동하는 작업을 해주겠다.

- list.jsp

{{#each array}}
<tr class="row">
	<td>{{lcode}}</td>
	<td>{{lname}}</td>
	<td>{{hours}}</td>
	<td>{{room}}</td>
	<td>{{pname}}</td>
	<td>{{persons}}</td>
	<td>{{capacity}}</td>
	<td><button onClick="location.href='/course/read?lcode={{lcode}}'">강좌정보</button></td>
</tr>
{{/each}}

 

- create new course\read.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsp/jstl/functions"%>
<style>
.title {
	background: rgb(53, 120, 196);
	color: white;
	text-align: center;
}
</style>
<h1>강좌정보</h1>
<form name="frm">
	<table>
		<tr>
			<td class="title" width=100>강좌번호</td>
			<td width=100><input name="lcode" value="" size=3 readonly/></td>
			<td class="title" width=100>강의실</td>
			<td width=100><input name="room" value="" size=3 /></td>
			<td class="title" width=100>강의시수</td>
			<td width=100><input name="hours" value="" size=3/></td>
		</tr>
		<tr>
			<td class="title" width=100>강좌이름</td>
			<td colspan="3"><input name="lname" value="" size=5 /></td>
			<td class="title" width=100>최대수강인원</td>
			<td width=100><input name="capacity" value="" size=3 /></td>
		</tr>
		<tr>
			<td class="title" width=100>담당교수</td>
			<td colspan="3">
			<input name="pcode" value="" size=5 />&nbsp;
			<input name="pname" value="" size=5 />
			</td>
			<td class="title" width=100>수강신청인원</td>
			<td width=100><input name="persons" value="" size=3 /></td>
		</tr>
	</table>
	<div style="text-align: center; margin-top:10px;">
		<input type="submit" value="정보수정" />
		<input type="reset" value="수정취소" />
	</div>
</form>

<script>
	$(frm).on('submit',function(e){
		e.preventDefault();
		if(!confirm("수정하시겠습니까?"))return;
		
		frm.action="/course/update";
		frm.method="post";
		frm.submit();
		
	});
</script>

 

- couservlet.java

@WebServlet(value = { "/course/list", "/course/insert", "/course/read", "/course/update" })
public class CouServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	CouDAO dao = new CouDAO();

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		switch (request.getServletPath()) {
		case "/course/read":
			RequestDispatcher dis = request.getRequestDispatcher("/main.jsp");
			request.setAttribute("pageName", "/course/read.jsp");
			dis.forward(request, response);
			break;

 

출력물

 

- 강좌 정보를 불러오는 dao를 만들겠다.

- 우선 pname을 가지고 와야하니 couVO 가 proVO를 상속하도록 하겠다.

- CouVO

public class CouVO extends ProVO{
	private String lcode;
	private String lname;
	private int hours;
	private String room;
	private int capacity;
	private int persons;
	private String instructor;

 

- CouDAO

	// 4. 강좌 정보를 불러오는 메서드
	public CouVO read(String lcode) {
		CouVO vo = new CouVO();
		try {
			String sql = "select * from view_cou where lcode=?";
			PreparedStatement ps = Database.CON.prepareStatement(sql);
			ps.setString(1, lcode);
			ResultSet rs = ps.executeQuery();
			if (rs.next()) {
				vo.setLcode(rs.getString("lcode"));
				vo.setLname(rs.getString("lname"));
				vo.setHours(rs.getInt("hours"));
				vo.setRoom(rs.getString("room"));
				vo.setInstructor(rs.getString("instructor"));
				vo.setPname(rs.getString("pname"));
				vo.setCapacity(rs.getInt("capacity"));
				vo.setPersons(rs.getInt("persons"));
			}
		} catch (Exception e) {
			System.out.println("CouVO read : " + e.toString());
		}

		return vo;
	}

 

- CouServlet

@WebServlet(value = { "/course/list", "/course/insert", "/course/read", "/course/update" })
public class CouServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	CouDAO dao = new CouDAO();

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		switch (request.getServletPath()) {
		case "/course/read":
			RequestDispatcher dis = request.getRequestDispatcher("/main.jsp");
			request.setAttribute("pageName", "/course/read.jsp");
			request.setAttribute("vo", dao.read(request.getParameter("lcode")));
			dis.forward(request, response);
			break;

 

- read.jsp

<form name="frm">
	<table>
		<tr>
			<td class="title" width=100>강좌번호</td>
			<td width=150><input name="lcode" value="${vo.lcode}" size=5 readonly/></td>
			<td class="title" width=100>강의실</td>
			<td width=150><input name="room" value="${vo.room}" size=5 /></td>
			<td class="title" width=100>강의시수</td>
			<td width=150><input name="hours" value="${vo.hours}" size=5/></td>
		</tr>
		<tr>
			<td class="title" width=100>강좌이름</td>
			<td colspan="3"><input name="lname" value="${vo.lname}" size=60 /></td>
			<td class="title" width=100>최대수강인원</td>
			<td width=100><input name="capacity" value="${vo.capacity}" size=5 /></td>
		</tr>
		<tr>
			<td class="title" width=100>담당교수</td>
			<td colspan="3">
			<input name="pcode" value="${vo.instructor}" size=5 />&nbsp;
			<input name="pname" value="${vo.pname}" size=5 />
			</td>
			<td class="title" width=100>수강신청인원</td>
			<td width=100><input name="persons" value="${vo.persons}" size=5 /></td>
		</tr>
	</table>
	<div style="text-align: center; margin-top:10px;">
		<input type="submit" value="정보수정" />
		<input type="reset" value="수정취소" />
	</div>
</form>

 

출력물

 

- pcode 클릭시 search.jsp 가 팝업되는걸로 하자.

	$(frm.pcode).on(
			'click',
			function() {
				window.open("/professor/search.jsp", "advisor",
						"width=500, height=350,top=200,left=900");
			})

 

출력물

 

- 강좌 수정하는 메서드를 만들겠다.

- CouDAO

	// 5. 강좌 수정하는 메서드
	public void update(CouVO vo){
		try {
			String sql = "update courses set lname=?, room=?, capacity=?, hours=?, instructor=? where lcode=?";
			PreparedStatement ps= Database.CON.prepareStatement(sql);
			ps.setString(1, vo.getLname());
			ps.setString(2, vo.getRoom());
			ps.setInt(3, vo.getCapacity());
			ps.setInt(4, vo.getHours());
			ps.setString(5, vo.getInstructor());
			ps.setString(6, vo.getLcode());
			ps.execute();
		} catch (Exception e) {
			System.out.println("CouDAO update : "+e.toString());
		}
	}

 

- CouServlet

		case "/course/update":
			dao.update(vo);
			response.sendRedirect("/course/list");
			break;
		}

 

출력물

 

- 이제 수정하는 것은 완료되었다.

위와 같이 담당강좌, 담당학생이 교수정보란에 나오도록 하겠다.

 

- 특정 교수가 담당하는 목록을 불러오는 메서드를 생성하겠다.

- ProDAO.java

	// 6. 특정 교수가 담당하는 목록 불러오는 메서드
	public JSONObject cou_list(String pcode){
		JSONObject object = new JSONObject();
		try {
			String sql = "select * from courses where instructor=?";
			PreparedStatement ps = Database.CON.prepareStatement(sql);
			ps.setString(1, pcode);
			ResultSet rs = ps.executeQuery();
			JSONArray array = new JSONArray();
			while(rs.next()){
				JSONObject obj = new JSONObject();
				obj.put("lcode", rs.getString("lcode"));
				obj.put("lname", rs.getString("lname"));
				obj.put("hours", rs.getInt("hours"));
				obj.put("room", rs.getString("room"));
				obj.put("instructor", rs.getString("instructor"));
				obj.put("capacity", rs.getInt("capacity"));
				obj.put("persons", rs.getInt("persons"));
				array.add(obj);
			}
			object.put("array", array);
		} catch (Exception e) {
			System.out.println("ProDAO cou_list : "+e.toString());
		}
		return object;
	}

 

- 이 메서드를 출력하는 .json servlet을 checkServlet에서 하겠다.

- CheckServlet.java

@WebServlet(value={"/check_lcode","/pro_cou_list.json"})
public class CheckServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		CouDAO cdao = new CouDAO();
		ProDAO pdao = new ProDAO(); // new
		switch (request.getServletPath()) { // new
		case "/check_lcode":
			out.println(cdao.check(request.getParameter("lcode")));
			break;
		case "/pro_cou_list.json": // new
			out.println(pdao.cou_list(request.getParameter("pcode")));
			break;
		}
	}

 

제대로 되었다면 위와 같이 확인이 가능하다.

 

- 이제 json 데이터를 ajax으로 불러와 출려해보도록 하겠다.

<h1>담당강좌</h1>
<table id="ctbl"></table>
<script id="ctemp" type="text/x-handlebars-template">
<tr class="title">
	<th width=80>강좌번호</th>
	<th width=200>강좌이름</th>
	<th width=80>강의실</th>
	<th width=80>강의시수</th>
	<th width=80>최대수강인원</th>
	<th width=80>수강신청</th>
	<th width=80>강좌정보</th>
</tr>
{{#each array}}
<tr class="row">
	<td>{{lcode}}</td>
	<td>{{lname}}</td>
	<td>{{room}}</td>
	<td>{{hours}}</td>
	<td>{{capacity}}</td>
	<td>{{persons}}</td>
	<td><button>강좌정보</button></td>
</tr>
{{/each}}
</script>
<script>
	// 담당광좌목록 출력
	var pcode = "${vo.pcode}";
	$.ajax({
		type : 'get',
		url : '/pro_cou_list.json',
		dataType : 'json',
		data : {
			"pcode" : pcode
		},
		success : function(data) {
			var temp = Handlebars.compile($('#ctemp').html());
			$('#ctbl').html(temp(data));
		}
	})

	$(frm).on('submit', function(e) {
		e.preventDefault();
		if (!confirm("수정하시겠습니까?"))
			return;

		frm.action = "/professor/update";
		frm.method = "post";
		frm.submit();

	});
</script>

 

출력물

 

- 담당학생, 지도학생을 교수정보에 출력해보도록 하겠다.

- ProDAO 에 특정교수가 담당하는 학생 목록을 출력하는 메서드를 가지고 오겠다.

- ProDAO

	// 7. 특정 교수가 담당하는 학생 목록 불러오는 메서드
	public JSONObject stu_list(String pcode){
		JSONObject object = new JSONObject();
		try {
			String sql = "select * from students where advisor=?";
			PreparedStatement ps = Database.CON.prepareStatement(sql);
			ps.setString(1, pcode);
			ResultSet rs = ps.executeQuery();
			JSONArray array = new JSONArray();
			while(rs.next()){
				JSONObject obj = new JSONObject();
				obj.put("lcode", rs.getString("scode"));
				obj.put("sname", rs.getString("sname"));
				obj.put("dept", rs.getString("dept"));
				obj.put("year", rs.getInt("year"));
				obj.put("birthday", rs.getString("birthday"));
				array.add(obj);
			}
			object.put("array", array);
		} catch (Exception e) {
			System.out.println("ProDAO stu_list : "+e.toString());
		}
		return object;
	}

 

- CheckServlet

@WebServlet(value={"/check_lcode","/pro_cou_list.json","/pro_stu_list.json"})
public class CheckServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		CouDAO cdao = new CouDAO();
		ProDAO pdao = new ProDAO();
		switch (request.getServletPath()) {
		case "/check_lcode":
			out.println(cdao.check(request.getParameter("lcode")));
			break;
		case "/pro_cou_list.json":
			out.println(pdao.cou_list(request.getParameter("pcode")));
			break;
		case "/pro_stu_list.json": // new
			out.println(pdao.stu_list(request.getParameter("pcode")));
			break;
		}
	}

 

출력물

 

- 학생정보란에서 수강신청하는 section을 만들겠다.

- 강좌 목록을 출력하는 메서드를 생성하겠다.

- CouDAO.java

	// 6. 강좌 목록 출력하는 메서드
	public ArrayList<CouVO> all_list(){
		ArrayList<CouVO> list = new ArrayList<CouVO>();
		try {
			String sql = "select * from view_cou order by lname";
			PreparedStatement ps = Database.CON.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				CouVO vo = new CouVO();
				vo.setLcode(rs.getString("lcode"));
				vo.setLname(rs.getString("lname"));
				vo.setPname(rs.getString("pname"));
				list.add(vo);
			}
		} catch (Exception e) {
			System.out.println("CouDAO all_list : "+e.toString());
		}
		return list;
	}

 

- 학생 서블릿에서 학생정보란에 불러올 수 있도록 하겠다.

- Stuservlet

@WebServlet(value = { "/student/list", "/student/insert","/student/read","/student/update" })
public class StuServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	StuDAO dao = new StuDAO();
	CouDAO cdao = new CouDAO();
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		switch (request.getServletPath()) {
		case "/student/read":
			RequestDispatcher dis = request.getRequestDispatcher("/main.jsp");
			request.setAttribute("pageName", "/student/read.jsp");
			request.setAttribute("vo", dao.read(request.getParameter("scode")));
			request.setAttribute("list", cdao.all_list()); // new
			dis.forward(request, response);
			break;

 

- student\read.jsp

- list에 담은 vo 값을 read page에 출력하도록 하겠다.

<h1>수강신청</h1>
<div>
	<table>
		<tr>
			<td class="title" width=100 height=25>수강신청과목</td>
			<td width=640>
			<select id="lcode">
					<c:forEach items="${list}" var="vo">
						<option value="${vo.lcode}">${vo.lcode}/${vo.lname}/
							${vo.pname}</option>
					</c:forEach>
			</select>
			<button>수강취소</button>
			</td>
		</tr>
	</table>
</div>

 

출력물

 

- sql

create view view_enroll_cou as
select e.scode, e.edate, e.grade, c.* ,pname
from enrollments e, courses c, professors p
where e.lcode=c.lcode and pcode=instructor ;

 

- StuDAO.java

	// 6. 특정 학생이 신청한 강좌목록
	public JSONObject enroll_cou(String scode){
		JSONObject object = new JSONObject();
		try {
			String sql = "select * from view_enroll_cou where scode=?";
			PreparedStatement ps = Database.CON.prepareStatement(sql);
			ps.setString(1, scode);
			ResultSet rs = ps.executeQuery();
			JSONArray array = new JSONArray();
			while(rs.next()){
				JSONObject obj = new JSONObject();
				obj.put("lcode", rs.getString("lcode"));
				obj.put("lname", rs.getString("lname"));
				obj.put("edate", rs.getString("edate"));
				obj.put("pname", rs.getString("pname"));
				obj.put("room", rs.getString("room"));
				obj.put("persons", rs.getString("persons"));
				obj.put("hours", rs.getInt("hours"));
				array.add(obj);
			}
			object.put("array",array);
		} catch (Exception e) {
			System.out.println("StuDAO enroll_cou : "+e.toString());
		}
		return object;
	}

 

- checkservlet.java

@WebServlet(value={"/stu_enroll_list.json","/check_lcode","/pro_cou_list.json","/pro_stu_list.json"})
public class CheckServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		CouDAO cdao = new CouDAO();
		ProDAO pdao = new ProDAO();
		StuDAO sdao = new StuDAO();
		switch (request.getServletPath()) {
		case "/stu_enroll_list.json":
			out.println(sdao.enroll_cou(request.getParameter("scode")));
			break;

 

-read.jsp

<h1>수강신청</h1>
	<table>
		<tr>
			<td class="title" width=100 height=25>수강신청과목</td>
			<td width=640>
			<select id="lcode">
					<c:forEach items="${list}" var="vo">
						<option value="${vo.lcode}">${vo.lcode}/${vo.lname}/
							${vo.pname}</option>
					</c:forEach>
			</select>
			<button>수강신청</button>
			</td>
		</tr>
	</table>
	<table id="stbl"></table>
	<script id="stemp" type="text/x-handlebars-template">
	<tr class="title">
		<th width=70>강좌번호</th>
		<th width=190>강좌이름</th>
		<th width=100>수강신청일</th>
		<th width=70>담당교수</th>
		<th width=70>강의시수</th>
		<th width=70>수강인원</th>
		<th width=70>수강취소</th>
	</tr>
	{{#each array}}
	<tr class="row">
		<td>{{lcode}}</td>
		<td>{{lname}}</td>
		<td>{{edate}}</td>
		<td>{{pname}}</td>
		<td>{{hours}}</td>
		<td>{{persons}}</td>
		<td><button>수강취소</button></td>
	</tr>
	{{/each}}
</script>
<script>
	var scode="${vo.scode}";
	$.ajax({
		type:'get',
		url:'/stu_enroll_list.json',
		data:{
			'scode':scode
		},
		dataType:'json',
		success:function(data){
			var temp = Handlebars.compile($('#stemp').html());
			$('#stbl').html(temp(data));
		}
	})

 

출력물

 

- 이미 수강신청된 과목은 안되고, 수강신청되면 수강인원 늘어나고(update), 수강신청이 되면 수강신청 란에 넣어주도록(insert) 하겠다.

- 이를 위해 stored procudure 을 이용하겠다.

- pl/sql

CREATE DEFINER=`haksa`@`localhost` PROCEDURE `enroll`(
in i_scode nchar(8),
in i_lcode nchar(4),
out o_count int
)
BEGIN
select count(*) into o_count from enrollments
where scode=i_scode and lcode=i_lcode;
IF (o_count=0)THEN
	INSERT INTO enrollments(scode,lcode,edate,grade)
    VALUES(i_scode,i_lcode,now(),0);

UPDATE courses SET persons=persons+1 WHERE lcode=i_lcode;

END IF;
END

 

- 수강신청을 위한 메서드를 생성하겠다.

- StuDAO.java

	// 7. 수강신청을 위한 메서드
	public int enroll(String lcode, String scode){
		int count =0;
		try {
			String sql ="call enroll(?,?,?)";
			CallableStatement cs = Database.CON.prepareCall(sql);
			cs.setString(1, scode);
			cs.setString(2, lcode);
			cs.registerOutParameter(3, java.sql.Types.INTEGER);
			cs.execute();
			count = cs.getInt(3);
		} catch (Exception e) {
			System.out.println("StuDAO enroll : "+e.toString());
		}
		return count;
	}

 

- checkservlet.java

@WebServlet(value={"/enroll","/stu_enroll_list.json","/check_lcode","/pro_cou_list.json","/pro_stu_list.json"})
public class CheckServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		CouDAO cdao = new CouDAO();
		ProDAO pdao = new ProDAO();
		StuDAO sdao = new StuDAO();
		switch (request.getServletPath()) {
		case "/enroll":
			int count = sdao.enroll(request.getParameter("lcode"), request.getParameter("scode"));
			out.println(count); // 0 신청가능, 1 이미신청
			break;

 

- read.jsp

	var scode = "${vo.scode}";
	
	$("#enroll").on('click',function(){
		var lcode=$('#lcode').val();
		if(!confirm(lcode + "을(를) 수강신청하시겠습니까?")) return;
		$.ajax({
			type:'get',
			url:'/enroll',
			data:{'scode':scode,'lcode':lcode},
			success:function(data){
				if(data==0){
					alert("수강신청 되었습니다.")
					getList();
				}else{
					alert("이미 수강신청 되어있습니다.")
				}
			}
		})
	});
	
	getList();
	
	function getList() {
		$.ajax({
			type : 'get',
			url : '/stu_enroll_list.json',
			data : {
				'scode' : scode
			},
			dataType : 'json',
			success : function(data) {
				var temp = Handlebars.compile($('#stemp').html());
				$('#stbl').html(temp(data));
			}
		})
	}

 

출력물

 

- 수강취소 버튼을 통해서 학생이 신청한 강좌를 삭제해주겠다.

- read.jsp

<table id="stbl"></table>
<script id="stemp" type="text/x-handlebars-template">
	<tr class="title">
		<th width=70>강좌번호</th>
		<th width=190>강좌이름</th>
		<th width=100>수강신청일</th>
		<th width=70>담당교수</th>
		<th width=70>강의시수</th>
		<th width=70>수강인원</th>
		<th width=70>수강취소</th>
	</tr>
	{{#each array}}
	<tr class="row">
		<td class="lcode">{{lcode}}</td>
		<td>{{lname}}</td>
		<td>{{edate}}</td>
		<td>{{pname}}</td>
		<td>{{hours}}</td>
		<td>{{persons}}</td>
		<td><button>수강취소</button></td>
	</tr>
	{{/each}}
</script>
<script>
	var scode = "${vo.scode}";
	
	// 수강취소
	$('#stbl').on('click','.row button',function(){
		var lcode =$(this).parent().parent().find('.lcode').html();
		if(!confirm(lcode + " 을(를) 삭제하시겠습니까?")) return;
	})

 

출력물

 

- pl/sql

CREATE DEFINER=`haksa`@`localhost` PROCEDURE `del_enroll`(
in i_scode char(8),
in i_lcode char(4)
)
BEGIN
DELETE FROM enrollments where lcode=i_lcode and scode=i_scode;
UPDATE courses set persons=persons-1 where lcode=i_lcode;
END

 

- 수강 신청 취소를 위한 메서드

- StuDAO.java

	// 8. 수강신청 취소를 위한 메서드
	public void del_enroll(String lcode, String scode){
		try {
			String sql = "call del_enroll(?,?)";
			CallableStatement cs = Database.CON.prepareCall(sql);
			cs.setString(1, scode);
			cs.setString(2, lcode);
			cs.execute();
		} catch (Exception e) {
			System.out.println("StuDAO del_enroll : "+e.toString());
		}
	}

 

- checkservlet.java

@WebServlet(value={"/del_enroll","/enroll","/stu_enroll_list.json","/check_lcode","/pro_cou_list.json","/pro_stu_list.json"})
public class CheckServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		CouDAO cdao = new CouDAO();
		ProDAO pdao = new ProDAO();
		StuDAO sdao = new StuDAO();
		switch (request.getServletPath()) {
		case "/del_enroll":
			sdao.del_enroll(request.getParameter("lcode"), request.getParameter("scode"));
			break;

 

출력물