초보 개발자의 기록

이미지 보드 본문

JAVA/JSP

이미지 보드

bambinodeveloper 2020. 12. 8. 02:33
728x90

regist_form.jsp

regist.jsp

imageBoard.java -VO

imageBoardDAO.java

 

 

MariaDB[db1202]

 

CREATE TABLE imageBoard(

    board_id INT PRIMARY KEY AUTO_INCREMENT

  , author VARCHAR(20)

  , title VARCHAR(100)

  , content TEXT

  , regdate TIMESTAMP DEFAULT NOW();

  , hit INT DEFAULT 0

  , filename VARCHAR(30)

) DEFAULT CHARACTER SET UTF8;

 

결과>

regist_from.jsp

<%@ page contentType="text/html;charset=utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}
* {box-sizing: border-box;}
input[type=text], input[type=file], select, textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-sizing: border-box;
  margin-top: 6px;
  margin-bottom: 16px;
  resize: vertical;
}
input[type=button] {
  background-color: #4CAF50;
  color: white;
  padding: 12px 20px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
input[type=button]:hover {
  background-color: #45a049;
}
.container {
  border-radius: 5px;
  background-color: #f2f2f2;
  padding: 20px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
/*
GET : Http 프로토콜에서 헤더 정보에 데이터를 실어 나른다..아무래도 헤더이다 보니, 전송가능한 양이 미미하다..
		 현실비유) 편지봉투에 데이터 노출하여 보내는 꼴임..
POST : Http프로토콜에서 바디영역에 데이터를 실어 나른다. 몸체이다 보니 전송량에 한계가 없다..
         현실비유) 편지지에 데이터를 숨겨 보내는 꼴임..
*/
$(function(){
	$("input[type='button']").click(function(){
		//입력양식을 서버에 전송!!
		$("form").attr({
			method:"post",
			action:"/imageboard/regist.jsp"
		});
		$("form").submit(); //전송행위!!!
	});
});
</script>
</head>
<body>

<div class="container">
  <form enctype="multipart/form-data">
    <label for="fname">First Name</label>
    <input type="text" id="fname" name="author" placeholder="Your name..">

    <label for="lname">title</label>
    <input type="text" id="lname" name="title" placeholder="Your title..">

	<label for="subject">Content</label>
    <textarea id="subject" name="content" placeholder="Write something.." style="height:200px"></textarea>
	
    <label for="la_photo">파일 선택</label>
    <input type="file" id="la_photo" name="photo">
	
    <input type="button" value="전송">
  </form>
</div>
<div style="text-align:center">
	Copyright All reserved java board
</div>
</body>
</html>

 

imageBoard.java

package board.model;

public class ImageBoard {
	private int board_id;
	private String author;
	private String title;
	private String content;
	private String regdate;
	private int hit;
	private String filename;
	
	public int getBoard_id() {
		return board_id;
	}
	public void setBoard_id(int board_id) {
		this.board_id = board_id;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getRegdate() {
		return regdate;
	}
	public void setRegdate(String regdate) {
		this.regdate = regdate;
	}
	public int getHit() {
		return hit;
	}
	public void setHit(int hit) {
		this.hit = hit;
	}
	public String getFilename() {
		return filename;
	}
	public void setFilename(String filename) {
		this.filename = filename;
	}
}

 

imageBoardDAO.java

/*
 * ImageBoard 테이블에 대한 CRUD만을 전담하는  DAO 정의
 * */
package board.model;

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

import db.DBManager;

public class ImageBoardDAO {
	DBManager dbManager=new DBManager();//ImagesBoardDAO의 인스턴스가 생성될때 
																		//DBManager의 인스턴스도 같이 생성됨
	
	//create(insert)
	public int insert(ImageBoard board) {
		Connection con=null;
		PreparedStatement pstmt=null;
		int result=0;
		String sql="insert into imageboard(author,title,content,filename) values(?,?,?,?)";
		
		con=dbManager.getConnection();
		try {
			pstmt=con.prepareStatement(sql);
			pstmt.setString(1, board.getAuthor());
			pstmt.setString(2, board.getTitle());
			pstmt.setString(3, board.getContent());
			pstmt.setString(4,board.getFilename());
			result=pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			dbManager.release(con, pstmt);
		}
		return result;
	}
	
	
	//selectAll()
	public ArrayList selectAll() {
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		ArrayList<ImageBoard> list = new ArrayList<ImageBoard>();
		
		String sql="select * from imageboard";
		
		con = dbManager.getConnection();
		try {
			pstmt = con.prepareStatement(sql);
			rs = pstmt.executeQuery();
			while(rs.next()) { //ImageBoard 를 레코드 만큼 생성하여 list에 추가
				ImageBoard board = new ImageBoard();
				board.setBoard_id(rs.getInt("board_id"));
				board.setAuthor(rs.getString("author"));
				board.setTitle(rs.getString("title"));
				board.setContent(rs.getString("content"));
				board.setRegdate(rs.getString("regdate"));
				board.setHit(rs.getInt("hit"));
				board.setFilename(rs.getString("filename"));
				list.add(board);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dbManager.release(con, pstmt, rs);
		}
		return list;
	}
	
	//select 
	public ImageBoard select(int board_id) {
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		ImageBoard board = null;
		
		String sql="select * from imageboard where board_id=?";
		
		con = dbManager.getConnection();
		try {
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, board_id);
			rs = pstmt.executeQuery();
			if(rs.next()) { //레코드가 있다면,
				board = new ImageBoard();
				board.setBoard_id(rs.getInt("board_id"));
				board.setAuthor(rs.getString("author"));
				board.setTitle(rs.getString("title"));
				board.setContent(rs.getString("content"));
				board.setRegdate(rs.getString("regdate"));
				board.setHit(rs.getInt("hit"));
				board.setFilename(rs.getString("filename"));
			}
			pstmt = con.prepareStatement("update imageboard set hit = hit+1 where board_id=?");
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			dbManager.release(con, pstmt, rs);
		}
		return board;
	}
	
	//update
	public int update(ImageBoard board) {
		Connection con = null;
		PreparedStatement pstmt = null;
		String sql="update imageboard set author=?, title=?,content=?, filename=? where board_id=?";
		int result = 0;
		
		con = dbManager.getConnection();
		try {
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, board.getAuthor());
			pstmt.setString(2, board.getTitle());
			pstmt.setString(3, board.getContent());
			pstmt.setString(4, board.getFilename());
			pstmt.setInt(5, board.getBoard_id());
			result = pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			dbManager.release(con, pstmt);
		}
		return result;
	}
	
	//delete
	public int delete(int board_id) {
		Connection con = null;
		PreparedStatement pstmt = null;
		int result = 0;
	
		String sql="delete from imageboard where board_id=?";
		con = dbManager.getConnection();
		try {
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, board_id);
			result = pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			dbManager.release(con, pstmt);
		}
		return result;
	}
}

 

jenkwon92/JavaEE_Workspace

Korea it academy JavaEE class. Contribute to jenkwon92/JavaEE_Workspace development by creating an account on GitHub.

github.com

 

 

728x90
반응형

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

Tomcat 바이너리에 jar등록  (0) 2020.12.12
Tomcat 이용환경변경  (0) 2020.12.11
이미지 업로드- commons(Apache)  (0) 2020.12.08
이미지 업로드-cos.jar(Oreilly)  (0) 2020.12.07
객체  (0) 2020.12.06