기록해! 정리해!

JSP - 답변형 게시판 본문

JAVA/JSP

JSP - 답변형 게시판

zsuling 2022. 8. 19. 13:28

HRD0816.zip
2.04MB

3개의 컬럼을 더 사용한다

1. ref (그룹)
2. re_step (그룹안에서의 순서)
3. re_level (답글의 레벨)

 

 

1. 오라클 테이블 생성

Create table member0819(
idx int not null primary key,
name nvarchar2(10) not null,
title nvarchar2(100),
ref number(6),
re_step number(6),
re_level number(6)
);

Create sequence member
Increment by 1 start with 1001
maxvalue 999999;

 

2. Top 절대경로,  네비에 링크 추가

    String path = request.getContextPath();

절대경로

3. Controller는 서블릿

4. Vo 추가 - 게터세터

 

5. 메소드 만들기 (Dao / Service)

6. Impl  (Dao / Service)

7. ReDaoImpl  에 생성자 만들고 데이터베이스커넥션하기

 

순서 : 생성자 - 디비커넥션 - SQL

- try/catch

: idx는 자동증가 nextval

: ref는 그룹번호니까 idx랑 같게 써주면 되고

: re_step, re_level은 초기값 1

: 받아올 값은 name과 title 뿐

+ 기존의 DBConnection

package dbpkg;

import java.sql.*;

public class DBConnection {
	Connection con = null;
	PreparedStatement stmt = null;
	ResultSet rs = null;

	String url = "jdbc:oracle:thin:@//localhost:1521/xe";
	String userId = "system";
	String pass = "1234";
	
	private static DBConnection db = new DBConnection();
	
	private DBConnection() { }
	
	public static DBConnection getInstance() {
		return db;
	}
	
	public Connection getConnection() {
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			con = DriverManager.getConnection(url, userId, pass);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}

	public void close1(PreparedStatement stmt, Connection con) {
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public void close2(ResultSet rs, PreparedStatement stmt, Connection con) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

 

8.

form.jsp

: sw 스위치 hidden 히든으로 잡아서 넘기기 

 

 list.jsp

9. ReBoardController 서블릿

10. 이미지 첨부

re_level이 1보다 크면 댓글이 있는 거니까 이미지가 나오게 하기.


 

11 . 제목 title 링크걸어서 답변 쓰기

-- edit

0) list.jsp에 링크걸기

1) edit.jsp

2) 메소드 만들기 (Dao / Service)

3) ServiceImpl

4) DaoImpl

-edit

-reInsert

-reUpdate

5) ReBoardController 서블릿

6) 내림차순 정렬 ReDaoImpl

(최신답글이 위로 오게끔)

7) 결과

땅콩 - 손님2 에 답글로 방랑자3 적기

ㄴ space 이미지로 답글의 답글은 하나씩 옆칸으로 가게 됨


12. 삭제 (delete)

1) delete 메소드 추가

2) ServiceImpl

3) DaoImpl

4) Controller

5) 링크걸기

6) 결과


컬럼 etc 추가하기

 

1. 오라클 컬럼 추가

alter table member0819 add etc nvarchar2(200) default ' ' not null;

 

2. form.jsp

<textarea> </textarea> 이렇게 사이에 띄워쓰면 

etc 칸에 들여쓰기 되어지니까

붙여써주기

3. edit.jsp

 

4. Vo 에 etc 추가 - 게터세터

5.ReDaoImpl 에 etc 추가

- insert

- edit

- reInsert

6. ReBoardController 에 etc 추가

- 전역

- insert

- update

7. 결과


 + 3. edit.jsp 수정하기버튼

 

1. re_edit / up_edit 만들기 

 

- edit.jsp

-re_edit.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="dbpkg.reboard.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.URLEncoder"%>

<%@ include file="../top.jsp" %>
<section>

  <%   
      
  ReBoardVo m = (ReBoardVo)request.getAttribute("m");
  int idx = m.getIdx();
  int ref = m.getRef();
  int re_step = m.getRe_step();
  int re_level = m.getRe_level();
  String title = m.getTitle();
  String etc = m.getEtc();
  
  %>
  <br> <br>
  <div align="center" > <h2>  답변 상세보기  </h2> </div>
  <div align="center" > 
  
  <form  action="<%=path %>/ReBoardController"  method=get>
  <input  type=hidden name=sw  value="rewrite" >
  <table  border=1  width=450  height=150>

  <tr> <td>idx</td> <td> <input  type=text name=idx  value=<%=idx %> > </td> </tr>
  <tr> <td>ref</td> <td> <input  type=text name=ref  value=<%=ref %> > </td> </tr>
  <tr> <td>re_step</td> <td> <input  type=text name=re_step  value=<%=re_step %> > </td> </tr>
  <tr> <td>re_level</td> <td> <input  type=text name=re_level  value=<%=re_level %>  > </td> </tr>

  
  <tr> <td>이 름</td> <td> <input  type=text name=name   > </td> </tr>
  <tr> <td>제 목</td> <td> <input  type=text name=title size=50  value="<%=title %>" > </td> </tr>
  <tr> <td>제 목</td> <td> <textarea  cols=40  rows=5  name=etc ><%=etc %></textarea> </td> </tr>
  <tr> <td colspan=2 align="center" > 
  <input  type=submit value="답글쓰기"> </td> </tr>
  </table>
  </form>
  
  </div>
<br>
</section>
<%@ include file="../bottom.jsp" %>

-up_edit.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="dbpkg.reboard.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.URLEncoder"%>

<%@ include file="../top.jsp" %>
<section>

  <%   
      
  ReBoardVo m = (ReBoardVo)request.getAttribute("m");
  int idx = m.getIdx();
  int ref = m.getRef();
  int re_step = m.getRe_step();
  int re_level = m.getRe_level();
  String title = m.getTitle();
  String name = m.getName();
  String etc = m.getEtc();
  
  %>
  <br> <br>
  <div align="center" > <h2>  수정 상세보기  </h2> </div>
  <div align="center" > 
  
  <form  action="<%=path %>/ReBoardController"  method=get>
  <input  type=hidden name=sw  value="update" >
  <table  border=1  width=450  height=150>

  <tr> <td>idx</td> <td> <input  type=text name=idx  value=<%=idx %> > </td> </tr>
  <tr> <td>ref</td> <td> <input  type=text name=ref  value=<%=ref %> > </td> </tr>
  <tr> <td>re_step</td> <td> <input  type=text name=re_step  value=<%=re_step %> > </td> </tr>
  <tr> <td>re_level</td> <td> <input  type=text name=re_level  value=<%=re_level %>  > </td> </tr>

  
  <tr> <td>이 름</td> <td> <input  type=text name=name value=<%=name %>  > </td> </tr>
  <tr> <td>제 목</td> <td> <input  type=text name=title size=50  value="<%=title %>" > </td> </tr>
  <tr> <td>제 목</td> <td> <textarea  cols=40  rows=5  name=etc ><%=etc %></textarea> </td> </tr>
  <tr> <td colspan=2 align="center" > 
   <input  type=submit value="수정하기"> </td> </tr>
  </table>
  </form>
  
  </div>
<br>
</section>
<%@ include file="../bottom.jsp" %>

2. 메소드 update 추가하기

-Dao / Service

- ServiceImpl

- DaoImpl

3. Controller

4. 결과

 


조회수 cnt 추가하기

 

1. 오라클 컬럼 추가


alter table member0819 add cnt int default 1 not null;

 

2. Vo추가 - 게터세터

3. 메소드 cnt 추가하기

 

4. ServiceImpl

5. DaoImpl

+  selectAll 에 cnt 추가하고 close2로 바꾸기

  (edit도 close2로 바꾸기)

6. Controller 

 title 눌렀을 때 조회수 올라가게 하기

7. list.jsp에 조회수 추가하기

.

.

8. 결과

 

'JAVA > JSP' 카테고리의 다른 글

JSP - 답변형 게시판(2)  (0) 2022.08.22
JSP - 자료실  (0) 2022.08.08
데이터베이스와 JSP 연동  (0) 2022.08.04
JSP 교재(3) - 액션태그 (include / forward ), MVC  (0) 2022.08.04
JSP 교재 (2)  (0) 2022.08.03
Comments