2022.09.13~14 JSP

sofiaยท2022๋…„ 9์›” 13์ผ
0

JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
27/27
post-thumbnail

์ž๋ฃŒ์‹ค PPT.03

๐Ÿ’ก๊ธฐ์กด ๊ฒŒ์‹œํŒ ์†Œ์Šค์— ์ž๋ฃŒ๋ฅผ ์ฒจ๋ถ€ํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€

  • BoardBean.java
    - private String b_fname;
    - private int b_fsize;
  • write.jsp =>ํŒŒ์ผ ์ถ”๊ฐ€
  • write_ok.jsp =>ํŒŒ์ผ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ
  • BoardDBBean.java
    - insertBoard() ๋ฉ”์†Œ๋“œ => insert ์‹œ ํŒŒ์ผ ์ด๋ฆ„, ํŒŒ์ผ ํฌ๊ธฐ ์ถ”๊ฐ€
    - getBoard() ๋ฉ”์†Œ๋“œ => BoardBean ๊ฐ์ฒด์— ํŒŒ์ผ์ด๋ฆ„/ํฌ๊ธฐ ์…‹ํŒ…
    - listBoard() ๋ฉ”์†Œ๋“œ => board ๊ฐ์ฒด์— ํŒŒ์ผ์ด๋ฆ„/ํฌ๊ธฐ ์…‹ํŒ…
  • list.jsp => ์ฒจ๋ถ€ํŒŒ์ผ ์ถ”๊ฐ€
  • show.jsp > ํŒŒ์ผ ๋‚ด์šฉ ํ‘œ์‹œ
  • delete_ok.jsp =>ํŒŒ์ผ ์‚ญ์ œ

SQL

CREATE TABLE BOARDT
(B_ID NUMBER(5) PRIMARY KEY
,B_NAME VARCHAR2(20)
,B_EMAIL VARCHAR2(50)
,B_TITLE VARCHAR2(80)
,B_CONTENT VARCHAR2(3000)
,B_DATE DATE
,B_HIT NUMBER(5) DEFAULT 0
,B_PWD VARCHAR2(12)
,B_IP VARCHAR2(15)
,B_REF NUMBER(5)
,B_STEP NUMBER(5)
,B_LEVEL NUMBER(5)
,B_FNAME VARCHAR2(100)
,B_FSIZE NUMBER(10)
);

BoardBean.java

package magic.board;

import java.sql.Timestamp;

public class BoardBean {
	private int b_id;
	private String b_name;
	private String b_email;
	private String b_title;
	private String b_content;
	private Timestamp b_date;
	private int b_hit;
	private String b_pwd;
	private String b_ip;
	private int b_ref;
	private int b_step;
	private int b_level;
	private String b_fname;
	private int b_fsize;
	
	
	public String getB_fname() {
		return b_fname;
	}
	public void setB_fname(String b_fname) {
		this.b_fname = b_fname;
	}
	public int getB_fsize() {
		return b_fsize;
	}
	public void setB_fsize(int b_fsize) {
		this.b_fsize = b_fsize;
	}
	public int getB_ref() {
		return b_ref;
	}
	public void setB_ref(int b_ref) {
		this.b_ref = b_ref;
	}
	public int getB_step() {
		return b_step;
	}
	public void setB_step(int b_step) {
		this.b_step = b_step;
	}
	public int getB_level() {
		return b_level;
	}
	public void setB_level(int b_level) {
		this.b_level = b_level;
	}
	public String getB_ip() {
		return b_ip;
	}
	public void setB_ip(String b_ip) {
		this.b_ip = b_ip;
	}
	public String getB_pwd() {
		return b_pwd;
	}
	public void setB_pwd(String b_pwd) {
		this.b_pwd = b_pwd;
	}
	public int getB_id() {
		return b_id;
	}
	public void setB_id(int b_id) {
		this.b_id = b_id;
	}
	public String getB_name() {
		return b_name;
	}
	public void setB_name(String b_name) {
		this.b_name = b_name;
	}
	public String getB_email() {
		return b_email;
	}
	public void setB_email(String b_email) {
		this.b_email = b_email;
	}
	public String getB_title() {
		return b_title;
	}
	public void setB_title(String b_title) {
		this.b_title = b_title;
	}
	public String getB_content() {
		return b_content;
	}
	public void setB_content(String b_content) {
		this.b_content = b_content;
	}
	public Timestamp getB_date() {
		return b_date;
	}
	public void setB_date(Timestamp b_date) {
		this.b_date = b_date;
	}
	
	public int getB_hit() {
		return b_hit;
	}
	public void setB_hit(int b_hit) {
		this.b_hit = b_hit;
	}
	
	//================ ํŽ˜์ด์ง€ ๋ชฉ๋ก ===================

	public static int pageSize =10; //ํ•œํŽ˜์ด์ง€์— 10๊ฐœ์˜ ๊ธ€์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜
	public static int pageCount = 1; //ํŽ˜์ด์ง€ ๊ฐœ์ˆ˜ ์นด์šดํŠธ, ํŽ˜์ด์ง€(์ปฌ๋Ÿผ)๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก ๋Š˜์–ด๋‚จ(์ดˆ๊ธฐ๊ฐ’)
	public static int pageNum = 1; //ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(๊ธฐ๋ณธ๊ฐ’)
	
	//์ด๋ถ€๋ถ„ ์ •๋ฆฌ ๋‹ค์‹œ ํ•ด์„œ ๋…ธ์…˜์— ์ •๋ฆฌํ•˜๊ธฐ
	
	// 84๊ฑด์˜ ๊ฒŒ์‹œ๊ธ€ ์กด์žฌ 
	//=> pageCount = 9 
	//pageNum = 1
	//limit = 4(์‚ฌ์ง„์—์„œ ๋ชฉ๋ก์ค‘ ์ˆซ์ž๊ฐ€ ๋ช‡๊ฐœ ์žˆ๋Š”๊ฐ€? 1,2,3,4 => 5,6,7,8 =>9 ์ด๋Ÿฐ ์ˆœ์œผ๋กœ ๋ชฉ๋ก์ด ์ ํ˜€ ์žˆ์Œ
	//temp = 0 // (pageNum -1) % limit;
	//startPage = 1 //pageNum(1) - temp(0)
	
	//if(1-4>0) ๊ฑฐ์ง“
	//for(int i = 1; i<5; i++){
	//	if(1=1)(์ฐธ) str=[1]
	//	if(1>=9)(๊ฑฐ์ง“) 
	//	}
	//for(int 2 = 1; i<5; i++){
	//	if(2=1) ๊ฑฐ์ง“
	//	else{str=[1]+ [2] //1์€ ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฌ์ง€ ์•Š๊ณ  2๋Š” ๋งํฌ๊ฐ€ ๊ฑธ๋ฆผ 
	//  if(2>=9)(๊ฑฐ์ง“) 
	//	}
	//for(int 3 = 1; i<5; i++){
		//	if(3=1) ๊ฑฐ์ง“
		//	else{str=[1]+ [2] +[3]//3์— ๋งํฌ ๊ฑธ๋ฆผ
		//  if(3>=9)(๊ฑฐ์ง“) 
		//	}
	//for(int 4 = 1; 4<5; i++){
	//	if(4=1) ๊ฑฐ์ง“
	//	else{str=[1]+ [2] + [3] + [4]//4์— ๋งํฌ ๊ฑธ๋ฆผ
	//  if(4>=9)(๊ฑฐ์ง“) 
	//	}
		
	//if (5<= 9){ 5[๋‹ค์Œ]
	//   
	//}
	
	
	// ์ตœ์ข…์ ์œผ๋กœ [1]+[2]+[3]+[4]+ ๋‹ค์Œ 
	
	
	//===============================
	// 84๊ฑด์˜ ๊ฒŒ์‹œ๊ธ€ ์กด์žฌ 
		//=> pageCount = 9 
		//pageNum = 1
		//limit = 4(์‚ฌ์ง„์—์„œ ๋ชฉ๋ก์ค‘ ์ˆซ์ž๊ฐ€ ๋ช‡๊ฐœ ์žˆ๋Š”๊ฐ€? 1,2,3,4 => 5,6,7,8 =>9 ์ด๋Ÿฐ ์ˆœ์œผ๋กœ ๋ชฉ๋ก์ด ์ ํ˜€ ์žˆ์Œ
		//temp = 0 // (pageNum -1) % limit;
		//startPage = 1 //pageNum(1) - temp(0)
		
		//if(1-4>0) ๊ฑฐ์ง“
		//for(int i = 1; i<5; i++){
			//	if(1=1)(์ฐธ) str=[1]
			//	if(1>=9)(๊ฑฐ์ง“) 
		//	}
		//for(int 2 = 1; i<5; i++){
			//	if(2=1) ๊ฑฐ์ง“
			//	else{str= [1]+ [2] //1์€ ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฌ์ง€ ์•Š๊ณ  2๋Š” ๋งํฌ๊ฐ€ ๊ฑธ๋ฆผ 
			//  if(2>=9)(๊ฑฐ์ง“) 
		//	}
		//for(int 3 = 1; i<5; i++){
			//	if(3=1) ๊ฑฐ์ง“
			//	else{str=[1]+ [2] +[3]//3์— ๋งํฌ ๊ฑธ๋ฆผ
			//  if(3>=9)(๊ฑฐ์ง“) 
			//	}
		//for(int 4 = 1; 4<5; i++){
			//	if(4=1) ๊ฑฐ์ง“
			//	else{str=[1]+ [2] + [3] + [4]//4์— ๋งํฌ ๊ฑธ๋ฆผ
			//  if(4>=9)(๊ฑฐ์ง“) 
		//	}
			
		//if (5<= 9){ 5[๋‹ค์Œ]
		//   
		//}
		
		
		// ์ตœ์ข…์ ์œผ๋กœ [1]+[2]+[3]+[4]+ ๋‹ค์Œ 
	
	
	// 84๊ฑด์˜ ๊ฒŒ์‹œ๊ธ€ ์กด์žฌ 
		//=> pageCount = 9 
		//pageNum = 5
		//limit = 4(์‚ฌ์ง„์—์„œ ๋ชฉ๋ก์ค‘ ์ˆซ์ž๊ฐ€ ๋ช‡๊ฐœ ์žˆ๋Š”๊ฐ€? 1,2,3,4 => 5,6,7,8 =>9 ์ด๋Ÿฐ ์ˆœ์œผ๋กœ ๋ชฉ๋ก์ด ์ ํ˜€ ์žˆ์Œ
		//temp = 0 // (pageNum -1) % limit;
		//startPage = 5 //pageNum(5) - temp(0)
		
		//if(5-4>0) ์ฐธ {[์ด์ „4]}
		
		//for(int i = 5; i<9; i++){
			//	if(5=5)(์ฐธ) str=[์ด์ „ 4]+[5] : ๋‘๊ฐœ ๋‹ค ๋งํฌ ๊ฑธ๋ ค์žˆ์Œ
			//	if(5>=9)(๊ฑฐ์ง“) 
		//	}
		//for(int i = 6; i<9; i++){
			//	if(6=1) ๊ฑฐ์ง“
			//	else{str= [์ด์ „4]+[5]+[6] //6์€ ๋งํฌ๊ฐ€ ๊ฑธ๋ฆผ 
			//  if(6>=9)(๊ฑฐ์ง“) 
		//	}
		//for(int i = 7; i<9; i++){
				//	if(7=5) ๊ฑฐ์ง“
				//	else{str=[์ด์ „4]+[5]+[6]+[7]
				//  if(7>=9)(๊ฑฐ์ง“) 
			//	}
		//for(int i = 8; i<9; i++){
			//	if(7=1) ๊ฑฐ์ง“
			//	else{str=[์ด์ „4]+[5]+[6]+[7]+[8]
			//  if(3>=9)(๊ฑฐ์ง“) 
		//	}
		
		//if (9<= 9){ 9[๋‹ค์Œ]
		//   
		//}
		
		
		// ์ตœ์ข…์ ์œผ๋กœ [์ด์ „ 4]+[5]+[6]+[7]+[8]+ [๋‹ค์Œ 9]
		
		// 84๊ฑด์˜ ๊ฒŒ์‹œ๊ธ€ ์กด์žฌ 
		//pageCount = 9 
		//pageNum = 9
		//limit = 4(์‚ฌ์ง„์—์„œ ๋ชฉ๋ก์ค‘ ์ˆซ์ž๊ฐ€ ๋ช‡๊ฐœ ์žˆ๋Š”๊ฐ€? 1,2,3,4 => 5,6,7,8 =>9 ์ด๋Ÿฐ ์ˆœ์œผ๋กœ ๋ชฉ๋ก์ด ์ ํ˜€ ์žˆ์Œ
		//temp = 0 // (pageNum -1) % limit;
		//startPage = 9 //pageNum(9) - temp(0)
		
		//if(9-4>0) ์ฐธ {[์ด์ „8]}
			//for(int i = 9; i<13; i++){
			//	if(9=9)(์ฐธ) str=[์ด์ „ 8]+[9] : ๋‘๊ฐœ ๋‹ค ๋งํฌ ๊ฑธ๋ ค์žˆ์Œ
			//	if(9>=9)์ฐธ
			//	}
			//if(13<=9)๊ฑฐ์ง“ 
		//   
		//}
		
		//์ตœ์ข…์ ์œผ๋กœ [์ด์ „ 8]+[9]
	//=============
	
	public static String pageNumber(int limit) {
		//ํŽ˜์ด์ง€ ๋ชฉ๋ก๋“ค์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๋ฉ”์†Œ๋“œ
		//int limit -> ๋ช‡๊ฐœ์˜ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ• ๊ฒƒ์ธ์ง€ ์„ค์ •

		String str ="";
		int temp = (pageNum -1) % limit;//์‹œ์ž‘ ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ•จ
		int startPage = pageNum - temp; // ์‹œ์ž‘ํŽ˜์ด์ง€ ์„ค์ • "1 - 0 = 1" ์ด๊ธฐ ๋•Œ๋ฌธ์— 1์ด ๋จ
		
		if((startPage - limit) > 0) {//[์ด์ „]์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ if๋ฌธ
			//limit 4, temp 0 , startPage 1์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ
			//if((1-4)>0)
			//pageNum = 5 ์ธ๊ฒฝ์šฐ => startPage 5
			//if((5-4) >0 ) => ์ฐธ 
			
			str ="<a href='list.jsp?pageNum="+(startPage-1)+"'>[์ด์ „]</a>&nbsp;&nbsp;";
			//str = [์ด์ „]
			
			
		}
		
		
		for (int i = startPage; i < (startPage+limit); i++) {
			//ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋ช‡๊ฐœ์ธ์ง€ ๋ชจ๋ฆ„. ์ฆ‰ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜์—ดํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ
			
			//for(i = 1; i < 5; i++) - >4๊นŒ์ง€ ๋‚˜์˜ด
			//pageNum = 5์ธ๊ฒฝ์šฐ for(i= 5; i<9;i++)
			
			if (i == pageNum) {
				//i = 1 ์ด๋ฉด ๋งํฌ๊ฐ€ ๊ฑธ๋ฆฌ์ง€ ์•Š์Œ
				str += "["+i+"]&nbsp;&nbsp;";
				//str = [1]
			}else {
				str += "<a href='list.jsp?pageNum="+i+"'>["+i+"]</a>&nbsp;&nbsp;";
			}
		
			if (i >= pageCount) {
				break;
			}
		}
		
		if((startPage + limit) <= pageCount) {//[๋‹ค์Œ]์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ if๋ฌธ
						
			str +="<a href='list.jsp?pageNum="+(startPage+limit)+"'>[๋‹ค์Œ]</a>&nbsp;&nbsp;";
			
//			str = "<a href='list.jsp?pageNum="+(startPage-1)+"'>[์ด์ „]</a>&nbsp;&nbsp;";
			//str = [์ด์ „]
		}
		return str;
	}
}

BoardDBBean.java

package magic.board;

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

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class BoardDBBean {

	//1. ์ „์—ญ BoardDBBean ๊ฐ์ฒด ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	private static BoardDBBean instance = new BoardDBBean();
	public static BoardDBBean getInstance(){
		return instance;
	//getConnection์ด๋‚˜  getInstance๋Š” ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์Œ(์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค๋Š” ๋œป)
	//jsp์—์„œ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœํ•˜๋ฉด ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ
	}
	
	//2.์ฟผ๋ฆฌ ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ปค๋„ฅ์…˜ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	public  Connection getConnection( ) throws Exception{
		Context ctx =  new InitialContext();
		DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
		//๊ฒฝ๋กœ ์ฐพ๊ธฐ
		return ds.getConnection();
		//getConnection์ด๋‚˜  getInstance๋Š” ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์Œ(์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค๋Š” ๋œป)
		//jsp์—์„œ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœํ•˜๋ฉด ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ
	}

	
	//3. ์ „๋‹ฌ์ธ์ž๋กœ ๋ฐ›์€ BoardBean board๋ฅผ BOARDT ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	 public int insertBoard(BoardBean board) throws Exception {
	      int re = -1;
	      Connection conn = null;
	      PreparedStatement pstmt = null;
	      ResultSet rs = null;
	      String sql = "";
	      int number;
	      
//	      ๋‹ต๋ณ€๊ธ€์„ ์œ„ํ•œ ๋ณ€์ˆ˜
	      int id = board.getB_id();
	      int ref = board.getB_ref();
	      int step = board.getB_step();
	      int level = board.getB_level();
	      
	      
	      try {
	         conn = getConnection();
	         sql = "SELECT MAX(B_ID) FROM BOARDT";
	         pstmt = conn.prepareStatement(sql);
	         rs = pstmt.executeQuery();
	         
	         if (rs.next()) {
	            number = rs.getInt(1)+1;
	         } else { 
	            number = 1;
	         }
	         
//	         id๊ฐ€ ๊ฐ’์ด ์žˆ๊ฑฐ๋‚˜ 0์ด๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. 0 ์ผ๋•Œ๋Š” ์ƒˆ๊ธ€, 0์ด ์•„๋‹ ๋•Œ๋Š” ๋‹ต๋ณ€๊ธ€
	         if (id != 0) { //๋‹ต๋ณ€๊ธ€์ผ ๋•Œ
//	            update๋ฌธ์ด ํ•ต์‹ฌ
	            sql = "UPDATE BOARDT SET b_step = b_step+1 WHERE b_ref=? AND b_step>?";
	            pstmt = conn.prepareStatement(sql);
	            pstmt.setInt(1, ref);
	            pstmt.setInt(2, step);
	            pstmt.executeUpdate();
	            step = step + 1;
	            level = level + 1;
	         } else { //๋‹ต๋ณ€๊ธ€์ด ์•„๋‹ ๋•Œ=์ƒˆ๊ธ€
	            ref = number;
	            step = 0;
	            level = 0;
	         }
	         
//	         System.out.println("@@@### board.number ===> "+number);
//	         System.out.println("@@@### board.getB_name() ===> "+board.getB_name());
//	         System.out.println("@@@### board.getB_email() ===> "+board.getB_email());
//	         System.out.println("@@@### board.getB_title() ===> "+board.getB_title());
//	         System.out.println("@@@### board.getB_content() ===> "+board.getB_content());
//	         System.out.println("@@@### board.getB_date() ===> "+board.getB_date());
//	         System.out.println("@@@### board.getB_pwd() ===> "+board.getB_pwd());
//	         System.out.println("@@@### board.getB_ip() ===> "+board.getB_ip());
	         
//	         sql = "INSERT INTO BOARDT VALUES(?,?,?,?,?,?,?,?,?)";
//	         sql = "INSERT INTO BOARDT VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
	         sql = "INSERT INTO BOARDT VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
	         pstmt = conn.prepareStatement(sql);
	         
	         pstmt.setInt(1, number);
	         pstmt.setString(2, board.getB_name());
	         pstmt.setString(3, board.getB_email());
	         pstmt.setString(4, board.getB_title());
	         pstmt.setString(5, board.getB_content());
	         pstmt.setTimestamp(6, board.getB_date());
	         pstmt.setInt(7, board.getB_hit());
	         pstmt.setString(8, board.getB_pwd());
	         pstmt.setString(9, board.getB_ip());
	         pstmt.setInt(10, ref);
	         pstmt.setInt(11, step);
	         pstmt.setInt(12, level);
	         pstmt.setString(13, board.getB_fname());
	         pstmt.setInt(14, board.getB_fsize());
	         pstmt.executeUpdate();
	         
	         re = 1;
//	         re = pstmt.executeUpdate();
	      }  catch(SQLException ex) {
	         System.out.println("์ถ”๊ฐ€ ์‹คํŒจ");
	         ex.printStackTrace();
	      } finally {
	         try {
	            if(pstmt != null) pstmt.close();
	            if(conn != null) conn.close();
	         } catch(Exception e) {
	            e.printStackTrace();
	         }
	      }
	      
	      return re;
	   }
	
	//4. ๋ฆฌํ„ดํƒ€์ž…์ด ArrayList<BoardBean> ์ธ listBoard() ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€(๊ธ€๋ชฉ๋ก์„ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ)
	public ArrayList<BoardBean> listBoard(String pageNumber) throws Exception{//์ œ๋„ค๋ฆญ ์‚ฌ์šฉํ•จ , ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” BoardBean
		
		Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
		Statement stmt = null;// DB์— SQL ์ „๋‹ฌ
		int dbCount = 0;//๊ธ€์ด ๋ช‡๊ฐœ๋‚˜ ์žˆ๋Š”์ง€ ํ™•์ธ(๊ฒŒ์‹œ๊ธ€์˜ ๊ฐฏ์ˆ˜
		int absoultepage = 0;//๊ธ€์ด ๋ช‡๊ฐœ๋‚˜ ์žˆ๋Š”์ง€ ํ™•์ธ(๊ฒŒ์‹œ๊ธ€์˜ ๊ฐฏ์ˆ˜
		ResultSet rs = null;
		ResultSet pageSet = null;
		
		//db ์ •๋ณด ๋ฐ›๊ธฐ ์œ„ํ•จ
		String sql=" SELECT b_id \r\n" + 
				"     , b_name\r\n" + 
				"     , b_email\r\n" + 
				"     , b_title\r\n" + 
				"     , b_content\r\n" + 
				"     , b_date\r\n" + 
				"     , b_hit\r\n" + 
				"     , b_pwd\r\n" + 
				"     , b_ip\r\n" + 
				"     , b_ref\r\n" + 
				"     , b_step\r\n" + 
				"     , b_level\r\n" + 
				"     , b_fname\r\n" + 
				"     , b_fsize\r\n" + 
				"  FROM BOARDT\r\n" + 
				" ORDER BY b_ref desc, b_step asc";//ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ ์ •๋ ฌ๋˜๊ฒŒ๋” ํ•จ.
		
		
		String sql2="SELECT COUNT(b_id) FROM BOARDT";
		
		ArrayList<BoardBean> boardList = new ArrayList<BoardBean>();//ArrayList๋กœ ๊ฒŒ์‹œ๊ธ€๋“ค์„ ๋ฐ›์Œ
		try {
			conn = getConnection();
//			stmt = conn.createStatement();// DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
			// ๋งค๊ฐœ๋ณ€์ˆ˜ (,๋ณ€๊ฒฝ์ „ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ฒ ๋‹ค.)
			// DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
			pageSet = stmt.executeQuery(sql2);//์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ rs์— ๋ฐ›์Œ(select ์กฐํšŒ๋ฌธ์€ executeQuery ๋ฉ”์†Œ๋“œ ์ฒ˜๋ฆฌ
			
			if(pageSet.next()) {
				dbCount = pageSet.getInt(1);
				pageSet.close();
			}
			
			if (dbCount % BoardBean.pageSize == 0) { //pageCount ์„ธํŒ…(ํŽ˜์ด์ง€ ๊ฐœ์ˆ˜๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)
				//80 % 10 = 0
				BoardBean.pageCount = dbCount / BoardBean.pageSize; //80 /10
			} else {//84 % 10 = 4
				BoardBean.pageCount = dbCount / BoardBean.pageSize +1 ; //80/10 +1
			}
			
			
			if (pageNumber != null) {
				BoardBean.pageNum = Integer.parseInt(pageNumber); //๋งค๊ฐœ๋ณ€์ˆ˜์— ํ•ด๋‹น๋˜๋Š” pageNumber ์„ธํŒ…
				absoultepage = (BoardBean.pageNum - 1) * BoardBean.pageSize + 1;
			}
			
			rs = stmt.executeQuery(sql);//์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ rs์— ๋ฐ›์Œ(select ์กฐํšŒ๋ฌธ์€ executeQuery ๋ฉ”์†Œ๋“œ ์ฒ˜๋ฆฌ
			
			if (rs.next()) {//while๋ฌธ์„ ๊ฐ์Œˆ
				rs.absolute(absoultepage);
				int count = 0;
			
				while(count < BoardBean.pageSize) {//pageSize์ˆ˜ (10๋ฒˆ) ๋งŒํผ  ๋ฐ˜๋ณต
					//๋‹ค์Œ(์—ฌ๋Ÿฌ๊ฐœ์˜) ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์คŒ.
					
					BoardBean board = new BoardBean();
					//๊ฒฐ๊ณผ๊ฐ’์„ ์„ธํŒ…
					board.setB_id(rs.getInt(1));//์•„์ด๋””๋Š” INT์ด๋ฏ€๋กœ getInt๋กœ ํ•ด์•ผํ•จ
					board.setB_name(rs.getString(2));
					board.setB_email(rs.getString(3));
					board.setB_title(rs.getString(4));
					board.setB_content(rs.getString(5));
					board.setB_date(rs.getTimestamp(6));
					board.setB_hit(rs.getInt(7));//์กฐํšŒ์ˆ˜๋Š” INT์ด๋ฏ€๋กœ getInt๋กœ ํ•ด์•ผํ•จ
					board.setB_pwd(rs.getString(8));
					board.setB_ip(rs.getString(9));
					board.setB_ref(rs.getInt(10));
					board.setB_step(rs.getInt(11));
					board.setB_level(rs.getInt(12));
					board.setB_fname(rs.getString(13));
					board.setB_fsize(rs.getInt(14));
					
	//				๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ”๋Š”์ง€ ํ™•์ธ ํ•ด์•ผํ•จ
	//				System.out.println("@@@@#### board.getB_id()=====>"+board.getB_id());
	//				System.out.println("@@@@#### board.getB_name()=====>"+board.getB_name());
	//				System.out.println("@@@@#### board.getB_email()=====>"+board.getB_email());
	//				System.out.println("@@@@#### board.getB_title()=====>"+board.getB_title());
	//				System.out.println("@@@@#### board.getB_content()=====>"+board.getB_content());
	//				System.out.println("@@@@#### board.getB_pwd()=====>"+board.getB_pwd());
	//				System.out.println("@@@@####");
	
					boardList.add(board);//๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ฒŒ์‹œ๊ธ€๋“ค์„ ์Œ“์Œ
					
					if (rs.isLast()) {//๊ฒฐ๊ณผ๊ฐ’์ด ๋งˆ์ง€๋ง‰์ด๋ฉด ๋น ์ ธ๋‚˜์˜ค๊ธฐ
						break;
					} else {
						rs.next();//๋งˆ์ง€๋ง‰์ด ์•„๋‹ˆ๋ฉด ๊ณ„์† ์ง„ํ–‰
					}
					
					count++;
				}

			}
		} catch(SQLException ex) {
	         ex.printStackTrace();
	      } finally {
	    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
	    		  if(rs != null)  rs.close();
	    		  if(stmt != null)  stmt.close();
	    		  if(conn != null)  conn.close();
	    	  }catch(Exception e){
	    		  e.printStackTrace();
	    	  }
	      }
		return boardList;
	}
	
	
	// 5. ๋ฆฌํ„ดํƒ€์ž…์ด BoardBean์ธ getBoard() ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
	public BoardBean getBoard (int bid, boolean hitadd) throws Exception{
		//๊ธ€๋ฒˆํ˜ธ๋งŒ ๋„˜๊ธฐ๋ฉด ์•Œ์•„์„œ ๋‚ด์šฉ์ด ๋„˜์–ด๊ฐ€๋Š” ๋ฉ”์†Œ๋“œ
		//์กฐํšŒ ์ˆ˜ ๋•Œ๋ฌธ์— ๋ถ„๊ธฐ์ฒ˜๋ฆฌ  ํ•ด๊ฐ€
		
		Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
		PreparedStatement pstmt = null;// DB์— SQL ์ „๋‹ฌ
		PreparedStatement pstmtup = null;// ์กฐํšŒ์ˆ˜ ์—…๋ฐ์ดํŠธ
		ResultSet rs = null;
		//db ์ •๋ณด ๋ฐ›๊ธฐ ์œ„ํ•จ
		BoardBean board = null;
		String sql = "";//ํ•ด๋‹น ๋ฒˆํ˜ธ์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ๋˜๊ฒŒ ์ฟผ๋ฆฌ ์ž‘์„ฑ

		try {
			conn = getConnection();
			if (hitadd==true) {
				//์กฐํšŒ์ˆ˜ ์—…๋ฐ์ดํŠธ ์ถ”๊ฐ€ํ•จ
				sql = "UPDATE BOARDT SET b_hit=b_hit+1 WHERE b_id=?";
				pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
//			 DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
				pstmt.setInt(1, bid);//์กฐ๊ฑด์ด ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— (?๊ฐ€ ํ•˜๋‚˜์ž„)
//			rs = pstmt.executeQuery();//์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ rs์— ๋ฐ›์Œ(select ์กฐํšŒ๋ฌธ์€ executeQuery ๋ฉ”์†Œ๋“œ ์ฒ˜๋ฆฌ
				pstmt.executeUpdate();//์—…๋ฐ์ดํŠธ๋‹ˆ๊น ์—…๋ฐ์ดํŠธ๋กœ ๋ฐ”๊ฟ”์คŒ
				//pstmtup.close();
				//์—…๋ฐ์ดํŠธ ์ถ”๊ฐ€ ๋!
			}

			sql = "SELECT b_id\r\n" + 
					"    , b_name\r\n" + 
					"    , b_email\r\n" + 
					"    , b_title\r\n" + 
					"    , b_content\r\n" + 
					"    , b_date\r\n" + 
					"    , b_hit\r\n" + 
					"    , b_pwd\r\n" + 
					"    , b_ip\r\n" + 
					"    , b_ref\r\n" + 
					"    , b_level\r\n" + 
					"    , b_step\r\n" + 
					"    , b_fname\r\n" + 
					"    , b_fsize\r\n" + 
					" FROM BOARDT\r\n" + 
					" WHERE b_id=?";//ํ•ด๋‹น ๋ฒˆํ˜ธ์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ๋˜๊ฒŒ ์ฟผ๋ฆฌ ์ž‘์„ฑ
			pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
//			 DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
			pstmt.setInt(1, bid);//์กฐ๊ฑด์ด ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— (?๊ฐ€ ํ•˜๋‚˜์ž„)
			rs = pstmt.executeQuery();//select ๋ฌธ์ด๋‹ˆ๊น ์ต์ŠคํํŠธ ์ฟผ๋ฆฌ
			
			
			if(rs.next()) {//๋‹ค์Œ(์—ฌ๋Ÿฌ๊ฐœ์˜) ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์คŒ.
				board = new BoardBean();//๊ฐ์ฒด์ƒ์„ฑ(๋ฆฌํ„ด๊ฐ’์ด board)
				board.setB_id(rs.getInt(1));
				//board.setB_id(bid);๋„ ๊ฐ€๋Šฅํ•จ
				board.setB_name(rs.getString(2));
				board.setB_email(rs.getString(3));
				board.setB_title(rs.getString(4));
				board.setB_content(rs.getString(5));
				board.setB_date(rs.getTimestamp(6));
				board.setB_hit(rs.getInt(7));
				board.setB_pwd(rs.getString(8));
				board.setB_ip(rs.getString(9));
				board.setB_ref(rs.getInt(10));//์กฐํšŒ์ˆ˜๋Š” INT์ด๋ฏ€๋กœ getInt๋กœ ํ•ด์•ผํ•จ
				board.setB_step(rs.getInt(11));
				board.setB_level(rs.getInt (12));
				board.setB_fname(rs.getString(13));
				board.setB_fsize(rs.getInt (14));
//				
////				๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ”๋Š”์ง€ ํ™•์ธ ํ•ด์•ผํ•จ
				System.out.println("@@@@#### board.getB_id()=====>"+board.getB_id());
				System.out.println("@@@@#### board.getB_name()=====>"+board.getB_name());
				System.out.println("@@@@#### board.getB_email()=====>"+board.getB_email());
				System.out.println("@@@@#### board.getB_title()=====>"+board.getB_title());
				System.out.println("@@@@#### board.getB_content()=====>"+board.getB_content());
				System.out.println("@@@@#### board.getB_fname()=====>"+board.getB_fname());
				System.out.println("@@@@#### board.getB_fsize()=====>"+board.getB_fsize());
				//System.out.println("@@@@#### board.setB_pwd()=====>"+board.setB_pwd(sql));
			}

		} catch(SQLException ex) {
	         ex.printStackTrace();
	      } finally {
	    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
	    		  if(rs != null)  rs.close();
	    		  if(conn != null)  conn.close();
	    		  if(pstmt != null)  pstmt.close();
	    	  }catch(Exception e){
	    		  e.printStackTrace();
	    	  }
	      }
		return board;
	}
	
	
	// 6.deleteBoard() ๋ฉ”์†Œ๋“œ => ์‚ญ์ œํ•  ๊ธ€ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธํ•˜๋Š” ๋ฉ”์†Œ๋“œ 
	public int deleteBoard (int b_id, String b_pwd) throws Exception{//๊ธ€๋ฒˆํ˜ธ๋งŒ ๋„˜๊ธฐ๋ฉด ์•Œ์•„์„œ ๋‚ด์šฉ์ด ๋„˜์–ด๊ฐ€๋Š” ๋ฉ”์†Œ๋“œ 
		// id์™€ pwd๋ฅผ ๋ฐ›์•„ ์‚ญ์ œํ•˜๋Š” ๋ฉ”์†Œ๋“œ 
		Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
		PreparedStatement pstmt = null;// DB์— SQL ์ „๋‹ฌ
		ResultSet rs = null;
		int re = -1;

		
		String sql = "";//ํ•ด๋‹น ๋ฒˆํ˜ธ์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ๋˜๊ฒŒ ์ฟผ๋ฆฌ ์ž‘์„ฑ
		String pwd = "";//๋น„๋ฐ€๋ฒˆํ˜ธ 

		
		try {
			conn = getConnection();
			sql = "SELECT B_PWD FROM BOARDT where B_ID=?"; // ๊ธ€ ๋ฒˆํ˜ธ์— ๋”ฐ๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ
			pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
			pstmt.setInt(1, b_id);//๊ฐ’์„ ์ง‘์–ด๋„ฃ์Œ(์ฟผ๋ฆฌ์˜ ?๋ถ€๋ถ„)
			rs = pstmt.executeQuery();

			if(rs.next()) {//๋‹ค์Œ(์—ฌ๋Ÿฌ๊ฐœ์˜) ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์คŒ.
				pwd = rs.getString(1);
				//๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ 
				if (pwd.equals(b_pwd)) {
					sql = "DELETE FROM BOARDT WHERE B_ID=?";
					pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ›์Œ
					pstmt.setInt(1, b_id);
					pstmt.executeUpdate();
					re = 1;
				}else {
					re =0;
				}

			}

		} catch(SQLException ex) {
			 System.out.println("์‚ญ์ œ ์‹คํŒจ");
	         ex.printStackTrace();
	      } finally {
	    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
	    		  if(rs != null)  rs.close();
	    		  if(conn != null)  conn.close();
	    		  if(pstmt != null)  pstmt.close();
	    	  }catch(Exception e){
	    		  e.printStackTrace();
	    	  }
	      }
		return re;
	}
	
	//7.ํ…Œ์ด๋ธ” ์ˆ˜์ • editBoard ๋ฉ”์†Œ๋“œ
		public int editBoard (BoardBean board) throws Exception{
			int re = -1;
			Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
			PreparedStatement pstmt = null;// DB์— SQL ์ „๋‹ฌ
			ResultSet rs = null;
			String sql ="";
			String pwd = "";//๋น„๋ฐ€๋ฒˆํ˜ธ 

			
			try {
				conn = getConnection();
				sql = "SELECT B_PWD FROM BOARDT where B_ID=?"; // ๊ธ€ ๋ฒˆํ˜ธ์— ๋”ฐ๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ
				pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
				pstmt.setInt(1, board.getB_id());//๊ฐ’์„ ์ง‘์–ด๋„ฃ์Œ(์ฟผ๋ฆฌ์˜ ?๋ถ€๋ถ„),board ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ b_id ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ
				rs = pstmt.executeQuery();
				
				if (rs.next()) {
					pwd = rs.getString(1);
					
					if  (pwd.equals(board.getB_pwd())) {
						sql="UPDATE BOARDT \r\n" + 
								"      SET B_NAME=?\r\n" + 
								"        , B_EMAIL=?\r\n" + 
								"        , B_TITLE=?\r\n" + 
								"        , B_CONTENT=?\r\n" + 
								"        WHERE B_ID=?";
						
						pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ›์Œ
						pstmt.setString(1,board.getB_name());
						pstmt.setString(2,board.getB_email());
						pstmt.setString(3,board.getB_title());
						pstmt.setString(4,board.getB_content());
						pstmt.setInt(5, board.getB_id());
						pstmt.executeUpdate();
						re = 1;
					}else {
						re =0;//๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™์ง€ ์•Š์€๊ฒƒ
					}
				}

			} catch(SQLException ex) {
				 System.out.println("์ˆ˜์ • ์‹คํŒจ");
		         ex.printStackTrace();
		      } finally {
		    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
		    		  if(rs != null)  rs.close();
		    		  if(conn != null)  conn.close();
		    		  if(pstmt != null)  pstmt.close();
		    	  }catch(Exception e){
		    		  e.printStackTrace();
		    	  }
		      }
			return re;	
		}
}

write.jsp

<%@page import="magic.board.BoardBean"%>
<%@page import="magic.board.BoardDBBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String pageNum = request.getParameter("pageNum");//pageNum์„ ๋ฐ›์Œ
	

	int b_id=0, b_ref=1, b_step=0, b_level=0;
	String b_title="";
	if(request.getParameter("b_id") != null){
		b_id = Integer.parseInt(request.getParameter("b_id"));
	}	

	BoardDBBean db = BoardDBBean.getInstance();
	BoardBean board = db.getBoard(b_id, false);
	
	if(board != null){
		b_title = board.getB_title();
		b_ref = board.getB_ref();
		b_step = board.getB_step();
		b_level = board.getB_level();
	}
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
	<script language="JavaScript" src="board.js" charset="utf-8"></script>
</head>
<body>
	<center>
		<h1>๊ธ€ ์˜ฌ ๋ฆฌ ๊ธฐ</h1>
		<form name="reg_frm" method="post" action="write_ok.jsp" enctype="multipart/form-data">
			<input type="hidden" name="b_id" value="<%= b_id %>">
			<input type="hidden" name="b_ref" value="<%= b_ref %>">
			<input type="hidden" name="b_step" value="<%= b_step %>">
			<input type="hidden" name="b_level" value="<%= b_level %>">
			<table>
				<tr height="30">
					<td width="80">์ž‘์„ฑ์ž</td>
					<td width="140">
						<input type="text" name="b_name" size="10" maxlength="20">
					</td>
					<td width="80">์ด๋ฉ”์ผ</td>
					<td width="240">
						<input type="text" name="b_email" size="24" maxlength="50">
					</td>
				</tr>
				<tr height="30">
					<td width="80">๊ธ€์ œ๋ชฉ</td>
					<td colspan="3" width="460">
						<%
							if(b_id == 0){
						%>
								<input type="text" name="b_title" size="55" maxlength="80">
						<%
							}else{
						%>
								<input type="text" name="b_title" size="55" maxlength="80"
									 value="[๋‹ต๋ณ€]:<%= b_title %>">
						<%
							}
						%>
					</td>
				</tr>
				<tr height="30">
					<td width="80">ํŒŒ  ์ผ</td>
					<td colspan="3" width="140">
						<input type="file" name="b_fname" size="40" maxlength="100">
					</td>
				</tr>
				<tr>
					<td colspan="4">
						<textarea name="b_content" rows="10" cols="65"></textarea>
					</td>
				</tr>
				<tr height="30">
					<td width="80">์•”&nbsp;&nbsp;ํ˜ธ</td>
					<td colspan="3" width="460">
						<input type="password" name="b_pwd" size="12" maxlength="12">
					</td>
				</tr>
				<tr height="50" align="center">
					<td colspan="4">
						<input type="button" value="๊ธ€์“ฐ๊ธฐ" onclick="check_ok()">&nbsp;
						<input type="reset" value="๋‹ค์‹œ์ž‘์„ฑ">
						<input type="button" value="๊ธ€๋ชฉ๋ก" onclick="location.href='list.jsp?pageNum=<%=pageNum%>'">&nbsp;
						<!-- ํŽ˜์ด์ง€ ๋ชฉ๋ก์— ๋งž์ถฐ์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ  -->
					</td>
				</tr>
			</table>
		</form>
	</center>
</body>
</html>

write_ok.jsp

<%@page import="com.jspsmart.upload.SmartUpload"%>
<%@page import="com.jspsmart.upload.File"%>
<%@page import="java.net.InetAddress"%>
<%@page import="magic.board.BoardDBBean"%>
<%@page import="java.sql.Timestamp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	request.setCharacterEncoding("UTF-8");  
%>  
<jsp:useBean class="magic.board.BoardBean" id="board"></jsp:useBean>
<jsp:setProperty property="*" name="board"/>

<%
//ํŒŒ์ผ ์—…๋กœ๋“œ
		
	SmartUpload upload = new SmartUpload();//๊ฐ์ฒด์ƒ์„ฑ
	upload.initialize(pageContext);//๊ธฐ๋ณธ ๊ฐ์ฒด ์ดˆ๊ธฐํ™”
	upload.upload();//upload ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
	
	String fName =null;
	int fileSize = 0;
	
	File file = upload.getFiles().getFile(0);//ํŒŒ์ผ์ด ํ•˜๋‚˜์ด๋‹ˆ๊น 0์œผ๋กœ ํ•˜๋ฉด ๋จ ์—ฌ๋Ÿฌ๊ฐœ๋ฉด ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉํ•ด์„œ i๋กœ ๋‘๊ธฐ(for)
	
	if(!file.isMissing()){
		fName = file.getFileName();
		file.saveAs("/upload/"+file.getFileName());//ํŒŒ์ผ ์ด๋ฆ„์„ ์ €์žฅํ•˜๊ฒ ๋‹ค.
		fileSize = file.getSize();
	}
	
%>

<%
	InetAddress address = InetAddress.getLocalHost();
	String ip = address.getHostAddress();

	//๋ณ„๋„๋กœ write.jsp์˜ name ์ฒ˜๋ฆฌ
	//๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•˜์˜€์„๋•Œ null๊ฐ’์ด ๋œจ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•จ
	board.setB_name(upload.getRequest().getParameter("b_name"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_email(upload.getRequest().getParameter("b_email"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_title(upload.getRequest().getParameter("b_title"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_content(upload.getRequest().getParameter("b_content"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_pwd(upload.getRequest().getParameter("b_pwd"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	//
	
	board.setB_date(new Timestamp(System.currentTimeMillis()));
	//board.setB_ip(request.getRemoteAddr());
	board.setB_ip(ip);
	
	//ํŒŒ์ผ ์—…๋กœ๋“œ ๊ด€๋ จ ๋ถ€๋ถ„
	board.setB_fname(fName);
	board.setB_fsize(fileSize);
	////ํŒŒ์ผ ์—…๋กœ๋“œ ๊ด€๋ จ ๋ถ€๋ถ„ ๋! 
	
	
	BoardDBBean db = BoardDBBean.getInstance();
	int re = db.insertBoard(board);
	
	
	
	
	if(re == 1){
		response.sendRedirect("list.jsp");
	}else{
		response.sendRedirect("write.jsp");
	}
%>

list.jsp

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.sql.Timestamp"%>
<%@page import="magic.board.BoardBean"%>
<%@page import="java.util.ArrayList"%>
<%@page import="magic.board.BoardDBBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String pageNum = request.getParameter("pageNum");//pageNum์„ ๋ฐ›์Œ

	if(pageNum == null){//list๋ฅผ ์ฒ˜์Œ ์‹คํ–‰ํ•˜์˜€์„๋•Œ ์•„๋ฌด๊ฒƒ๋„ ์—†์„๋•Œ ๋ณด์—ฌ์ค„ ํŽ˜์ด์ง€
		pageNum ="1";
	}
	
	BoardDBBean db = BoardDBBean.getInstance();
	ArrayList<BoardBean> boardList = db.listBoard(pageNum);
	int b_id, b_hit, b_level=0, b_fsize=0;//์ดˆ๊ธฐ๊ฐ’ 0
	String b_name, b_email, b_title, b_content,b_fname;
	Timestamp b_date;
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<h1>๊ฒŒ์‹œํŒ์— ๋“ฑ๋ก๋œ ๊ธ€ ๋ชฉ๋ก ๋ณด๊ธฐ</h1>
		<table width="600">
			<tr>
				<td align="right">
					<a href="write.jsp?pageNum=<%=pageNum%>">๊ธ€ ์“ฐ ๊ธฐ</a>
					<!-- ํŽ˜์ด์ง€ ๋ชฉ๋ก ๋ฒˆํ˜ธ์— ๋งž๊ฒŒ ๊ธ€ ์“ฐ๊ธฐ ์ด๋™  -->
				</td>
			</tr>
		</table>
	</center>
	<center>
		<table border="1" width="800" cellspacing="0">
			<tr height="25">
				<td width="40" align="center">๋ฒˆํ˜ธ</td>
				<td width="80" align="center">์ฒจ๋ถ€ํŒŒ์ผ</td>
				<td width="450" align="center">๊ธ€์ œ๋ชฉ</td>
				<td width="120" align="center">์ž‘์„ฑ์ž</td>
				<td width="130" align="center">์ž‘์„ฑ์ผ</td>
				<td width="60" align="center">์กฐํšŒ์ˆ˜</td>
			</tr>
			<%
				for(int i=0; i<boardList.size(); i++){
					BoardBean board = boardList.get(i);
					
					b_id = board.getB_id();
					b_name = board.getB_name();
					b_email = board.getB_email();
					b_title = board.getB_title();
					b_content = board.getB_content();
					b_date = board.getB_date();
					b_hit = board.getB_hit();
					b_level = board.getB_level();
					b_fname = board.getB_fname();
					b_fsize = board.getB_fsize();
			%>
			<tr height="25" bgcolor="#f7f7f7"
				onmouseover="this.style.backgroundColor='#eeeeef'"
				onmouseout="this.style.backgroundColor='#f7f7f7'">
				<td align="center"><%= b_id %></td>
				<td align="center">
					<%
						if(b_fsize > 0){
					%>
							<img src="../images/zip.gif">
					<%
						}
					
					%>
				</td>
				<td>
					<%
						if(b_level > 0){
							for(int j=0; j<b_level; j++){
					%>
								&nbsp;
					<%
							}
					%>
							<img src="../images/AnswerLine.gif" width="16" height="16">
					<%
						}
					%>
					<a href="show.jsp?b_id=<%= b_id %>&pageNum=<%= pageNum %>">
						<%= b_title %>
					</a>
				</td>
				<td align="center">
					<a href="mailto:<%= b_email %>">
						<%= b_name %>
					</a>
				</td>
				<td align="center">
					<%-- <%= b_date %> --%>
					<%= sdf.format(b_date) %>
				</td>
				<td align="center">
					<%= b_hit %>
				</td>
			</tr>
			<%
				}
			%>
		</table>
		
		<%= BoardBean.pageNumber(4) %>
		<!--  return ๋ฐ›์•„์„œ 4ํŽ˜์ด์ง€์”ฉ ๋‚˜๋ˆ ์„œ ์ถœ๋ ฅ  -->
	</center>
</body>
</html>

show.jsp

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="magic.board.BoardBean"%>
<%@page import="magic.board.BoardDBBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%	
	String pageNum = request.getParameter("pageNum");//pageNum์„ ๋ฐ›์Œ	
	
	int bid = Integer.parseInt(request.getParameter("b_id"));
	BoardDBBean db = BoardDBBean.getInstance();
	//BoardBean board = db.getBoard(bid);
	BoardBean board = db.getBoard(bid, true);
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<h1>๊ธ€ ๋‚ด ์šฉ ๋ณด ๊ธฐ</h1>
		<table border="1" width="600" cellspacing="0">
			<tr height="30" align="center">
				<td width="100">๊ธ€๋ฒˆํ˜ธ</td>
				<td width="200">
					<%= bid %>
				</td>
				<td width="100">์กฐํšŒ์ˆ˜</td>
				<td width="200">
					<%= board.getB_hit() %>
				</td>
			</tr>
			<tr height="30" align="center">
				<td width="100">์ž‘์„ฑ์ž</td>
				<td width="200">
					<%= board.getB_name() %>
				</td>
				<td width="100">์ž‘์„ฑ์ผ</td>
				<td width="200">
					<%-- <%= board.getB_date() %> --%>
					<%= sdf.format(board.getB_date()) %>
				</td>
			</tr>
			<tr height="30" align="center">
				<td width="110">ํŒŒ&nbsp;&nbsp;์ผ</td>
				<td width="200" align="center" colspan="3">
					&nbsp;
					<%
						if(board.getB_fname() != null){ 
					%>
							 <img src="../images/zip.gif">
                     		<a href="../upload/<%= board.getB_fname() %>">
                   			     ์›๋ณธํŒŒ์ผ : <%= board.getB_fname() %>
                    	 	</a>
					<%
						}
					%>
				</td>
			</tr>
			<tr height="30" align="center">
				<td width="100">๊ธ€์ œ๋ชฉ</td>
				<td width="200" align="left" colspan="3">
					<%= board.getB_title() %>
				</td>
			</tr>
			<tr height="30" align="center">
				<td width="100">๊ธ€๋‚ด์šฉ</td>
				<td width="200" align="left" colspan="3"> 
					<%= board.getB_content() %>
				</td>
			</tr>
			<tr height="30">
				<td colspan="4" align="right">
				<!--  ํŽ˜์ด์ง€ ๋ชฉ๋ก์— ๋งž์ถฐ์•ผ ํ•ด์„œ ๋ชจ๋‘ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ pageNum=<2%=pageNum%2> ๋„ฃ์–ด์•ผํ•จ -->
					<input type="button" value="๊ธ€์ˆ˜์ •" onclick="location.href='edit.jsp?b_id=<%= bid %>&pageNum=<%= pageNum %>'">&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" value="๊ธ€์‚ญ์ œ" onclick="location.href='delete.jsp?b_id=<%= bid %>&pageNum=<%= pageNum %>'">&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" value="๋‹ต๋ณ€๊ธ€" onclick="location.href='write.jsp?b_id=<%= bid %>&pageNum=<%= pageNum %>'">&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" value="๊ธ€๋ชฉ๋ก" onclick="location.href='list.jsp?pageNum=<%=pageNum%>'">
				</td>
			</tr>
		</table>
	</center>
</body>
</html>

delete_ok.jsp

<%@page import="java.io.File"%>
<%@page import="magic.board.BoardBean"%>
<%@page import="magic.board.BoardDBBean" %>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>

	<%
		String pageNum = request.getParameter("pageNum");//pageNum์„ ๋ฐ›์Œ
		
		int b_id = Integer.parseInt(request.getParameter("b_id"));
		//์ž…๋ ฅ ๋ฐ›์€ id ๊ฐ’์„  onclick์œผ๋กœ ๋„˜๊ฒจ์คŒ
			
		String b_pwd = request.getParameter("b_pwd");
		// ๋น„๋ฐ€๋ฒˆํ˜ธ๋„ ๋‹ค์‹œ ๋ฐ›์Œ
		
		BoardDBBean db = BoardDBBean.getInstance();
		//getInstance๋กœ BoardDBBean ๊ฐ์ฒด ์ƒ์„ฑ
		BoardBean board = db.getBoard(b_id, false);//์กฐํšŒ์ˆ˜ ์ฆ๊ฐ€ ํ•„์š” ์—†์Œ์œผ๋กœ false
		String fName = board.getB_fname();//ํŒŒ์ผ๋ช… ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ 
		String up ="D:\\space_jsp\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\magicWebApp\\upload\\";
		//๊ฒฝ๋กœ ๋ณ€์ˆ˜๋กœ ์ฃผ๊ธฐ
		
		int re =  db.deleteBoard(b_id, b_pwd);
		//deleteBoard ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœํ•˜์—ฌ ๊ธ€๋ฒˆํ˜ธ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋„˜๊น€
		
		
		if(re == 1){//๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋™์ผ ํ•  ๊ฒฝ์šฐ//๊ฒŒ์‹œ๊ธ€์ด ์ •์ƒ์ ์œผ๋กœ ์‚ญ์ œ๋˜์—ˆ์„๋•Œ 
			response.sendRedirect("list.jsp?pageNum="+pageNum);
		
			if(fName != null){
				File file = new File(up+fName); //์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜ : ํด๋”๊ฒฝ๋กœ+ํŒŒ์ผ์ด๋ฆ„
				file.delete();//ํŒŒ์ผ ์‚ญ์ œ ๋ฉ”์†Œ๋“œ delete();
			}
		}else if(re == 0){//๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ
	%>
			<script language="JavaScript">
				alert("๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
				history.go(-1);//์ด์ „ํŽ˜์ด์ง€๋กœ ์ด๋™
			</script>
	<%	
		}else if(re == -1){//๊ธ€๋ฒˆํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ(์‚ญ์ œ ์‹คํŒจํ•œ ๊ฒฝ์šฐ)
	%>
			<script language="JavaScript">
				alert("์‚ญ์ œ์— ์‹คํŒจํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
				history.go(-1);
			</script>
	<%	
		}
	%>

์ž˜ ์ž‘๋™ ๋จ.


์ž๋ฃŒ์‹ค PPT.04

a.txtํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ(๋‚ด์šฉ abc) ์—…๋กœ๋“œํ•˜๊ณ  (์ฒซ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ) ํด๋ฆญํ•˜๋ฉด abc๊ฐ€ ๋œธ.

๋‹ค์‹œ ๋‚ด์šฉ๋งŒ ๋ณ€๊ฒฝ ํ›„(abc โ‡’ xyz, a.txtํŒŒ์ผ) ์—…๋กœ๋“œ ํ•˜์˜€์„ ๋•Œ(๋‘๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ) ํด๋ฆญํ•˜๋ฉด xyz๊ฐ€ ๋œธ.

๊ทผ๋ฐ ์ฒซ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์„ ํ™•์ธํ•ด๋ณด๋ฉด abc๊ฐ€ ์•„๋‹ˆ๋ผ xyz๊ฐ€ ๋œธ.

๋งŒ์•ฝ์— ์ œ๋ชฉ์€ ๊ฐ™๊ณ  ๋‚ด์šฉ์€ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•˜์˜€๋‹ค๋ฉด ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ ๋˜๋Š” ์ด๋ฆ„์ด ๊ฐ™์€ ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์†์‹คํ•  ์ˆ˜์žˆ์Œ. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ํ•„์š”

(์ž๋ฃŒ์‹ค 4)

๐Ÿ’ก๊ธฐ์กด ๊ฒŒ์‹œํŒ ์†Œ์Šค์— ์ž๋ฃŒ๋ฅผ ์ฒจ๋ถ€ํ•˜๋Š” ํ•  ๋•Œ ๊ตฌ๋ณ„ํ•  ์ˆ˜์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€

(์œ„์˜ ์„ค๋ช… ์ฐธ๊ณ )

๐Ÿ’ก

  • BoardBean.java
    • private String b_rfname;
  • write_ok.jsp
    • ํŒŒ์ผ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ
  • BoardDBBean.java
    • insertBoard() ๋ฉ”์†Œ๋“œ => insert ์‹œ ์‹ค์ œ ํŒŒ์ผ ์ด๋ฆ„ ์ถ”๊ฐ€
    • getBoard() ๋ฉ”์†Œ๋“œ => ์กฐํšŒ์‹œ
    • BoardBean getFileName(int bid) => (์‹ ๊ทœ) ํŒŒ์ผ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
  • show.jsp
    • ์‹ค์ œํŒŒ์ผ ๋‚ด์šฉ ํ‘œ์‹œ(FileDownload.jsp ์ฒจ๋ถ€ํŒŒ์ผ ํ‘œ์‹œ)
  • FileDownload.jsp => ์‹ ๊ทœ ์ถ”๊ฐ€


write_ok.jsp

<%@page import="java.util.Enumeration"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="com.jspsmart.upload.SmartUpload"%>
<%@page import="com.jspsmart.upload.File"%>
<%@page import="java.net.InetAddress"%>
<%@page import="magic.board.BoardDBBean"%>
<%@page import="java.sql.Timestamp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	request.setCharacterEncoding("UTF-8");  
%>  
<jsp:useBean class="magic.board.BoardBean" id="board"></jsp:useBean>
<jsp:setProperty property="*" name="board"/>

<%
//	ํŒŒ์ผ ์—…๋กœ๋“œ	์ž๋ฃŒ์‹ค 3
	/* SmartUpload upload = new SmartUpload();//๊ฐ์ฒด์ƒ์„ฑ
	upload.initialize(pageContext);//๊ธฐ๋ณธ ๊ฐ์ฒด ์ดˆ๊ธฐํ™”
	upload.upload();//upload ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
	
	String fName =null;
	String rfName =null;
	int fileSize = 0;
	
	File file = upload.getFiles().getFile(0);//ํŒŒ์ผ์ด ํ•˜๋‚˜์ด๋‹ˆ๊น 0์œผ๋กœ ํ•˜๋ฉด ๋จ ์—ฌ๋Ÿฌ๊ฐœ๋ฉด ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉํ•ด์„œ i๋กœ ๋‘๊ธฐ(for)
	
	if(!file.isMissing()){
		fName = file.getFileName();
		file.saveAs("/upload/"+file.getFileName());//ํŒŒ์ผ ์ด๋ฆ„์„ ์ €์žฅํ•˜๊ฒ ๋‹ค.
		fileSize = file.getSize();
	}
	 */
	 
	 //์ž๋ฃŒ์‹ค  4
	 String path = request.getRealPath("upload");
	 int size=1024*1024;
	 int fileSize=0;//์ดˆ๊ธฐ๊ฐ’0
	 String file="";//ํŒŒ์ผ
	 String oriFile="";//์‹ค์ œ ํŒŒ์ผ
	 MultipartRequest multi = new MultipartRequest(request,path,size,"UTF-8",new DefaultFileRenamePolicy());//๋ ˆํ€˜์ŠคํŠธ, ๊ฒฝ๋กœ,์‚ฌ์ด์ฆˆ,์–ธ์–ด, ๊ธฐ๋ณธํŒŒ์ผ๋ณ€๊ฒฝ์ •์ฑ… ์‚ฌ์šฉ??
	 // ๊ฑ MultipartRequest์„ ์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋  ๋“ฏ 
	 Enumeration files = multi.getFileNames();
	 String str =(String)files.nextElement();
	 //์‹ค์ œ ํŒŒ์ผ ์ด๋ฆ„ ํ•˜๋‚˜๋ฅผ ๋ฐ›์Œ
	 file = multi.getFilesystemName(str);
	 
	 if(file != null){//ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค๋ฉด
		oriFile = multi.getOriginalFileName(str);
	 	fileSize = file.getBytes().length;//ํŒŒ์ผ ๋ณ€์ˆ˜์—์„œ getBytees()๋ฉ”์†Œ๋“œ์˜ length ์‚ฌ์šฉํ•˜๋ฉด ์šฉ๋Ÿ‰..? 
	 }
	 
%>

<%
	//ip์ฒ˜๋ฆฌ
	InetAddress address = InetAddress.getLocalHost();
	String ip = address.getHostAddress();

	/* //์ž๋ฃŒ์‹ค 3
	//๋ณ„๋„๋กœ write.jsp์˜ name ์ฒ˜๋ฆฌ
	//๋ฐ์ดํ„ฐ ์ž…๋ ฅํ•˜์˜€์„๋•Œ null๊ฐ’์ด ๋œจ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•จ
	//ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•˜์˜€์„๋•Œ ํ•„์š”
	board.setB_name(upload.getRequest().getParameter("b_name"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_email(upload.getRequest().getParameter("b_email"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_title(upload.getRequest().getParameter("b_title"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_content(upload.getRequest().getParameter("b_content"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_pwd(upload.getRequest().getParameter("b_pwd"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	//๋ณ„๋„๋กœ write.jsp์˜ name ์ฒ˜๋ฆฌ ๋! */
	
	board.setB_name(multi.getParameter("b_name"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_email(multi.getParameter("b_email"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_title(multi.getParameter("b_title"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_content(multi.getParameter("b_content"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	board.setB_pwd(multi.getParameter("b_pwd"));//upload๊ฐ์ฒด ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ
	//board ๊ฐ์ฒด์— set์œผ๋กœ ๊ฐ’๋“ค์„ ๋Œ€์ž… ์‹œํ‚ด
	
	board.setB_date(new Timestamp(System.currentTimeMillis()));
	//board.setB_ip(request.getRemoteAddr());
	board.setB_ip(ip);
	
	//์ž๋ฃŒ์‹ค 3
	//ํŒŒ์ผ ์—…๋กœ๋“œ ๊ด€๋ จ ๋ถ€๋ถ„
	//board.setB_fname(fName);
	//board.setB_fsize(fileSize);
	////ํŒŒ์ผ ์—…๋กœ๋“œ ๊ด€๋ จ ๋ถ€๋ถ„ ๋! 
	
	//์ž๋ฃŒ์‹ค 4
	if(file != null){//ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค๋ฉด
		board.setB_fname(file);
		board.setB_fsize(fileSize);
		board.setB_rfname(oriFile);
	 }
	//์ž๋ฃŒ์‹ค 4๋
	
	BoardDBBean db = BoardDBBean.getInstance();
	int re = db.insertBoard(board);

	
	if(re == 1){
		response.sendRedirect("list.jsp");
	}else{
		response.sendRedirect("write.jsp");
	}
%>

BoardDBBean.java

package magic.board;

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

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class BoardDBBean {

	//1. ์ „์—ญ BoardDBBean ๊ฐ์ฒด ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	private static BoardDBBean instance = new BoardDBBean();
	public static BoardDBBean getInstance(){
		return instance;
	//getConnection์ด๋‚˜  getInstance๋Š” ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์Œ(์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค๋Š” ๋œป)
	//jsp์—์„œ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœํ•˜๋ฉด ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ
	}
	
	//2.์ฟผ๋ฆฌ ์ž‘์—…์— ์‚ฌ์šฉํ•  ์ปค๋„ฅ์…˜ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	public  Connection getConnection( ) throws Exception{
		Context ctx =  new InitialContext();
		DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
		//๊ฒฝ๋กœ ์ฐพ๊ธฐ
		return ds.getConnection();
		//getConnection์ด๋‚˜  getInstance๋Š” ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์Œ(์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค๋Š” ๋œป)
		//jsp์—์„œ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœํ•˜๋ฉด ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ
	}
	
	//3. ์ „๋‹ฌ์ธ์ž๋กœ ๋ฐ›์€ BoardBean board๋ฅผ BOARDT ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	 public int insertBoard(BoardBean board) throws Exception {
	      int re = -1;
	      Connection conn = null;
	      PreparedStatement pstmt = null;
	      ResultSet rs = null;
	      String sql = "";
	      int number;
	      
//	      ๋‹ต๋ณ€๊ธ€์„ ์œ„ํ•œ ๋ณ€์ˆ˜
	      int id = board.getB_id();
	      int ref = board.getB_ref();
	      int step = board.getB_step();
	      int level = board.getB_level();
	      
	      
	      try {
	         conn = getConnection();
	         sql = "SELECT MAX(B_ID) FROM BOARDT";
	         pstmt = conn.prepareStatement(sql);
	         rs = pstmt.executeQuery();
	         
	         if (rs.next()) {
	            number = rs.getInt(1)+1;
	         } else { 
	            number = 1;
	         }
	         
//	         id๊ฐ€ ๊ฐ’์ด ์žˆ๊ฑฐ๋‚˜ 0์ด๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. 0 ์ผ๋•Œ๋Š” ์ƒˆ๊ธ€, 0์ด ์•„๋‹ ๋•Œ๋Š” ๋‹ต๋ณ€๊ธ€
	         if (id != 0) { //๋‹ต๋ณ€๊ธ€์ผ ๋•Œ
//	            update๋ฌธ์ด ํ•ต์‹ฌ
	            sql = "UPDATE BOARDT SET b_step = b_step+1 WHERE b_ref=? AND b_step>?";
	            pstmt = conn.prepareStatement(sql);
	            pstmt.setInt(1, ref);
	            pstmt.setInt(2, step);
	            pstmt.executeUpdate();
	            step = step + 1;
	            level = level + 1;
	         } else { //๋‹ต๋ณ€๊ธ€์ด ์•„๋‹ ๋•Œ=์ƒˆ๊ธ€
	            ref = number;
	            step = 0;
	            level = 0;
	         }
	         
//	         System.out.println("@@@### board.number ===> "+number);
//	         System.out.println("@@@### board.getB_name() ===> "+board.getB_name());
//	         System.out.println("@@@### board.getB_email() ===> "+board.getB_email());
//	         System.out.println("@@@### board.getB_title() ===> "+board.getB_title());
//	         System.out.println("@@@### board.getB_content() ===> "+board.getB_content());
//	         System.out.println("@@@### board.getB_date() ===> "+board.getB_date());
//	         System.out.println("@@@### board.getB_pwd() ===> "+board.getB_pwd());
//	         System.out.println("@@@### board.getB_ip() ===> "+board.getB_ip());
	         
//	         sql = "INSERT INTO BOARDT VALUES(?,?,?,?,?,?,?,?,?)";
//	         sql = "INSERT INTO BOARDT VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
//	         sql = "INSERT INTO BOARDT VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
	         sql = "INSERT INTO BOARDT VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
	         pstmt = conn.prepareStatement(sql);
	         
	         pstmt.setInt(1, number);
	         pstmt.setString(2, board.getB_name());
	         pstmt.setString(3, board.getB_email());
	         pstmt.setString(4, board.getB_title());
	         pstmt.setString(5, board.getB_content());
	         pstmt.setTimestamp(6, board.getB_date());
	         pstmt.setInt(7, board.getB_hit());
	         pstmt.setString(8, board.getB_pwd());
	         pstmt.setString(9, board.getB_ip());
	         pstmt.setInt(10, ref);
	         pstmt.setInt(11, step);
	         pstmt.setInt(12, level);
	         pstmt.setString(13, board.getB_fname());
	         pstmt.setInt(14, board.getB_fsize());
	         pstmt.setString(15, board.getB_rfname());
	         pstmt.executeUpdate();
	         
	         re = 1;
//	         re = pstmt.executeUpdate();
	      }  catch(SQLException ex) {
	         System.out.println("์ถ”๊ฐ€ ์‹คํŒจ");
	         ex.printStackTrace();
	      } finally {
	         try {
	            if(pstmt != null) pstmt.close();
	            if(conn != null) conn.close();
	         } catch(Exception e) {
	            e.printStackTrace();
	         }
	      }
	      
	      return re;
	   }
	
	//4. ๋ฆฌํ„ดํƒ€์ž…์ด ArrayList<BoardBean> ์ธ listBoard() ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€(๊ธ€๋ชฉ๋ก์„ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ)
	public ArrayList<BoardBean> listBoard(String pageNumber) throws Exception{//์ œ๋„ค๋ฆญ ์‚ฌ์šฉํ•จ , ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” BoardBean
		
		Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
		Statement stmt = null;// DB์— SQL ์ „๋‹ฌ
		int dbCount = 0;//๊ธ€์ด ๋ช‡๊ฐœ๋‚˜ ์žˆ๋Š”์ง€ ํ™•์ธ(๊ฒŒ์‹œ๊ธ€์˜ ๊ฐฏ์ˆ˜
		int absoultepage = 0;//๊ธ€์ด ๋ช‡๊ฐœ๋‚˜ ์žˆ๋Š”์ง€ ํ™•์ธ(๊ฒŒ์‹œ๊ธ€์˜ ๊ฐฏ์ˆ˜
		ResultSet rs = null;
		ResultSet pageSet = null;
		
		
		//db ์ •๋ณด ๋ฐ›๊ธฐ ์œ„ํ•จ
		String sql=" SELECT b_id \r\n" + 
				"     , b_name\r\n" + 
				"     , b_email\r\n" + 
				"     , b_title\r\n" + 
				"     , b_content\r\n" + 
				"     , b_date\r\n" + 
				"     , b_hit\r\n" + 
				"     , b_pwd\r\n" + 
				"     , b_ip\r\n" + 
				"     , b_ref\r\n" + 
				"     , b_step\r\n" + 
				"     , b_level\r\n" + 
				"     , b_fname\r\n" + 
				"     , b_fsize\r\n" + 
				"  FROM BOARDT\r\n" + 
				" ORDER BY b_ref desc, b_step asc";//ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ ์ •๋ ฌ๋˜๊ฒŒ๋” ํ•จ.
		
		
		
		String sql2="SELECT COUNT(b_id) FROM BOARDT";
		
		
		
		ArrayList<BoardBean> boardList = new ArrayList<BoardBean>();//ArrayList๋กœ ๊ฒŒ์‹œ๊ธ€๋“ค์„ ๋ฐ›์Œ

		try {
			conn = getConnection();
//			stmt = conn.createStatement();// DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
			stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
			// ๋งค๊ฐœ๋ณ€์ˆ˜ (,๋ณ€๊ฒฝ์ „ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ฒ ๋‹ค.)
			// DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
			pageSet = stmt.executeQuery(sql2);//์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ rs์— ๋ฐ›์Œ(select ์กฐํšŒ๋ฌธ์€ executeQuery ๋ฉ”์†Œ๋“œ ์ฒ˜๋ฆฌ
			
			if(pageSet.next()) {
				dbCount = pageSet.getInt(1);
				pageSet.close();
			}
			
			if (dbCount % BoardBean.pageSize == 0) { //pageCount ์„ธํŒ…(ํŽ˜์ด์ง€ ๊ฐœ์ˆ˜๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)
				//80 % 10 = 0
				BoardBean.pageCount = dbCount / BoardBean.pageSize; //80 /10
			} else {//84 % 10 = 4
				BoardBean.pageCount = dbCount / BoardBean.pageSize +1 ; //80/10 +1
			}
			
			
			if (pageNumber != null) {
				BoardBean.pageNum = Integer.parseInt(pageNumber); //๋งค๊ฐœ๋ณ€์ˆ˜์— ํ•ด๋‹น๋˜๋Š” pageNumber ์„ธํŒ…
				absoultepage = (BoardBean.pageNum - 1) * BoardBean.pageSize + 1;
			}
			
			rs = stmt.executeQuery(sql);//์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ rs์— ๋ฐ›์Œ(select ์กฐํšŒ๋ฌธ์€ executeQuery ๋ฉ”์†Œ๋“œ ์ฒ˜๋ฆฌ
			
			if (rs.next()) {//while๋ฌธ์„ ๊ฐ์Œˆ
				rs.absolute(absoultepage);
				int count = 0;
			
				while(count < BoardBean.pageSize) {//pageSize์ˆ˜ (10๋ฒˆ) ๋งŒํผ  ๋ฐ˜๋ณต
					//๋‹ค์Œ(์—ฌ๋Ÿฌ๊ฐœ์˜) ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์คŒ.
					
					BoardBean board = new BoardBean();
					//๊ฒฐ๊ณผ๊ฐ’์„ ์„ธํŒ…
					board.setB_id(rs.getInt(1));//์•„์ด๋””๋Š” INT์ด๋ฏ€๋กœ getInt๋กœ ํ•ด์•ผํ•จ
					board.setB_name(rs.getString(2));
					board.setB_email(rs.getString(3));
					board.setB_title(rs.getString(4));
					board.setB_content(rs.getString(5));
					board.setB_date(rs.getTimestamp(6));
					board.setB_hit(rs.getInt(7));//์กฐํšŒ์ˆ˜๋Š” INT์ด๋ฏ€๋กœ getInt๋กœ ํ•ด์•ผํ•จ
					board.setB_pwd(rs.getString(8));
					board.setB_ip(rs.getString(9));
					board.setB_ref(rs.getInt(10));
					board.setB_step(rs.getInt(11));
					board.setB_level(rs.getInt(12));
					board.setB_fname(rs.getString(13));
					board.setB_fsize(rs.getInt(14));
					
	//				๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ”๋Š”์ง€ ํ™•์ธ ํ•ด์•ผํ•จ
	//				System.out.println("@@@@#### board.getB_id()=====>"+board.getB_id());
	//				System.out.println("@@@@#### board.getB_name()=====>"+board.getB_name());
	//				System.out.println("@@@@#### board.getB_email()=====>"+board.getB_email());
	//				System.out.println("@@@@#### board.getB_title()=====>"+board.getB_title());
	//				System.out.println("@@@@#### board.getB_content()=====>"+board.getB_content());
	//				System.out.println("@@@@#### board.getB_pwd()=====>"+board.getB_pwd());
	//				System.out.println("@@@@####");
	
					boardList.add(board);//๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ฒŒ์‹œ๊ธ€๋“ค์„ ์Œ“์Œ
					
					if (rs.isLast()) {//๊ฒฐ๊ณผ๊ฐ’์ด ๋งˆ์ง€๋ง‰์ด๋ฉด ๋น ์ ธ๋‚˜์˜ค๊ธฐ
						break;
					} else {
						rs.next();//๋งˆ์ง€๋ง‰์ด ์•„๋‹ˆ๋ฉด ๊ณ„์† ์ง„ํ–‰
					}
					
					count++;
				}

			}
		} catch(SQLException ex) {
	         ex.printStackTrace();
	      } finally {
	    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
	    		  if(rs != null)  rs.close();
	    		  if(stmt != null)  stmt.close();
	    		  if(conn != null)  conn.close();
	    	  }catch(Exception e){
	    		  e.printStackTrace();
	    	  }
	      }
		return boardList;
	}
	
	
	// 5. ๋ฆฌํ„ดํƒ€์ž…์ด BoardBean์ธ getBoard() ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€
	public BoardBean getBoard (int bid, boolean hitadd) throws Exception{
		//๊ธ€๋ฒˆํ˜ธ๋งŒ ๋„˜๊ธฐ๋ฉด ์•Œ์•„์„œ ๋‚ด์šฉ์ด ๋„˜์–ด๊ฐ€๋Š” ๋ฉ”์†Œ๋“œ
		//์กฐํšŒ ์ˆ˜ ๋•Œ๋ฌธ์— ๋ถ„๊ธฐ์ฒ˜๋ฆฌ  ํ•ด๊ฐ€
		
		Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
		PreparedStatement pstmt = null;// DB์— SQL ์ „๋‹ฌ
		PreparedStatement pstmtup = null;// ์กฐํšŒ์ˆ˜ ์—…๋ฐ์ดํŠธ
		ResultSet rs = null;
		//db ์ •๋ณด ๋ฐ›๊ธฐ ์œ„ํ•จ
		BoardBean board = null;
		String sql = "";//ํ•ด๋‹น ๋ฒˆํ˜ธ์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ๋˜๊ฒŒ ์ฟผ๋ฆฌ ์ž‘์„ฑ

		try {
			conn = getConnection();
			if (hitadd==true) {
				//์กฐํšŒ์ˆ˜ ์—…๋ฐ์ดํŠธ ์ถ”๊ฐ€ํ•จ
				sql = "UPDATE BOARDT SET b_hit=b_hit+1 WHERE b_id=?";
				pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
//			 DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
				pstmt.setInt(1, bid);//์กฐ๊ฑด์ด ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— (?๊ฐ€ ํ•˜๋‚˜์ž„)
//			rs = pstmt.executeQuery();//์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ rs์— ๋ฐ›์Œ(select ์กฐํšŒ๋ฌธ์€ executeQuery ๋ฉ”์†Œ๋“œ ์ฒ˜๋ฆฌ
				pstmt.executeUpdate();//์—…๋ฐ์ดํŠธ๋‹ˆ๊น ์—…๋ฐ์ดํŠธ๋กœ ๋ฐ”๊ฟ”์คŒ
				//pstmtup.close();
				//์—…๋ฐ์ดํŠธ ์ถ”๊ฐ€ ๋!
			}

			sql = "SELECT b_id\r\n" + 
					"    , b_name\r\n" + 
					"    , b_email\r\n" + 
					"    , b_title\r\n" + 
					"    , b_content\r\n" + 
					"    , b_date\r\n" + 
					"    , b_hit\r\n" + 
					"    , b_pwd\r\n" + 
					"    , b_ip\r\n" + 
					"    , b_ref\r\n" + 
					"    , b_level\r\n" + 
					"    , b_step\r\n" + 
					"    , b_fname\r\n" + 
					"    , b_fsize\r\n" + 
					"    , b_rfname\r\n" + 
					" FROM BOARDT\r\n" + 
					" WHERE b_id=?";//ํ•ด๋‹น ๋ฒˆํ˜ธ์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ๋˜๊ฒŒ ์ฟผ๋ฆฌ ์ž‘์„ฑ
			pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
//			 DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
			pstmt.setInt(1, bid);//์กฐ๊ฑด์ด ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— (?๊ฐ€ ํ•˜๋‚˜์ž„)
			rs = pstmt.executeQuery();//select ๋ฌธ์ด๋‹ˆ๊น ์ต์ŠคํํŠธ ์ฟผ๋ฆฌ
			
			
			if(rs.next()) {//๋‹ค์Œ(์—ฌ๋Ÿฌ๊ฐœ์˜) ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์คŒ.
				board = new BoardBean();//๊ฐ์ฒด์ƒ์„ฑ(๋ฆฌํ„ด๊ฐ’์ด board)
				board.setB_id(rs.getInt(1));
				//board.setB_id(bid);๋„ ๊ฐ€๋Šฅํ•จ
				board.setB_name(rs.getString(2));
				board.setB_email(rs.getString(3));
				board.setB_title(rs.getString(4));
				board.setB_content(rs.getString(5));
				board.setB_date(rs.getTimestamp(6));
				board.setB_hit(rs.getInt(7));
				board.setB_pwd(rs.getString(8));
				board.setB_ip(rs.getString(9));
				board.setB_ref(rs.getInt(10));//์กฐํšŒ์ˆ˜๋Š” INT์ด๋ฏ€๋กœ getInt๋กœ ํ•ด์•ผํ•จ
				board.setB_step(rs.getInt(11));
				board.setB_level(rs.getInt (12));
				board.setB_fname(rs.getString(13));
				board.setB_fsize(rs.getInt (14));
				board.setB_rfname(rs.getString(15));
//				
////				๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ”๋Š”์ง€ ํ™•์ธ ํ•ด์•ผํ•จ
				System.out.println("@@@@#### board.getB_id()=====>"+board.getB_id());
				System.out.println("@@@@#### board.getB_name()=====>"+board.getB_name());
				System.out.println("@@@@#### board.getB_email()=====>"+board.getB_email());
				System.out.println("@@@@#### board.getB_title()=====>"+board.getB_title());
				System.out.println("@@@@#### board.getB_content()=====>"+board.getB_content());
				System.out.println("@@@@#### board.getB_fname()=====>"+board.getB_fname());
				System.out.println("@@@@#### board.getB_fsize()=====>"+board.getB_fsize());
				System.out.println("@@@@#### board.getB_rfname()=====>"+board.getB_rfname());
				//System.out.println("@@@@#### board.setB_pwd()=====>"+board.setB_pwd(sql));
			}

		} catch(SQLException ex) {
	         ex.printStackTrace();
	      } finally {
	    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
	    		  if(rs != null)  rs.close();
	    		  if(conn != null)  conn.close();
	    		  if(pstmt != null)  pstmt.close();
	    	  }catch(Exception e){
	    		  e.printStackTrace();
	    	  }
	      }
		return board;
	}
	
	
	// 6.deleteBoard() ๋ฉ”์†Œ๋“œ => ์‚ญ์ œํ•  ๊ธ€ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธํ•˜๋Š” ๋ฉ”์†Œ๋“œ 
	public int deleteBoard (int b_id, String b_pwd) throws Exception{//๊ธ€๋ฒˆํ˜ธ๋งŒ ๋„˜๊ธฐ๋ฉด ์•Œ์•„์„œ ๋‚ด์šฉ์ด ๋„˜์–ด๊ฐ€๋Š” ๋ฉ”์†Œ๋“œ 
		// id์™€ pwd๋ฅผ ๋ฐ›์•„ ์‚ญ์ œํ•˜๋Š” ๋ฉ”์†Œ๋“œ 
		Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
		PreparedStatement pstmt = null;// DB์— SQL ์ „๋‹ฌ
		ResultSet rs = null;
		int re = -1;

		
		String sql = "";//ํ•ด๋‹น ๋ฒˆํ˜ธ์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ๋˜๊ฒŒ ์ฟผ๋ฆฌ ์ž‘์„ฑ
		String pwd = "";//๋น„๋ฐ€๋ฒˆํ˜ธ 

		
		try {
			conn = getConnection();
			sql = "SELECT B_PWD FROM BOARDT where B_ID=?"; // ๊ธ€ ๋ฒˆํ˜ธ์— ๋”ฐ๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ
			pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
			pstmt.setInt(1, b_id);//๊ฐ’์„ ์ง‘์–ด๋„ฃ์Œ(์ฟผ๋ฆฌ์˜ ?๋ถ€๋ถ„)
			rs = pstmt.executeQuery();

			if(rs.next()) {//๋‹ค์Œ(์—ฌ๋Ÿฌ๊ฐœ์˜) ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์คŒ.
				pwd = rs.getString(1);
				//๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ 
				if (pwd.equals(b_pwd)) {
					sql = "DELETE FROM BOARDT WHERE B_ID=?";
					pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ›์Œ
					pstmt.setInt(1, b_id);
					pstmt.executeUpdate();
					re = 1;
				}else {
					re =0;
				}

			}

		} catch(SQLException ex) {
			 System.out.println("์‚ญ์ œ ์‹คํŒจ");
	         ex.printStackTrace();
	      } finally {
	    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
	    		  if(rs != null)  rs.close();
	    		  if(conn != null)  conn.close();
	    		  if(pstmt != null)  pstmt.close();
	    	  }catch(Exception e){
	    		  e.printStackTrace();
	    	  }
	      }
		return re;
	}
	
	//7.ํ…Œ์ด๋ธ” ์ˆ˜์ • editBoard ๋ฉ”์†Œ๋“œ
		public int editBoard (BoardBean board) throws Exception{
			int re = -1;
			Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
			PreparedStatement pstmt = null;// DB์— SQL ์ „๋‹ฌ
			ResultSet rs = null;
			String sql ="";
			String pwd = "";//๋น„๋ฐ€๋ฒˆํ˜ธ 

			
			try {
				conn = getConnection();
				sql = "SELECT B_PWD FROM BOARDT where B_ID=?"; // ๊ธ€ ๋ฒˆํ˜ธ์— ๋”ฐ๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ
				pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
				pstmt.setInt(1, board.getB_id());//๊ฐ’์„ ์ง‘์–ด๋„ฃ์Œ(์ฟผ๋ฆฌ์˜ ?๋ถ€๋ถ„),board ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ b_id ๊ฐ€์ง€๊ณ  ์˜ค๊ธฐ
				rs = pstmt.executeQuery();
				
				if (rs.next()) {
					pwd = rs.getString(1);
					
					if  (pwd.equals(board.getB_pwd())) {
						sql="UPDATE BOARDT \r\n" + 
								"      SET B_NAME=?\r\n" + 
								"        , B_EMAIL=?\r\n" + 
								"        , B_TITLE=?\r\n" + 
								"        , B_CONTENT=?\r\n" + 
								"        WHERE B_ID=?";
						
						pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ›์Œ
						pstmt.setString(1,board.getB_name());
						pstmt.setString(2,board.getB_email());
						pstmt.setString(3,board.getB_title());
						pstmt.setString(4,board.getB_content());
						pstmt.setInt(5, board.getB_id());
						pstmt.executeUpdate();
						re = 1;
					}else {
						re =0;//๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™์ง€ ์•Š์€๊ฒƒ
					}
				}

			} catch(SQLException ex) {
				 System.out.println("์ˆ˜์ • ์‹คํŒจ");
		         ex.printStackTrace();
		      } finally {
		    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
		    		  if(rs != null)  rs.close();
		    		  if(conn != null)  conn.close();
		    		  if(pstmt != null)  pstmt.close();
		    	  }catch(Exception e){
		    		  e.printStackTrace();
		    	  }
		      }
			return re;	
		}
		
		//8. ๊ธ€๋ฒˆํ˜ธ๋ฅผ ๋„˜๊ฒจ์„œ  b_fname, b_rfname๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	public BoardBean getFileName(int bid) throws Exception{
			Connection conn = null;//๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘์†
			PreparedStatement pstmt = null;// DB์— SQL ์ „๋‹ฌ
			ResultSet rs = null;
			//db ์ •๋ณด ๋ฐ›๊ธฐ ์œ„ํ•จ
			BoardBean board = null;
			
			
			String sql = "SELECT b_fname, b_rfname from BOARDT where b_id=?";

			try {
				conn = getConnection();

				pstmt = conn.prepareStatement(sql);//pstmt๊ฐ์ฒด๋กœ ๋ฐ›์Œ
//				 DB์— SQL ์ „๋‹ฌ(SQL๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜ ์„ ์–ธ
				pstmt.setInt(1, bid);//์กฐ๊ฑด์ด ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— (?๊ฐ€ ํ•˜๋‚˜์ž„)
				rs = pstmt.executeQuery();//select ๋ฌธ์ด๋‹ˆ๊น ์ต์ŠคํํŠธ ์ฟผ๋ฆฌ
				
				if(rs.next()) {//๋‹ค์Œ(์—ฌ๋Ÿฌ๊ฐœ์˜) ์ฟผ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์คŒ.
					board = new BoardBean();//๊ฐ์ฒด์ƒ์„ฑ(๋ฆฌํ„ด๊ฐ’์ด board)
					board.setB_fname(rs.getString(1));// ํŒŒ์ผ๋ช…
					board.setB_rfname(rs.getString(2));//์ง„์งœ ํŒŒ์ผ๋ช…
				}
			} catch(SQLException ex) {
		         ex.printStackTrace();
		      } finally {
		    	  try{//์ž์›๋ฐ˜๋‚ฉ(์ˆœ์„œ ์ค‘์š”)
		    		  if(rs != null)  rs.close();
		    		  if(conn != null)  conn.close();
		    		  if(pstmt != null)  pstmt.close();
		    	  }catch(Exception e){
		    		  e.printStackTrace();
		    	  }
		      }
			return board;
		}
}

show.jsp

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="magic.board.BoardBean"%>
<%@page import="magic.board.BoardDBBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%	
	String pageNum = request.getParameter("pageNum");//pageNum์„ ๋ฐ›์Œ	
	
	int bid = Integer.parseInt(request.getParameter("b_id"));
	BoardDBBean db = BoardDBBean.getInstance();
	//BoardBean board = db.getBoard(bid);
	BoardBean board = db.getBoard(bid, true);
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<h1>๊ธ€ ๋‚ด ์šฉ ๋ณด ๊ธฐ</h1>
		<table border="1" width="600" cellspacing="0">
			<tr height="30" align="center">
				<td width="100">๊ธ€๋ฒˆํ˜ธ</td>
				<td width="200">
					<%= bid %>
				</td>
				<td width="100">์กฐํšŒ์ˆ˜</td>
				<td width="200">
					<%= board.getB_hit() %>
				</td>
			</tr>
			<tr height="30" align="center">
				<td width="100">์ž‘์„ฑ์ž</td>
				<td width="200">
					<%= board.getB_name() %>
				</td>
				<td width="100">์ž‘์„ฑ์ผ</td>
				<td width="200">
					<%-- <%= board.getB_date() %> --%>
					<%= sdf.format(board.getB_date()) %>
				</td>
			</tr>
			<tr height="30" align="center">
				<td width="110">ํŒŒ&nbsp;&nbsp;์ผ</td>
				<td width="200" align="center" colspan="3">
					&nbsp;
					<%--์ž๋ฃŒ์‹ค 3 --%>
					<%--
					<%
						if(board.getB_fname() != null){ 
					%>
							 <img src="../images/zip.gif">
                     		<a href="../upload/<%= board.getB_fname() %>">
                   			     ์›๋ณธํŒŒ์ผ : <%= board.getB_fname() %>
                    	 	</a>
					<%
						}
					%>
					 --%>
					 
					 <%--์ž๋ฃŒ์‹ค 4 --%>
					<%
					  	out.print("<p>์ฒจ๋ถ€ํŒŒ์ผ"+"<a href='FileDownload.jsp?fileN="+bid+"'>"+board.getB_rfname()+"</a></p>");
					%>
				</td>
			</tr>
			<tr height="30" align="center">
				<td width="100">๊ธ€์ œ๋ชฉ</td>
				<td width="200" align="left" colspan="3">
					<%= board.getB_title() %>
				</td>
			</tr>
			<tr height="30" align="center">
				<td width="100">๊ธ€๋‚ด์šฉ</td>
				<td width="200" align="left" colspan="3"> 
					<%= board.getB_content() %>
				</td>
			</tr>
			<tr height="30">
				<td colspan="4" align="right">
				<!--  ํŽ˜์ด์ง€ ๋ชฉ๋ก์— ๋งž์ถฐ์•ผ ํ•ด์„œ ๋ชจ๋‘ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ pageNum=<2%=pageNum%2> ๋„ฃ์–ด์•ผํ•จ -->
					<input type="button" value="๊ธ€์ˆ˜์ •" onclick="location.href='edit.jsp?b_id=<%= bid %>&pageNum=<%= pageNum %>'">&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" value="๊ธ€์‚ญ์ œ" onclick="location.href='delete.jsp?b_id=<%= bid %>&pageNum=<%= pageNum %>'">&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" value="๋‹ต๋ณ€๊ธ€" onclick="location.href='write.jsp?b_id=<%= bid %>&pageNum=<%= pageNum %>'">&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" value="๊ธ€๋ชฉ๋ก" onclick="location.href='list.jsp?pageNum=<%=pageNum%>'">
				</td>
			</tr>
		</table>
	</center>
</body>
</html>

FileDownload.jsp

<%@page import="magic.board.BoardBean"%>
<%@page import="magic.board.BoardDBBean"%>
<%@page import="java.io.BufferedOutputStream"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.BufferedInputStream"%>
<%@page import="java.io.File"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%
	//๊ธ€ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ํŒŒ์ผ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ๊ฑฐ์ž„
	int bid = Integer.parseInt(request.getParameter("fileN"));//๊ธ€๋ฒˆํ˜ธ
	//์ด๋ถ€๋ถ„ ์„ค๋ช… ๋†“์นจ ๋ญ”๋ง์ด๋ผ๊ณ ?
	BoardDBBean db = BoardDBBean.getInstance();
	BoardBean board = db.getFileName(bid); //board๊ฐ์ฒด
	
	
	String fileName="";
	String realFileName="";
	if(board != null){
		fileName = board.getB_fname();
		realFileName = board.getB_fname();
	}
	
	String saveDirectory =  application.getRealPath("/upload");
	String path = saveDirectory + File.separator +fileName;
	
	File file = new File(path);//๊ฐ์ฒด ์ƒ์„ฑ
	long length = file.length();//file ๊ฐ์ฒด์—์„œ length์‚ฌ์šฉ์‹œ ์šฉ๋Ÿ‰? ์ด ๋จ
	new String(realFileName.getBytes("ms949"),"8859_1");	
	//๋ฆฌ์–ผํŒŒ์ผ ๋„ค์ž„์„ ์ธ์ฝ”๋”ฉ
	
	
	response.setContentType("application/octet-stream");
	response.setContentLength((int)length);
	response.setHeader("Content-Disposition", "attachment;filename=" + realFileName);

	BufferedInputStream bis =  new BufferedInputStream(new FileInputStream(file));
	//bis๊ฐ์ฒด๋ฅผ ์ฝ์–ด์„œ ์ŠคํŠธ๋ง
	
	out.clear();
	out = pageContext.pushBody();
	//๋‚จ์•„ ์žˆ๋Š”๊ฑด ์‚ญ์ œ
	
	//BufferedInputStream bos = new BufferedOutputStream(response.getOutputStream());
	BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
	int data;
	while((data=bis.read()) != -1){//๋ผ์ธ์„ ๋ฐ›์Œ /EOF
			bos.write(data);
	}
	
	bis.close();
	bos.close();
%>

ํ‘œํ˜„์–ธ์–ด PPT.01

ํ‘œํ˜„์–ธ์–ด(Expression Language)์˜ ๊ธฐ๋ณธ

ํ‘œํ˜„ ์–ธ์–ด์˜ ํ‘œ์‹œํ˜•์‹
<%=expr%> -> ${expr}

  • ์™œ ๋‚˜์™”๋Š”๊ฐ€? ๋ฐฑ์—”๋“œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์€ ๊ฐ™์ด ํ•จ. ๊ทผ๋ฐ JSP๋กœ ํ™”๋ฉด ๊ตฌํ˜„์‹œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ๋ณด๊ธฐ ์–ด๋ ค์›Œํ•จ. (์ฝ”๋”ฉ์€ ๊ฐ™์ด ํ•ด์•ผํ•˜๋Š”๋ฐ ์–ด์ฐŒ ํ•ด์•ผํ•˜๋Š”์ง€ ๋ชจ๋ฆ„)
    ๊ฒฐ๋ก ์ ์œผ๋กœ ํ”„๋ก ํŠธ์—”๋“œ๊ฐœ๋ฐœ์ž๋“ค์ด ์•Œ์ˆ˜์žˆ๋Š” ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํ‘œํ˜„์–ธ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๋“ฏ

ํ‘œํ˜„ ์–ธ์–ด์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…

  • ์ •์ˆ˜ํ˜•, ์‹ค์ˆ˜ํ˜•, ๋ฌธ์ž์—ดํ˜•, ๋…ผ๋ฆฌํ˜•

์˜ˆ์ œ1

elEx01.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h3>ํ‘œํ˜„์–ธ์–ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ</h3>
	<p>[1] ์ •์ˆ˜ํ˜• : <%= 10 %> ====> ${10} </p>
	<p>[2] ์‹ค์ˆ˜ํ˜• : <%= 5.6 %> ====> ${5.6} </p>
	<p>[3] ๋ฌธ์ž์—ดํ˜• : <%= "ํ™๊ธธ๋™" %> ====> ${"ํ™๊ธธ๋™"} </p>
	<p>[3] ๋…ผ๋ฆฌํ˜• : <%= true %> ====> ${true} </p>
</body>
</html>

ํ‘œํ˜„์–ธ์–ด PPT.02

ํ‘œํ˜„์–ธ์–ด์˜ ์—ฐ์‚ฐ์ž

1. ์‚ฐ์ˆ 
+, -, *, /, % (or mod)
2. ๊ด€๊ณ„ํ˜•
== (eq), != (ne), < (lt), > (gt), <= (le), >= (ge)
3. ์กฐ๊ฑด
a?b:c (์‚ผํ•ญ์—ฐ์‚ฐ์ž)
4. ๋…ผ๋ฆฌ
&&ย (and), || (or), ! (not)
5. ํƒ€๋‹น์„ฑ๊ฒ€์‚ฌ
empty(๋น„์›Œ์ ธ์žˆ๋Š”์ง€ ํ™•์ธ)

์˜ˆ์ œ 2

elEx02.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
   pageContext.setAttribute("input", "");
   pageContext.setAttribute("input2", "bbb");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h3>[ํ‘œํ˜„ ์–ธ์–ด์˜ ์—ฐ์‚ฐ์ž]</h3>
	\${empty ""} ===> ${empty ""}<br><!-- ๋น„์›Œ์žˆ์Œ true -->
	\${empty "aaa"} ===> ${empty "aaa"}<br><!-- ๋น„์›Œ์žˆ์ง€ ์•Š์Œ false -->
	\${empty input} ===> ${empty input}<br><!-- input์€ ๋น„์›Œ์žˆ์Œ true -->
	\${empty input2} ===> ${empty input2}<br><!-- input2์€ ๋น„์›Œ์žˆ์ง€ ์•Š์Œ false -->
	
	
	<br>
	\${(5>2) ? 5: 2} ===> ${(5>2) ? 5: 2}<br>
	<!--์‚ผํ•ญ์—ฐ์‚ฐ์ž -->
	\${2 gt 10} ===> ${2 gt 10}<br>
	<!-- 2๊ฐ€ 10๋ณด๋‹ค ํฌ๋‹ค. -->
	<br>
	
	
	<!-- ์‚ฌ์น™์—ฐ์‚ฐ -->
	\${5+2} ===> ${5+2}<br>
	\${5/2} ===> ${5/2}<br>
	\${5%2} ===> ${5%2}<br>
	\${5 mod 2} ===> ${5 mod 2}<br>
	
	
	<br>
	\${5 > 2} ===> ${5 > 2}<br>
</body>
</html>

ํ‘œํ˜„์–ธ์–ด PPT.03

์•ก์…˜ ํƒœ๊ทธ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ํ‘œํ˜„ ์–ธ์–ด

JSP์˜ ์•ก์…˜ ํƒœ๊ทธ
<jsp:getProperty name="user" property="firstName"/> <jsp:getProperty name="user" property="lastName"/>

//๊ฐ๊ฐ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์™€์„œ ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ ๊ฐ’์œผ๋กœ ์ƒ๊ฐํ•จ.(user ๊ฐ์ฒด)

ํ‘œํ˜„ ์–ธ์–ด
${user.firstName}ย 
${user.lastName}
//์ž๋ฐ”์—์„œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ ์ฐธ์กฐํ•˜๋“ฏ์ด ์‚ฌ์šฉ

์˜ˆ์ œ 3

User.java

package glory;

public class User {
	private String firstName="๊ธธ๋™";
	private String lastName="ํ™";
	
	//getter,setter ์ถ”๊ฐ€
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	//getter,setter ์ถ”๊ฐ€ ๋!
	
	
	
}

elEx03.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h3>[์•ก์…˜ ํƒœ๊ทธ์™€ ํ‘œํ˜„ ์–ธ์–ด]</h3>
	<jsp:useBean class="glory.User" id="user"></jsp:useBean>
	<jsp:getProperty property="firstName" name="user"/>
	<jsp:getProperty property="lastName" name="user"/>

	<hr>
	${user.firstName} 
	${user.lastName} 
	
	<hr>	
	<jsp:setProperty property="firstName" name="user" value="Gildong"/>
	<jsp:setProperty property="lastName" name="user" value="Hong"/>
	<jsp:getProperty property="firstName" name="user"/>
	<jsp:getProperty property="lastName" name="user"/>
	
	<hr>
	${user.firstName} 
	${user.lastName} 
</body>
</html>

ํ‘œํ˜„์–ธ์–ด PPT.04

ํ‘œํ˜„ ์–ธ์–ด์˜ ๋‚ด์žฅ ๊ฐ์ฒด

๐Ÿ“ŒrequestScope
request ๊ธฐ๋ณธ ๊ฐ์ฒด์— ์ €์žฅ๋œ ์†์„ฑ์˜ <์†์„ฑ, ๊ฐ’> ๋งคํ•‘์„ ์ €์žฅํ•œ Map ๊ฐ์ฒด

๐Ÿ“ŒsessionScope
session ๊ธฐ๋ณธ ๊ฐ์ฒด์— ์ €์žฅ๋œ ์†์„ฑ์˜ <์†์„ฑ, ๊ฐ’> ๋งคํ•‘์„ ์ €์žฅํ•œ Map ๊ฐ์ฒด

๐Ÿ“Œparam
์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ <ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„, ๊ฐ’> ๋งคํ•‘์„ ์ €์žฅํ•˜๋Š” Map ๊ฐ์ฒด, ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์˜ ํƒ€์ž…์€ String์œผ๋กœ์„œ, request.getParameter(์ด๋ฆ„)์˜ ๊ฒฐ๊ณผ์™€ ๋™์ผํ•˜๋‹ค.

๐Ÿ“Œcookie
<์ฟ ํ‚ค ์ด๋ฆ„, Cookie> ๋งคํ•‘์„ ์ €์žฅํ•˜๋Š” Map ๊ฐ์ฒด, request.getCookies()๋กœ ๊ตฌํ•œ Cookie ๋ฐฐ์—ด๋กœ๋ถ€ํ„ฐ ๋งคํ•‘์„ ์ƒ์„ฑํ•œ๋‹ค.

ํ‘œํ˜„ ์–ธ์–ด์˜ ๋‚ด์žฅ ๊ฐ์ฒด์™€ ์ ‘๊ทผ์ž

  1. ํ‘œํ˜„ ์–ธ์–ด๋Š”ย  ๋‹ท(dot) ์—ฐ์‚ฐ์ž(.)์™€ ๋ธŒ๋ผ์ผ“ ์—ฐ์‚ฐ์ž([]) ๋‘ ๊ฐœ์˜ ์ ‘๊ทผ์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    ๋‹ท ์—ฐ์‚ฐ์ž๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์— ์ ‘๊ทผํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
    ${[requestScope.name]

  2. ๋ธŒ๋ผ์ผ“ ์—ฐ์‚ฐ์ž์•ˆ์˜ ๊ฐ’์ธ ์†์„ฑ์˜ ์ด๋ฆ„์€ ํฐ๋”ฐ์˜ดํ‘œ(") ํ˜น์€ ์ž‘์€๋”ฐ์˜ดํ‘œ(')๋กœ ๋‘˜๋Ÿฌ์‹ธ์•ผ ํ•œ๋‹ค.
    ${requestScope["name"]}

์˜ˆ์ œ 4

elEx04.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	request.setAttribute("name", "ํ™๊ธธ๋™");
%>    
    
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h3>JSP ํ‘œํ˜„ </h3>
	<%= request.getAttribute("name") %>
	<hr>
	
	<h3>[ํ‘œํ˜„ ์–ธ์–ด์™€ ๋‚ด์žฅ ๊ฐ์ฒด์™€ ์ ‘๊ทผ์ž]</h3>
	<h4>๋‹ท ์—ฐ์‚ฐ์ž๋กœ ์ ‘๊ทผ</h4>
	${requestScope.name}

	<h4>๋ธŒ๋ผ์ผ“ ์—ฐ์‚ฐ์ž๋กœ ์ ‘๊ทผ</h4>
	${requestScope["name"]}
	<br>
	${requestScope['name']}
	
	
</body>
</html>


JSTL

JSTL์˜ ๊ฐœ์š”

JSTL( JSP Standard Tag Library)

์‚ฌ์šฉ์ž ์ •์˜ ํƒœ๊ทธ์˜ ํ‘œ์ค€
if, for, while, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒ˜๋ฆฌ
๋‚ด์žฅ ๊ฐ์ฒด, ํŒŒ๋ผ๋ฏธํ„ฐ, ํ—ค๋”, ์ฟ ํ‚ค ์‰ฝ๊ฒŒ ์‚ฌ์šฉ
๊ฐ์ฒด ๊ฐ„์˜ ๋น„๊ต๋ฅผ ==์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌํ˜„

JSTL์ด ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ์˜ ์ข…๋ฅ˜์™€ ์‚ฌ์šฉ๋ฒ•

JSTL์ด ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ์˜ ์ข…๋ฅ˜

JSTL์ด ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ ์‚ฌ์šฉ
JSP ํŽ˜์ด์ง€์— <%@ taglib> ๋””๋ ‰ํ‹ฐ๋ธŒ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉ

jstl.jar ํŒŒ์ผ์ด ํ•„์š”

Jstl jar ํŒŒ์ผ์ด ์—†์„๋•Œ

Core ํƒœ๊ทธ

Core ํƒœ๊ทธ์˜ ์ข…๋ฅ˜

์˜ˆ์ œ 5

https://mvnrepository.com/artifact/javax.servlet/jstl/1.2
์— ์ ‘์†ํ•ด์„œ jar ๋‹ค์šด๋ฐ›๊ธฐ

๊ทธํ›„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด jarํŒŒ์ผ ๋„ฃ๊ธฐ

core01.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	id ๋ณ€์ˆ˜๊ฐ’ ์„ค์ •
	<c:set var="id" value="aaa"></c:set><br>
	<c:out value="${id}"></c:out>
	<br><br>
	
	id ๋ณ€์ˆ˜๊ฐ’ ์‚ญ์ œ
	<c:remove var="id"/><br>
	<c:out value="${id}"></c:out>
</body>
</html>

core02.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<form method="post" action="core02_process.jsp">
		<p>
			์ˆซ์ž : <input type="text" name="number">
		</p>
		<p>
			<input type="submit" value="์ „์†ก">
		</p>
	</form>
</body>
</html>

core02_process.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		String number = request.getParameter("number");
	%>
	
	<c:set var="number" value="<%= number %>"></c:set>
	<c:choose>
		<c:when test="${number % 2 == 0 }">
			<c:out value="${number}"></c:out>์€ ์ง์ˆ˜์ž…๋‹ˆ๋‹ค.
		</c:when>
		<c:when test="${number % 2 == 1 }">
			<c:out value="${number}"></c:out>์€ ํ™€์ˆ˜์ž…๋‹ˆ๋‹ค.
		</c:when>
	</c:choose>
</body>
</html>

core03.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h3>๊ตฌ๊ตฌ๋‹จ</h3>
	<table>
		<c:forEach var="i" begin="1" end="9">
			<tr>
				<c:forEach var="j" begin="1" end="9">
					<td	width="100">
						${i}*${j}=${i*j}
					</td>
				</c:forEach>
			</tr>
		</c:forEach>
	</table>
</body>
</html>

2.2 SQL ํƒœ๊ทธ
SQL ํƒœ๊ทธ์˜ ์ข…๋ฅ˜

2.3 Functions ํƒœ๊ทธ
Functions ํƒœ๊ทธ์˜ ์ข…๋ฅ˜

function01.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<p>java ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰</p>
	<p>Hello, Java Server Pages! => ${fn:contains("Hello, Java Server Pages!","java")}</p>
	<p>Hello, Java Server Pages! => ${fn:contains("Hello, Java Server Pages!","Java")}</p>
	<!-- ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ํ•จ -->
	
	<br><br>
	<p>Hello, Java Server Pages! => ${fn:containsIgnoreCase("Hello, Java Server Pages!","java")}</p>
	<p>Hello, Java Server Pages! => ${fn:containsIgnoreCase("Hello, Java Server Pages!","Java")}</p>
	<!-- ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š์Œ -->
</body>
</html>

function02.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<c:set var="texts" value="${fn:split('Hello, Java Server Pages!',' ')}"></c:set>
	<c:forEach var="i" begin="0" end="${fn:length(texts) - 1}">
		<p>
			texts[${i}] =  ${texts[i]}
		</p>
	</c:forEach>
	
	<p>
		<c:out value="${fn:join(texts,'-')}"></c:out>
	</p>
	
</body>
</html>

0๊ฐœ์˜ ๋Œ“๊ธ€