관리 메뉴

me made it !

[JSP] 20230316 JSP 게시판 글 내용 수정하기 본문

TIL/JSP

[JSP] 20230316 JSP 게시판 글 내용 수정하기

yeoney 2023. 3. 16. 16:32
반응형
package example1230.controller;

import java.io.IOException;
import java.net.InetAddress;
import java.util.ArrayList;

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 example1230.domain.BoardVo;
import example1230.service.BoardDao;


@WebServlet("/BoardController")
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    String str;
    public BoardController(String path) {
    	this.str = path;
      
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		
		
		if(str.equals("/board/boardList.do")) {
			System.out.println("boardList.do 들어옴");
			
			BoardDao bd =  new BoardDao();
			ArrayList<BoardVo> blist = bd.boardSelectAll();
			
			
			request.setAttribute("blist", blist);
			
			RequestDispatcher rd = request.getRequestDispatcher("/board/boardList.jsp");
			rd.forward(request, response);		//forward 방식 : 같은 영역안에 있는 다른 공간에 정보를 넘겨줌 
		
		}
		//과제 ! 
		if(str.equals("/board/boardWrite.do")) {
			System.out.println("boardWrite.do 들어옴");
			
			BoardDao bd =  new BoardDao();
			ArrayList<BoardVo> blist = bd.boardSelectAll();
			
			
			request.setAttribute("blist", blist);
			
			RequestDispatcher rd = request.getRequestDispatcher("/board/boardWrite.jsp");
			rd.forward(request, response);		//forward 방식 : 같은 영역안에 있는 다른 공간에 정보를 넘겨줌 
		}
		
		else if(str.equals("/board/boardWriteAction.do")) { 
			 String subject = request.getParameter("subject");
			 String contents = request.getParameter("contents");  
			 String writer = request.getParameter("writer");  
			 String ip = InetAddress.getLocalHost().getHostAddress();
			 
			 int midx=10;
			 		
			 //처리하는 부분
			 BoardVo bv= new BoardVo();
			 bv.setSubject(subject);
			 bv.setContent(contents);
			 bv.setWriter(writer);
			 bv.setIp(ip);
			 bv.setMidx(midx);
			 
			 
			 BoardDao bd = new BoardDao();
			 int value = bd.boardInsert(bv);
			 
			 //이동하는 부분
			 if (value == 1) {
				 response.sendRedirect(request.getContextPath()+"/board/boardList.do");
			 }else{
				 response.sendRedirect(request.getContextPath()+"/board/boardWrite.do");
			 }

		}else if (str.equals("/board/boardContents.do")) {
			
			String bidx = request.getParameter("bidx");
			System.out.println("bidx:" + bidx );
			int bidxInt = Integer.parseInt(bidx); 
			
			BoardDao bd = new BoardDao();
			int value = bd.boardViewCnt(bidxInt);
			BoardVo bv = bd.boardSelectOne(bidxInt);
			
			
			request.setAttribute("bv", bv);
			
			
			RequestDispatcher rd = request.getRequestDispatcher("/board/boardContents.jsp");
			rd.forward(request, response);		
			
			
		}else if (str.equals("/board/boardModify.do")) {
			System.out.println("boardmodify들어왔음");
			
			String bidx = request.getParameter("bidx");
			System.out.println("bidx:" + bidx );
			int bidxInt = Integer.parseInt(bidx); 
			
			BoardDao bd = new BoardDao();
			BoardVo bv = bd.boardSelectOne(bidxInt);
			
			request.setAttribute("bv", bv);
			
			
			RequestDispatcher rd = request.getRequestDispatcher("/board/boardModify.jsp");
			rd.forward(request, response);	
			
			
			
		}else if(str.equals("/board/boardModifyAction.do")) {
			String bidx= request.getParameter("bidx");			
			int bidxInt =Integer.parseInt(bidx);
			String subject =request.getParameter("subject");
			String contents =request.getParameter("contents");
			String writer =request.getParameter("writer");
			
			//update 메소드 사용
			BoardVo bv = new BoardVo();
			bv.setBidx(bidxInt);
			bv.setSubject(subject);
			bv.setContent(contents);
			bv.setWriter(writer);
			
			
			BoardDao bd = new BoardDao();
			int value = bd.boardModify(bv);
			
				if(value==1) {
					response.sendRedirect(request.getContextPath()+"/board/boardContents.do?bidx="+bidx);
				}else {
					response.sendRedirect(request.getContextPath()+"/board/boardModify.do?bidx="+bidx);
				}
				
		}
		
		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		doGet(request, response);
	}

}
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 bidx DESC";
		
		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,subject,content,writer,ip,midx)"
				+ "VALUES(bidx_seq.NEXTVAL,?,?,?,?,?)";
		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());
			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"));
	
			}
			
		} 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) {
		int value =0;
		String sql = "UPDATE board1230 SET subject=?,content=?, writer=? WHERE bidx=? ";
		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());
			value = pstmt.executeUpdate();			
		} catch (Exception e) {			
			e.printStackTrace();
		}finally {
			try {
				pstmt.close();
				conn.close();
			} catch (Exception e) {				
				e.printStackTrace();
			}
		}
		return value;
	
	}
	
}
<%@ 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>삭제</button>
<button>답변</button>
<button>목록</button>
</td>
</tr>
</table>
</body>
</html>
<%@ 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/boardModifyAction.do";
	fm.method="post";
	fm.submit();
	return;
}


</script>
</head>
<body>
게시판 글수정
<form name="frm">
<input type="hidden" name="bidx" value="<%=bv.getBidx() %>">
<table  border=1 style="width:500px;">
<tr>
<td>제목</td>
<td><input type="text" name="subject" value="<%=bv.getSubject() %>"></td>
</tr>
<tr>
<td>내용</td>
<td><textarea name="contents" cols="50"  rows="5" ><%=bv.getContent() %></textarea></td>
</tr>
<tr>
<td>작성자</td>
<td><input type="text" name="writer" maxlength=5 value ="<%=bv.getWriter() %>"></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>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>      
 <%@ page import ="java.util.*" %>
 <%@ page import ="example1230.domain.BoardVo" %>
 <%
 ArrayList<BoardVo>  blist = (ArrayList<BoardVo>) request.getAttribute("blist");
 %>    
       
   
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
a:link{
text-decoration:none;
}

</style>
</head>
<body>
게시판 목록
<form name="frm" action="<%=request.getContextPath() %>/board/boardList.do" method="post">
<table  style="text-align:left;width:800px;border:0;">
<tr>
<td style="width:600px;"></td>
<td>
<select name="searchType">
<option value="subject">제목</option>
<option value="writer">작성자</option>
</select>
</td>
<td><input type="text" name="keyword" size="10"></td>
<td><input type="submit" name="submit" value="검색"></td>
</tr>
</table>
</form>
<table border=1 style="text-align:left;width:800px;">
<tr>
<td>게시물번호</td>
<td>제목</td>
<td>작성자</td>
<td>날짜</td>
</tr>

<!-- 향상된 for 문  -->
<%for(BoardVo bv: blist){ %>
<tr>
<td><%=bv.getBidx() %></td>
<td><a href="<%=request.getContextPath()%>/board/boardContents.do?bidx=<%=bv.getBidx() %>"><%=bv.getSubject() %></a></td>
<td><%=bv.getWriter() %></td>
<td><%=bv.getWriteday().substring(0,10)  %></td>
</tr>
<%} %>



</table>
<table style="border:0, width:300px;width:800px;">
<tr>
<td style="text-align:right;">
◀
</td>
<td style="text-align:center;width:300px;">
1 2 3 4 5 6 7 8 9 10
</td>
<td style="width:200px;text-align:left;">
▶
</td>
</tr>
</table>

<a href="<%=request.getContextPath()%>/board/boardWrite.do">글쓰기</a>
</body>
</html>

반응형