목차
1. 자료실 게시판: 글 삭제
2. Model 1과 Model 2
3. 자바 서블릿(Java Servlet)
1. 자료실 게시판: 글 삭제
- 글 삭제 폼에서 DAO 객체를 생성하고 글 삭제 메소드를 호출할 때, 매개변수에 상세 정보의 주소 값을 가진 DTO 객체와 업로드 된 파일이 저장되는 디렉토리 경로를 전달한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="upload.BoardDBBean"%>
<%@ page import="upload.BoardDataBean"%>
<% request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="upload" class="upload.BoardDataBean" />
<jsp:setProperty name="upload" property="*" />
<%
String nowpage = request.getParameter("page");
String path = request.getRealPath("upload");
System.out.println("path="+path);
// 비밀번호 비교
BoardDBBean dao = BoardDBBean.getInstance(); // DAO 객체 생성(DB 연동)
BoardDataBean old = dao.getContent(upload.getNum());
if(old.getPasswd().equals(upload.getPasswd())){ // 비밀번호 일치시
int result = dao.delete(old, path); // 글 삭제, 첨부파일 삭제
if(result == 1){
%>
<script>
alert("글 삭제 성공");
location.href="list.jsp?page=<%=nowpage%>";
</script>
<% }
}else{ // 비밀번호 불일치시 %>
<script>
alert("비밀번호가 일치하지 않습니다.");
history.go(-1);
</script>
<% } %>
|
cs |
- 글 삭제 폼에서 호출한 삭제 메소드에서는 게시글과 함께 첨부파일도 삭제해야 하는데, 이 때 File 객체를 생성한다.
<DAO 클래스에서 delete() 메소드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// 글 삭제 + 첨부 파일 삭제
public int delete(BoardDataBean upload, String path) {
int result = 0;
Connection con = null;
PreparedStatement pstmt = null;
try {
con = getConnection();
String sql = "delete from upload where num = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, upload.getNum());
result = pstmt.executeUpdate(); // delete SQL문 실행
if(upload.getUpload() != null) { // 첨부파일 삭제
File file = new File(path); // File 객체 생성 (java.io 패키지 import)
// upload 디렉토리의 모든 파일을 읽어온다.
File[] f = file.listFiles();
for(int i=0; i<f.length; i++) {
// upload 디렉토리에 저장된 파일 중에서 DB에 저장된 파일 삭제한다.
if(f[i].getName().equals(upload.getUpload())) {
f[i].delete(); // 첨부파일 삭제 실행
}
} // for end
} // if end
}catch(Exception e) {
e.printStackTrace();
}finally {
if(pstmt != null) try { pstmt.close(); } catch(Exception e){}
if(con != null) try { con.close(); } catch(Exception e){}
}
return result;
}
|
cs |
2. Model 1과 Model 2
- JSP로 구현할 수 있는 웹 어플리케이션의 아키텍쳐는 크게 Model 1과 Model 2로 나뉜다. 이 두 방식의 차이점은 JSP가 하는 역할에 있다. Model 1은 JSP가 출력과 로직(요청)을 모두 처리하는 반면, Model 2에서 JSP는 출력만을 담당한다.
1) MVC 패턴
- ‘Model’, ‘View’, ‘Controller’를 합친 단어로, 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴
• Model : 비즈니스 영역의 로직을 처리
• View : 사용자가 보게 될 결과 화면(프레젠테이션 뷰)을 출력
• Controller : 사용자의 입력 처리와 흐름 제어를 담당
2) Model 1과 Model 2
① Model 1
- 비즈니스 로직 영역과 프레젠테이션 영역을 함께 구현하는 방식
- 사용자의 요청을 JSP가 모두 처리
② Model 2
- 비즈니스 로직 영역과 프레젠테이션 영역이 분리되어 있는 구현 방식
- MVC(Model-View-Controller) 패턴을 웹 개발에 도입한 구조
- 컨트롤러(Controler)인 서블릿(Servlet)이 사용자의 요청을 받고, View로 보여줄지 아니면 Model로 보낼지를 정하여 전송한다.
3) 장단점
• Model 1 – 장점) 빠르고 쉽게 개발 가능
단점) 유지ᆞ보수가 어려움
• Model 2 – 장점) 유지ᆞ보수 용이
단점) 개발 난이도가 높음
3. 자바 서블릿(Java Servlet)
1) 서블릿(Servlet)
- 자바(Java)를 사용하여 동적인 처리를 하는 프로그램으로, 클라이언트의 요청을 처리하고, 그 결과를 반환한다.
- MVC 패턴에서 Controller의 역할을 한다.
- 서블릿은 HttpServlet 클래스를 상속받는다.
- 자바 서블릿 클래스 생성을 위해서는 Apache Tomcat 라이브러리 하위 ‘servlet-api.jar’ 라이브러리 필요
2) 어노테이션(Annotation) : @WebServlet
- Servlet 매핑하는 방법에는 ① 어노테이션(Annotation)을 이용하는 방법과 ② web.xml에 설정하는 방법이 있다.
- 이클립스에서 서블릿을 생성할 경우, 어노테이션(Annotation) 형식으로 자동으로 매핑되기 때문에 이 방법이 더욱 간편하다.
- 어노테이션의 이름은 보통 클래스 이름과 같지만, 같지 않아도 상관 없다.
- ex) @WebServlet("/test")
'JSP' 카테고리의 다른 글
69일차: JSTL 태그 종류/Model 2 회원관리_ 2021.09.23 (0) | 2021.09.23 |
---|---|
68일차: 자바 서블릿/표현 언어(EL)/JSTL_ 2021.09.17 (0) | 2021.09.17 |
66일차: JSP 자료실 게시판(글 목록, 상세 페이지, 글 수정)_ 2021.09.15 (0) | 2021.09.15 |
65일차: JSP 댓글 게시판(글 삭제) / 첨부파일 테스트 / 자료실 게시판(글 작성)_ 2021.09.14 (0) | 2021.09.14 |
64일차: JSP 댓글 게시판(상세 페이지, 댓글, 글 수정)_ 2021.09.13 (0) | 2021.09.13 |