관리 메뉴

me made it !

[JSP] 20230315 JAVA 게시판에 글쓰기 본문

TIL/JSP

[JSP] 20230315 JAVA 게시판에 글쓰기

yeoney 2023. 3. 15. 16:11
반응형
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");
			 }

		}
		
		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		doGet(request, response);
	}

}
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;
	int midx;
	
	
	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;
	}

}
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;
	
	}
	
	
	
	
	
	
	
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!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/boardWriteAction.do";
	fm.method="post";
//	fm.enctype ="multipart/form-data";
	fm.submit();
	return;
}


</script>
</head>
<body>
게시판 글쓰기
<form name="frm">
<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>

 

참고로 BIDX값이 일정하지 않고 저렇게 20씩 널뛸때 

ALTER SEQUENCE bidx_seq NOCACHE;

를 실행하면 번호가 차례대로 정리되어 입력된다  !

반응형