관리 메뉴

me made it !

[JSP] 20230320 JSP 게시판 글에 답글 달기 본문

TIL/JSP

[JSP] 20230320 JSP 게시판 글에 답글 달기

yeoney 2023. 3. 20. 11:47
반응형
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import = "example1230.domain.BoardVo " %>
<% BoardVo bv = (BoardVo)request.getAttribute("bv");%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>글답변화면</title>
<script type="text/javascript">
function check(){	

	var fm = document.frm;	
	if (fm.subject.value == "" ){
		alert("제목을 입력하세요");
		fm.subject.focus();
		return;
	}else if (fm.contents.value == ""){
		alert("내용을 입력하세요");
		fm.contents.focus();
		return;
	}else if (fm.writer.value == ""){
		alert("작성자를 입력하세요");
		fm.writer.focus();
		return;
	}
	
	fm.action = "<%=request.getContextPath()%>/board/boardReplyAction.do";
	fm.method="post";
	
	fm.submit();
	return;
}


</script>
</head>
<body>
게시판 글답변
<form name="frm">
<input type="hidden" name="bidx" value="<%=bv.getBidx()%>">
<input type="hidden" name="originbidx" value="<%=bv.getOriginbidx()%>">
<input type="hidden" name="depth" value="<%=bv.getDepth()%>">
<input type="hidden" name="level_" value="<%=bv.getLevel_()%>">
<table  border=1 style="width:500px;">
<tr>
<td>제목</td>
<td><input type="text" name="subject"></td>
</tr>
<tr>
<td>내용</td>
<td><textarea name="contents" cols="50"  rows="5"></textarea></td>
</tr>
<tr>
<td>작성자</td>
<td><input type="text" name="writer" maxlength=5></td>
</tr>
<tr>
<td>파일첨부</td>
<td><input type="file" name="filename"></td>
</tr>

<tr><td colspan=2>
<input type="button" name="btn"  value="확인" onclick="check();">
<input type="reset" name="rst" value="리셋">
</td></tr>

</table>
</form>
</body>
</html>
package example1230.service;

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

import example1230.dbconn.Dbconn;
import example1230.domain.BoardVo;

public class BoardDao {
	
	private Connection conn;
	
	public BoardDao() {
		Dbconn dbconn = new Dbconn();
		this.conn = dbconn.getConnection();
	}
	
	public ArrayList<BoardVo> boardSelectAll(){
		ArrayList<BoardVo> blist = new ArrayList<BoardVo>();
		
		String sql ="select * from board1230 where delyn = 'n' order by originbidx DESC, depth asc";		
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			while(rs.next()){
				BoardVo bv = new BoardVo();
				bv.setBidx(rs.getInt("bidx"));
				bv.setSubject(rs.getString("subject"));
				bv.setContent(rs.getString("content"));
				bv.setWriter(rs.getString("writer"));
				bv.setWriteday(rs.getString("writeday"));
				blist.add(bv);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
				pstmt.close();
				conn.close();
			} catch (SQLException e) {		
				e.printStackTrace();
			}
		}
		
		return blist;
	}
	
	public int boardInsert(BoardVo bv) {
		int value =0;
		String sql = "INSERT INTO board1230(bidx,originbidx,depth,level_,subject,content,writer,ip,midx,pwd)"
				+ "VALUES(bidx_seq.NEXTVAL,bidx_seq.NEXTVAL,0,0,?,?,?,?,?,?)";
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, bv.getSubject());
			pstmt.setString(2, bv.getContent());
			pstmt.setString(3, bv.getWriter());
			pstmt.setString(4, bv.getIp());
			pstmt.setInt(5, bv.getMidx());
			pstmt.setString(6, bv.getPwd());
			value = pstmt.executeUpdate();			
		} catch (Exception e) {			
			e.printStackTrace();
		}finally {
			try {
				pstmt.close();
				conn.close();
			} catch (Exception e) {				
				e.printStackTrace();
			}
		}
		
		return value;
	
	}
	
	public BoardVo boardSelectOne(int bidx) {
		BoardVo bv = null;
		String sql = "select * from board1230 where bidx = ?"; 
		PreparedStatement pstmt = null;
		ResultSet rs= null;
		try {
			pstmt =conn.prepareStatement(sql);
			pstmt.setInt(1, bidx);
			rs =pstmt.executeQuery();
			
			if(rs.next()) {
				bv = new BoardVo();
				bv.setBidx(rs.getInt("bidx"));
				bv.setSubject(rs.getString("subject"));
				bv.setContent(rs.getString("content"));
				bv.setWriter(rs.getString("writer"));
				bv.setViewcnt(rs.getString("viewcnt"));
				bv.setOriginbidx(rs.getInt("originbidx"));
				bv.setDepth(rs.getInt("depth"));
				bv.setLevel_(rs.getInt("level_"));
	
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			try {
			rs.close();
			pstmt.close();
			conn.close();
		
		}catch(Exception e) {
			e.printStackTrace();
			}
		}
		return bv;
	}
	
	public int  boardViewCnt(int bidx) {
		System.out.println("bidx" + bidx);
		int value =0;
		
		String sql="UPDATE BOARD1230 SET viewcnt=NVL(viewcnt,0)+1 where bidx=? ";
		PreparedStatement pstmt = null;
		
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, bidx);
			value = pstmt.executeUpdate();
		} catch (SQLException e) {
		
			e.printStackTrace();
		}finally {
			try {
				pstmt.close();
//				conn.close();	 conn 연결을 끊으면 다음 메소드가 동작을 안한다. 
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}
		
		return value;
	}
	
	public int boardModify(BoardVo bv) {
//		System.out.println("비밀번호는?"+bv);
		
		int value =0;
		String sql = "UPDATE board1230 SET subject=?,content=?, writer=? WHERE bidx=? and pwd=? ";
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, bv.getSubject());
			pstmt.setString(2, bv.getContent());
			pstmt.setString(3, bv.getWriter());
			pstmt.setInt(4, bv.getBidx());
			pstmt.setString(5, bv.getPwd());
			value = pstmt.executeUpdate();			
		} catch (Exception e) {			
			e.printStackTrace();
		}finally {
			try {
				pstmt.close();
				conn.close();
			} catch (Exception e) {				
				e.printStackTrace();
			}
		}
		return value;
	
	}
	
	public int boardDelete(BoardVo bv) {
		int value = 0;
		String sql = "UPDATE board1230 SET delyn ='Y' WHERE bidx=? and pwd =?";
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, bv.getBidx());
			pstmt.setString(2, bv.getPwd());
			value = pstmt.executeUpdate();			
		} catch (Exception e) {			
			e.printStackTrace();
		}finally {
			try {
				pstmt.close();
				conn.close();
			} catch (Exception e) {				
				e.printStackTrace();
			}
		}
		return value;
	}
	
}
else if (str.equals("/board/boardReply.do")) {
			String bidx = request.getParameter("bidx");		
			String originbidx = request.getParameter("originbidx");
			String depth = request.getParameter("depth");			
			String level_ = request.getParameter("level_");

			
			BoardVo bv = new BoardVo();
			bv.setBidx(Integer.parseInt(bidx));
			bv.setOriginbidx(Integer.parseInt(originbidx));
			bv.setDepth(Integer.parseInt(depth));
			bv.setLevel_(Integer.parseInt(level_));
			
			request.setAttribute("bv", bv);
			
			
			RequestDispatcher rd = request.getRequestDispatcher("/board/boardReply.jsp");
			rd.forward(request, response);	
			
		}else if (str.equals("/board/boardReplyAction.do")) {
			String bidx = request.getParameter("bidx");		
			String originbidx = request.getParameter("originbidx");
			String depth = request.getParameter("depth");			
			String level_ = request.getParameter("level_");
			String subject = request.getParameter("subject");
			String contents = request.getParameter("contents");
			String writer = request.getParameter("writer");
			
			
			
			
			response.sendRedirect(request.getContextPath()+"/board/boardList.do");
			
		}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@page import="example1230.domain.BoardVo" %>
  
  <%  BoardVo bv =(BoardVo)request.getAttribute("bv"); %>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
내용보기
<table  border=1 style="width:500px;">
<tr>
<td style="width:50px;">제목</td>
<td><%=bv.getSubject() %></td>
<td>  조회수(<%=bv.getViewcnt() %>)</td>
</tr>
<tr>
<td>파일다운로드</td>
<td></td>
</tr>
<tr>
<td>이미지</td>
<td></td>
</tr>
<tr>
<td style="height:200px;">내용</td>
<td><%=bv.getContent() %></td>
<td></td>
</tr>
<tr>
<td>작성자</td>
<td><%=bv.getWriter() %></td>
<td></td>
</tr>
<tr>
<td colspan=2 style="text-align:right;">

<button onclick = "location.href='<%=request.getContextPath()%>/board/boardModify.do?bidx=<%=bv.getBidx() %>'">수정</button>
<button onclick = "location.href='<%=request.getContextPath()%>/board/boardDelete.do?bidx=<%=bv.getBidx() %>'">삭제</button>
<button onclick = "location.href='<%=request.getContextPath()%>/board/boardReply.do?bidx=<%=bv.getBidx() %>&originbidx=<%=bv.getOriginbidx()%>&depth=<%=bv.getDepth()%>&level_=<%=bv.getLevel_()%>'">답변</button>
<button>목록</button>
</td>
</tr>
</table>
</body>
</html>
package example1230.domain;

public class BoardVo {

	
	private int bidx;
	private String subject;
	private String contents;
	private String writer;
	private String delyn;
	private String writeday;
	private String ip;
	private int midx;
	private String viewcnt;
	private String pwd;
	private int originbidx;
	public String getContents() {
		return contents;
	}
	public void setContents(String contents) {
		this.contents = contents;
	}
	public int getOriginbidx() {
		return originbidx;
	}
	public void setOriginbidx(int originbidx) {
		this.originbidx = originbidx;
	}
	public int getDepth() {
		return depth;
	}
	public void setDepth(int depth) {
		this.depth = depth;
	}
	public int getLevel_() {
		return level_;
	}
	public void setLevel_(int level_) {
		this.level_ = level_;
	}
	private int depth;
	private int level_;
	
	public String getViewcnt() {
		return viewcnt;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public void setViewcnt(String viewcnt) {
		this.viewcnt = viewcnt;
	}
	public int getBidx() {
		return bidx;
	}
	public void setBidx(int bidx) {
		this.bidx = bidx;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getContent() {
		return contents;
	}
	public void setContent(String contents) {
		this.contents = contents;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getDelyn() {
		return delyn;
	}
	public void setDelyn(String delyn) {
		this.delyn = delyn;
	}
	public String getWriteday() {
		return writeday;
	}
	public void setWriteday(String writeday) {
		this.writeday = writeday;
	}
	public String getIp() {
		return ip;
	}
	public void setIp(String ip) {
		this.ip = ip;
	}
	public int getMidx() {
		return midx;
	}
	public void setMidx(int midx) {
		this.midx = midx;
	}


}
반응형