지구정복

[JSP] 12/31 | 사진게시판 만들기 본문

데이터 엔지니어링 정복/JAVA & JSP

[JSP] 12/31 | 사진게시판 만들기

eeaarrtthh 2020. 12. 31. 17:51
728x90
반응형

ㅇ사진게시판 만들기

-데이터베이스 테이블만들기

create table al_board1 (
seq int not null primary key auto_increment,
subject varchar(150) not null,
writer varchar(12) not null,
mail varchar(50),
password varchar(12)	 not null,
content varchar(2000),
filename varchar(50),
filesize int,
hit int not null,
wip varchar(15) not null,
wdate datetime not null
);


----이전글
--select seq, subject from al_board1 where seq = ( select max(seq) from al_board1 where seq < ?)

----다음글
--select seq, subject from al_board1 where seq = ( select min(seq) from al_board1 where seq > ?)

 

-BoardTO.java

package model1;

public class BoardTO {
	private String seq;
	private String subject;
	private String writer;
	private String mail;
	private String password;
	private String content;
	private String filename;
	private long filesize;
	private String hit;
	private String wip;
	private String wdate;
	private int wgap;
	
	public String getSeq() {
		return seq;
	}
	public long getFilesize() {
		return filesize;
	}
	public String getSubject() {
		return subject;
	}
	public String getWriter() {
		return writer;
	}
	public String getMail() {
		return mail;
	}
	public String getPassword() {
		return password;
	}
	public String getContent() {
		return content;
	}
	public String getFilename() {
		return filename;
	}
	public String getHit() {
		return hit;
	}
	public String getWip() {
		return wip;
	}
	public String getWdate() {
		return wdate;
	}
	public int getWgap() {
		return wgap;
	}
	
	public void setFilesize(long filesize) {
		this.filesize = filesize;
	}
	public void setSeq(String seq) {
		this.seq = seq;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public void setMail(String mail) {
		this.mail = mail;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public void setFilename(String filename) {
		this.filename = filename;
	}
	public void setHit(String hit) {
		this.hit = hit;
	}
	public void setWip(String wip) {
		this.wip = wip;
	}
	public void setWdate(String wdate) {
		this.wdate = wdate;
	}
	public void setWgap(int wgap) {
		this.wgap = wgap;
	}
}

-BoardListTO.java

package model1;

import java.util.ArrayList;

public class BoardListTO {
	private int cpage;
	private int recordPerPage;
	private int blockPerPage;
	private int totalPage;
	private int totalRecord;
	private int startBlock;
	private int endBlock;
	private int blockRecord;
	private ArrayList<BoardTO> boardLists;
	
	public BoardListTO() {
		this.cpage = 1;
		this.recordPerPage = 5;	//한 페이지에 보일 글의 수
		this.blockPerPage = 3;	//페이지 보일 개수 3개씩
		this.totalPage = 1;
		this.totalRecord = 0;
		this.blockRecord = 0;
	}

	public int getCpage() {
		return cpage;
	}
	public int getRecordPerPage() {
		return recordPerPage;
	}
	public int getBlockPerPage() {
		return blockPerPage;
	}
	public int getTotalPage() {
		return totalPage;
	}
	public int getTotalRecord() {
		return totalRecord;
	}
	public int getStartBlock() {
		return startBlock;
	}
	public int getEndBlock() {
		return endBlock;
	}
	public int getBlockRecord() {
		return blockRecord;
	}
	public ArrayList<BoardTO> getBoardLists() {
		return boardLists;
	}
	
	public void setCpage(int cpage) {
		this.cpage = cpage;
	}
	public void setRecordPerPage(int recordPerPage) {
		this.recordPerPage = recordPerPage;
	}
	public void setBlockPerPage(int blockPerPage) {
		this.blockPerPage = blockPerPage;
	}
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	public void setTotalRecord(int totalRecord) {
		this.totalRecord = totalRecord;
	}
	public void setStartBlock(int startBlock) {
		this.startBlock = startBlock;
	}
	public void setEndBlock(int endBlock) {
		this.endBlock = endBlock;
	}
	public void setBlockRecord(int blockRecord) {
		this.blockRecord = blockRecord;
	}
	public void setBoardLists(ArrayList<BoardTO> boardLists) {
		this.boardLists = boardLists;
	}
}

-BoardDAO.java

package model1;

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

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

public class BoardDAO {
	private DataSource dataSource;
	
	public BoardDAO() {
		try {
			Context initCtx = new InitialContext();
			Context envCtx = (Context)initCtx.lookup( "java:comp/env" );
			this.dataSource = (DataSource)envCtx.lookup( "jdbc/mariadb2" );
		} catch (NamingException e) {
			System.out.println( "[error] : " + e.getMessage() );
		}
	}
	
	//write
	public void boardWrite() {
		
	}
	
	//write_ok
	public int boardWriteOk( BoardTO to ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		
		//정상처리 또는 비정상처리 변수
		int flag = 1;
		
		try {
			conn = dataSource.getConnection();
			
			//데이터베이스에 데이터 집어넣기
			String sql = "insert into al_board1 values (0, ?, ?, ?, ?, ?, ?, ?,  0, ?, now())";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString( 1, to.getSubject() );
			pstmt.setString( 2, to.getWriter() );
			pstmt.setString( 3, to.getMail() );
			pstmt.setString( 4, to.getPassword() );
			pstmt.setString( 5, to.getContent() );
			pstmt.setString( 6, to.getFilename() );
			pstmt.setLong( 7, to.getFilesize() );
			pstmt.setString( 8, to.getWip() );
			
			int result = pstmt.executeUpdate();
			if ( result == 1 ) {
				flag = 0;
			}
			
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return flag;
	}
	
	//list
	public ArrayList<BoardTO> boardList() {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		ArrayList<BoardTO> lists = new ArrayList<BoardTO>();
		
		try {
			conn = dataSource.getConnection();
			
			String sql = "select seq, subject, filename, writer, date_format(wdate, '%Y-%m-%d') wdate, hit, datediff(now(), wdate) wgap from al_board1 order by seq desc";
			pstmt = conn.prepareStatement( sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
			rs = pstmt.executeQuery();
			
			//데이터베이스에서 글목록 가져와서 리스트 나타내기
			while( rs.next() ) {
				BoardTO to = new BoardTO();
				String seq = rs.getString( "seq" );
				String subject = rs.getString( "subject" );
				String writer = rs.getString( "writer" );
				String filename = rs.getString( "filename" );
				String wdate = rs.getString( "wdate" );
				String hit = rs.getString( "hit" );
				int wgap = rs.getInt( "wgap" );
				
				to.setSeq(seq);
				to.setSubject(subject);
				to.setWriter(writer);
				to.setFilename(filename);
				to.setWdate(wdate);
				to.setHit(hit);
				to.setWgap(wgap);
				
				lists.add( to );
			}
			
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( rs != null ) try { rs.close(); } catch ( SQLException e ) {}
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return lists;
	}
	
	//paging list
	public BoardListTO boardList( BoardListTO listTO ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		// 페이지를 위한 기본 요소
		int cpage = listTO.getCpage();
		int recordPerPage = listTO.getRecordPerPage();	//한페이지에 보이는 글의 개수  5개
		int BlockPerPage = listTO.getBlockPerPage();	//한 화면에 보일 페이지의 수 3개
		
		try {
			conn = dataSource.getConnection();
			
			String sql = "select seq, subject, filename, writer, date_format(wdate, '%Y-%m-%d') wdate, hit, datediff(now(), wdate) wgap from al_board1 order by seq desc";
			pstmt = conn.prepareStatement( sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
			rs = pstmt.executeQuery();
			
			//총 글의 개수 얻기
			rs.last();
			listTO.setTotalRecord( rs.getRow() );
			rs.beforeFirst();
			
			//총 페이지 수 얻기
			listTO.setTotalPage( ( (listTO.getTotalRecord() - 1) / recordPerPage ) + 1 );
			int skip = ( cpage * recordPerPage ) - recordPerPage;
			if (skip != 0) rs.absolute( skip );
			
			ArrayList<BoardTO> lists = new ArrayList<BoardTO>();
			
			for( int i=0; i<recordPerPage && rs.next(); i++) {
				BoardTO to = new BoardTO();
				String seq = rs.getString( "seq" );
				String subject = rs.getString( "subject" );
				String writer = rs.getString( "writer" );
				String filename = rs.getString( "filename" );
				String wdate = rs.getString( "wdate" );
				String hit = rs.getString( "hit" );
				int wgap = rs.getInt( "wgap" );
				
				to.setSeq(seq);
				to.setSubject(subject);
				to.setWriter(writer);
				to.setFilename(filename);
				to.setWdate(wdate);
				to.setHit(hit);
				to.setWgap(wgap);
				
				lists.add( to );
			}
			listTO.setBoardLists( lists );
			
			listTO.setStartBlock( ( (cpage-1)/BlockPerPage ) * BlockPerPage + 1 );
			listTO.setEndBlock( ( (cpage-1)/BlockPerPage ) * BlockPerPage + BlockPerPage );
			if ( listTO.getEndBlock() >= listTO.getTotalPage() ) {
				listTO.setEndBlock( listTO.getTotalPage() );
			}
			
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( rs != null ) try { rs.close(); } catch ( SQLException e ) {}
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return listTO;
	}
	
	//view
	public BoardTO boardView( BoardTO to ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			conn = dataSource.getConnection();
			
			//조회수 증가시키기
			String sql = "update al_board1 set hit = hit+1 where seq = ?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString( 1, to.getSeq() );
			rs = pstmt.executeQuery();
			
			//데이터베이스에서 해당 글 내용 가져오기
			sql = "select subject, writer, mail, content, filename, hit, wip, wdate from al_board1 where seq = ?";
			pstmt = conn.prepareStatement( sql );
			pstmt.setString( 1, to.getSeq() );
			rs = pstmt.executeQuery();
			
			//데이터베이스에서 sql실행문의 각 컬럼을 가져와서 변수에 저장
			if ( rs.next() ) {
				String subject = rs.getString( "subject" );
				String writer = rs.getString( "writer" );
				String mail = rs.getString( "mail" );
				String content = rs.getString( "content" );
				String filename = rs.getString( "filename" );
				String hit = rs.getString( "hit" );
				String wip = rs.getString( "wip" );
				String wdate = rs.getString( "wdate" );
				
				to.setSubject(subject);
				to.setWriter(writer);
				to.setMail(mail);
				to.setContent(content);
				to.setFilename(filename);
				to.setHit(hit);
				to.setWip(wip);
				to.setWdate(wdate);
			}
			//강사님코드
			/*
			 sql = "select max(seq) seq, subject from al_board1 where seq < ?";
			 pstmt = conn.prepareStatement(sql);
			 pstmt.setString(1, seq);
			 
			 rs = pstmt.executeQuery();
			 if( rs.next() ) {
			 	pseq = rs.getString("seq");
			 	psubject = rs.getString( "subject" );
			 }
			 */
		
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( rs != null ) try { rs.close(); } catch ( SQLException e ) {}
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return to;
	}
	
	//view_이전글
	public BoardTO boardView_before( BoardTO to_before ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			conn = dataSource.getConnection();
			
			//데이터베이스에서 해당 글 내용 가져오기
			String sql = "select seq, subject from al_board1 where seq = ( select max(seq) from al_board1 where seq < ?)";
			pstmt = conn.prepareStatement( sql );
			pstmt.setString( 1, to_before.getSeq() );
			rs = pstmt.executeQuery();
			
			if ( rs.next() ) {
				String subject = rs.getString( "subject" );
				String seq = rs.getString("seq");
				to_before.setSubject(subject);
				to_before.setSeq(seq);
			} else {
				to_before.setSubject( "이전글이 없습니다." );
			}
		
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( rs != null ) try { rs.close(); } catch ( SQLException e ) {}
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return to_before;
	}
	
	//view_다음글
	public BoardTO boardView_next( BoardTO to_next ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			conn = dataSource.getConnection();

			//데이터베이스에서 해당 글 내용 가져오기
			String sql = "select seq, subject from al_board1 where seq = ( select min(seq) from al_board1 where seq > ?)";
			pstmt = conn.prepareStatement( sql );
			pstmt.setString( 1, to_next.getSeq() );
			rs = pstmt.executeQuery();
			
			if ( rs.next() ) {
				String subject = rs.getString( "subject" );
				String seq = rs.getString("seq");
				to_next.setSubject(subject);
				to_next.setSeq(seq);
			} else {
				to_next.setSubject( "다음글이 없습니다." );
			}
		
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( rs != null ) try { rs.close(); } catch ( SQLException e ) {}
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return to_next;
	}
	
	//delete
	public BoardTO boardDelete( BoardTO to ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			conn = dataSource.getConnection();
			
			//데이터베이스에서 해당 글 내용 가져오기
			String sql = "select subject, writer from al_board1 where seq = ?";
			pstmt = conn.prepareStatement( sql );
			pstmt.setString( 1, to.getSeq() );
			rs = pstmt.executeQuery();
			
			//데이터베이스에서 sql실행문의 각 컬럼을 가져와서 변수에 저장
			if ( rs.next() ) {
				String subject = rs.getString( "subject" );
				String writer = rs.getString( "writer" );
				
				to.setSubject(subject);
				to.setWriter(writer);
			}
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( rs != null ) try { rs.close(); } catch ( SQLException e ) {}
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return to;
	}
	
	//delete_ok
	public int boardDeleteOk( BoardTO to ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		int flag = 2;
		
		try {
			conn = dataSource.getConnection();
			
			String sql = "select filename from al_board1 where seq = ?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, to.getSeq() );
			
			rs = pstmt.executeQuery();
			String filename = null;
			if ( rs.next() ) {
				filename = rs.getString( "filename" );
			}
			
			//데이터베이스에서 해당 글 내용 가져오기
			sql = "delete from al_board1 where seq = ? and password = ?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString( 1, to.getSeq() );
			pstmt.setString( 2, to.getPassword() );
			
			int result = pstmt.executeUpdate();
			if ( result == 0 ) {
				flag = 1;
			} else if ( result ==1 ) {
				flag = 0;
				if ( filename != null ) {
					File file = new File( "C:/Java/jsp-workspace/AlbumEx01/WebContent/upload/"+ filename );
					file.delete();
				}
			}
		
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return flag;
	}
	
	//modify
	public BoardTO boardModify( BoardTO to ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			conn = dataSource.getConnection();
			
			//데이터베이스에서 해당 글 내용 가져오기
			String sql = "select writer, subject, content, mail, filename from al_board1 where seq = ?";
			pstmt = conn.prepareStatement( sql );
			pstmt.setString( 1, to.getSeq() );
			rs = pstmt.executeQuery();
			
			//데이터베이스에서 sql실행문의 각 컬럼을 가져와서 변수에 저장
			if ( rs.next() ) {
				String subject = rs.getString( "subject" );
				String writer = rs.getString( "writer" );
				String content = rs.getString( "content" );
				String filename = rs.getString( "filename" );
				String mail = rs.getString( "mail" );
				
				to.setSubject(subject);
				to.setWriter(writer);
				to.setContent(content);
				to.setFilename(filename);
				to.setMail(mail);
			}
			
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( rs != null ) try { rs.close(); } catch ( SQLException e ) {}
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return to;
	}
	
	//modify_ok
	public int boardModifyOk( BoardTO to ) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		int flag = 2;
		
		try {
			conn = dataSource.getConnection();
			
			String sql = "select filename from al_board1 where seq = ?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, to.getSeq());
			rs = pstmt.executeQuery();
			String oldFilename = null;
			if ( rs.next() ) {
				oldFilename = rs.getString( "filename" );
			}
			
			if ( to.getFilename() != null ) {
				//수정에서 첨부파일이 있을 때
				sql = "update al_board1 set subject = ?, content = ?, mail = ?, filename = ? where seq = ? and password = ?";
				pstmt = conn.prepareStatement(sql);
				pstmt.setString( 1, to.getSubject() );
				pstmt.setString( 2, to.getContent() );
				pstmt.setString( 3, to.getMail() );
				pstmt.setString( 4, to.getFilename() );
				pstmt.setString( 5, to.getSeq() );
				pstmt.setString( 6, to.getPassword() );
			} else {
				//수정에서 첨부파일이 없을 때
				sql = "update al_board1 set subject = ?, content = ?, mail = ? where seq = ? and password = ?";
				pstmt = conn.prepareStatement(sql);
				pstmt.setString( 1, to.getSubject() );
				pstmt.setString( 2, to.getContent() );
				pstmt.setString( 3, to.getMail() );
				pstmt.setString( 4, to.getSeq() );
				pstmt.setString( 5, to.getPassword() );
			}
			
			int result = pstmt.executeUpdate();
			if ( result == 0 ) {
				flag = 1;
			} else if ( result ==1 ) {
				flag = 0;
				if ( to.getFilename() != null && oldFilename != null ) {
					//기존 첨부파일이 있고 추가된 첨부파일이 있을 경우 기존 파일은 삭제한다.
					File file = new File( "C:/Java/jsp-workspace/AlbumEx01/WebContent/upload/"+ oldFilename );
					file.delete();
				}
			}
			
		} catch (SQLException e) {
			System.out.println( "error : " + e.getMessage() );
		} finally {
			if ( pstmt != null ) try { pstmt.close(); } catch ( SQLException e ) {}
			if ( conn != null ) try { conn.close(); } catch ( SQLException e ) {}
		}
		return flag;
	}
}

-board_inser1_ok.jsp => 페이지 테스트하기위해 데이터 집어넣는 jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.NamingException" %>
<%@ page import="javax.sql.DataSource" %>

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.SQLException" %>

<%
	request.setCharacterEncoding("utf-8");

	Connection conn = null;
	PreparedStatement pstmt = null;
	
	try {
		//커넥션 풀로 DB에 연결하기
		Context initCtx = new InitialContext();
		Context envCtx = (Context)initCtx.lookup( "java:comp/env" );
		DataSource dataSource = (DataSource)envCtx.lookup( "jdbc/mariadb2" );
		conn = dataSource.getConnection();
		
		String sql = "insert into al_board1 values (0, ?, ?, ?, ?, ?, ?, 0, 0, ?, now())";
		pstmt = conn.prepareStatement(sql);
		for( int i=1; i<=50; i++ ) {
			pstmt.setString( 1, "제목" + i );
			pstmt.setString( 2, "글쓴이" );
			pstmt.setString( 3, "test@test.com" );
			pstmt.setString( 4, "1234" );
			pstmt.setString( 5, "내용" + i );
			pstmt.setString( 6, "607927_1.jpg" );
			pstmt.setString( 7, "000.000.000.000" );
			
			pstmt.executeUpdate();
		}
		
	} catch(NamingException e) {
		System.out.println( "error: " + e.getMessage() );
	} catch(SQLException e) {
		System.out.println( "error: " + e.getMessage() );
	} finally {
		if ( pstmt != null ) pstmt.close();
		if ( conn != null ) conn.close();
	}
	
	out.println( " <script type='text/javascript'> " );
	out.println( " alert('글쓰기에 성공했습니다.'); " );
	out.println( " location.href='board_list1.jsp;' " );
	out.println( " </script> " );
	

%>

-board_list1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@page import="model1.BoardTO"%>
<%@page import="model1.BoardDAO"%>
<%@ page import="model1.BoardListTO" %>
<%@page import="java.util.ArrayList"%>

<%
	int cpage = 1;
	if ( request.getParameter( "cpage" ) != null && !request.getParameter( "cpage" ).equals("") ) {
		cpage = Integer.parseInt( request.getParameter( "cpage" ) );
	}
	
	BoardListTO listTO = new BoardListTO();
	listTO.setCpage(cpage);
	
	BoardDAO dao = new BoardDAO();
	listTO = dao.boardList(listTO);

	int recordPerPage = listTO.getRecordPerPage();
	int totalRecord = listTO.getTotalRecord();
	int totalPage = listTO.getTotalPage();
	int blockPerPage = listTO.getBlockPerPage();
	int blockRecord = listTO.getBlockRecord();
	int startBlock = listTO.getStartBlock();
	int endBlock = listTO.getEndBlock();

	StringBuffer sbHtml = new StringBuffer();
	
	for ( BoardTO to : listTO.getBoardLists() ) {
		blockRecord++;
		sbHtml.append( " <td width='20%' class='last2'> ");
		sbHtml.append( " 	<div class='board'> " );
		sbHtml.append( " 		<table class='boardT'> " );
		sbHtml.append( " 		<tr> " );
		sbHtml.append( " 			<td class='boardThumbWrap'> " );
		sbHtml.append( " 				<div class='boardThumb'> " );
		sbHtml.append( " 					<a href='board_view1.jsp?cpage="+ cpage +"&seq="+to.getSeq()+"'><img src='../../upload/" + to.getFilename() + "' border='0' width='100%'' /></a> " );
		sbHtml.append( " 				</div> " );														
		sbHtml.append( " 			</td> " );
		sbHtml.append( " 		</tr> " );
		sbHtml.append( " 		<tr> " );
		sbHtml.append( " 			<td> " );
		sbHtml.append( " 				<div class='boardItem'>	 " );
		sbHtml.append( " 					<strong>" + to.getSubject() + "</strong> " );
		if( to.getWgap() == 0 ) {
			sbHtml.append( "		<img src='../../images/icon_hot.gif' alt='HOT'> ");
		}
		sbHtml.append( " 				</div> " );
		sbHtml.append( " 			</td> " );
		sbHtml.append( " 		</tr> " );
		sbHtml.append( " 		<tr> " );
		sbHtml.append( " 			<td><div class='boardItem'><span class='bold_blue'>" + to.getWriter() + "</span></div></td> " );
		sbHtml.append( " 		</tr> " );
		sbHtml.append( " 		<tr> " );
		sbHtml.append( " 			<td><div class='boardItem'>" + to.getWdate() + " <font>|</font> Hit " + to.getHit()+ "</div></td> " );
		sbHtml.append( " 		</tr> " );
		sbHtml.append( " 		</table> " );
		sbHtml.append( " 	</div> " );
		sbHtml.append( " </td> " );
		
	}
%>
	
	
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="../../css/board_list.css">
<style type="text/css">
<!--
	.board_pagetab { text-align: center; }
	.board_pagetab a { text-decoration: none; font: 12px verdana; color: #000; padding: 0 3px 0 3px; }
	.board_pagetab a:hover { text-decoration: underline; background-color:#f2f2f2; }
	.on a { font-weight: bold; }
-->
</style>
</head>

<body>
<!-- 상단 디자인 -->
<div class="contents1"> 
	<div class="con_title"> 
		<p style="margin: 0px; text-align: right">
			<img style="vertical-align: middle" alt="" src="../../images/home_icon.gif" /> &gt; 커뮤니티 &gt; <strong>여행지리뷰</strong>
		</p>
	</div> 
	<div class="contents_sub">	
		<div class="board_top">
			<div class="bold">
				<p>총 <span class="txt_orange"><%=blockRecord %></span>건</p>
			</div>
		</div>	
		
		<!--게시판-->
		<table class="board_list">
		<tr>
			<%=sbHtml %>
		</tr>
		</table>
		<!--//게시판-->	
		
		<div class="align_right">		
			<input type="button" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" onclick="location.href='board_write1.jsp?cpage=<%=cpage %>'" />
		</div>
		
		<!--페이지넘버-->
		<div class="paginate_regular">
			<div class="board_pagetab">
			<%	
				if ( startBlock == 1 ) {
					out.println(" <span class='off'><a>&lt;&lt;</a></span> ");
				} else {
					out.println(" <span class='off'><a href='board_list1.jsp?cpage="+ (startBlock-blockPerPage) +"'>&lt;&lt;</a></span> ");
				}
				out.println(" &nbsp; ");
				
				if ( cpage == 1 ) {
					out.println(" <span class='off'><a>&lt;</a></span> ");
				} else {
					out.println(" <span class='off'><a href='board_list1.jsp?cpage="+ (cpage-1) +"'>&lt;</a></span> ");
				}
				out.println(" &nbsp;&nbsp; ");
				
				for ( int i=startBlock; i<=endBlock; i++ ) {
					if ( cpage == i ) { 
						out.println(" <span class='off'>[" + i + "]</span> ");
					} else {
						out.println(" <span class='off'><a href='board_list1.jsp?cpage=" + i + "'>" + i + "</a></span> ");
					}
				}
				out.println(" &nbsp;&nbsp; ");
				
				if ( cpage == totalPage ) {
					out.println(" <span class='off'><a>&gt;</a></span> ");
				} else {
					out.println(" <span class='off'><a href='board_list1.jsp?cpage="+ (cpage+1) +"'>&gt;</a></span> ");
				}
				out.println(" &nbsp; ");
				
				if ( endBlock == totalPage ) {
					out.println(" <span class='off'><a>&gt;</a></span> ");
				} else {
					out.println(" <span class='off'><a href='board_list1.jsp?cpage="+ (startBlock+blockPerPage) +"'>&gt;&gt;</a></span> ");
				}
				out.println(" &nbsp; ");
			%>
			
			</div>
		</div>
		<!--//페이지넘버-->	
  	</div>
</div>
<!--//하단 디자인 -->

</body>
</html>

-board_write1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%
	request.setCharacterEncoding( "utf-8" );
	
	String cpage = request.getParameter( "cpage" );
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="../../css/board_write.css">

<script type="text/javascript">
	window.onload = function() {
		document.getElementById( 'submit1' ).onclick = function() {
			if ( document.wfrm.info.checked == false ) {
				alert( '동의를 해주세요' );
				return false;
			}
			if ( document.wfrm.writer.value.trim() == '' ) {
				alert( '글쓴이를 입력해주세요' );
				return false;
			}
			if ( document.wfrm.subject.value.trim() == '' ) {
				alert( '제목을 입력해주세요' );
				return false;
			}
			if ( document.wfrm.password.value.trim() == '' ) {
				alert( '비밀번호를 입력해주세요' );
				return false;
			}
			if ( document.wfrm.upload.value.trim() == '' ) {
				alert( '사진파일을 첨부해주세요' );
				return false;
			}
			//강사님코드
			/*
			const extension = document.wfrm.upload.value.split('.').pop();
			if ( extension != 'png' && extemsopm != 'jpg' && extension != 'gif' ) {
				alert( '사진파일만 첨부해주세요.(jpg 또는  png, gif)' );
				document.wfrm.upload.value = '';
				return false;
			}
			*/
			var fileValue = document.wfrm.upload.value.trim().split('\\');
			var filename = fileValue[fileValue.length-1];
			var fileEname = filename.substring(filename.length-4, filename.length);
			if ( fileEname == '.jpg' || fileEname == '.png' || fileEname == '.gif' ) {} 
			else {
				alert( '사진파일만 첨부해주세요.(jpg 또는  png, gif)' );
				document.wfrm.upload.value = '';
				return false;
			}
			document.wfrm.submit();
		}
	}
</script>

</head>

<body>
<!-- 상단 디자인 -->
<div class="con_title">
	<h3>게시판</h3>
	<p>HOME &gt; 게시판 &gt; <strong>게시판</strong></p>
</div>
<div class="con_txt">
	<form action="board_write1_ok.jsp" method="post" name="wfrm" enctype="multipart/form-data">
		<input type="hidden" name="cpage" value="<%=cpage %>"/>
		<div class="contents_sub">	
			<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top" colspan="3"><input type="text" name="writer" value="" class="board_view_input_mail" maxlength="5" /></td>
				</tr>
				<tr>
					<th>제목</th>
					<td colspan="3"><input type="text" name="subject" value="" class="board_view_input" /></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td colspan="3"><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				<tr>
					<th>내용</th>
					<td colspan="3"><textarea name="content" class="board_editor_area"></textarea></td>
				</tr>
				<tr>
					<th>이메일</th>
					<td colspan="3"><input type="text" name="mail1" value="" class="board_view_input_mail"/> @ <input type="text" name="mail2" value="" class="board_view_input_mail"/></td>
				</tr>
				<tr>
					<th>첨부파일</th>
					<td colspan="3">
						<input type="file" name="upload" value="파일첨부" class="board_view_input" />
					</td>
				</tr>
				</table>
				
				<table>
				<tr>
					<br />
					<td style="text-align:left;border:1px solid #e0e0e0;background-color:f9f9f9;padding:5px">
						<div style="padding-top:7px;padding-bottom:5px;font-weight:bold;padding-left:7px;font-family: Gulim,Tahoma,verdana;">※ 개인정보 수집 및 이용에 관한 안내</div>
						<div style="padding-left:10px;">
							<div style="width:97%;height:95px;font-size:11px;letter-spacing: -0.1em;border:1px solid #c5c5c5;background-color:#fff;padding-left:14px;padding-top:7px;">
								1. 수집 개인정보 항목 : 회사명, 담당자명, 메일 주소, 전화번호, 홈페이지 주소, 팩스번호, 주소 <br />
								2. 개인정보의 수집 및 이용목적 : 제휴신청에 따른 본인확인 및 원활한 의사소통 경로 확보 <br />
								3. 개인정보의 이용기간 : 모든 검토가 완료된 후 3개월간 이용자의 조회를 위하여 보관하며, 이후 해당정보를 지체 없이 파기합니다. <br />
								4. 그 밖의 사항은 개인정보취급방침을 준수합니다.
							</div>
						</div>
						<div style="padding-top:7px;padding-left:5px;padding-bottom:7px;font-family: Gulim,Tahoma,verdana;">
							<input type="checkbox" name="info" value="1" class="input_radio"> 개인정보 수집 및 이용에 대해 동의합니다.
						</div>
					</td>
				</tr>
				</table>
			</div>
			
			<div class="btn_area">
				<div class="align_left">
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='board_list1.jsp?cpage=<%=cpage %>'" />
				</div>
				<div class="align_right">
					<input type="button" id="submit1" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" />
				</div>
			</div>
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

-board_write1_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@page import="model1.BoardTO"%>
<%@page import="model1.BoardDAO"%>

<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="java.io.File" %>

<%
	String cpage = request.getParameter( "cpage" );

	String uploadPath = "C:/Java/jsp-workspace/AlbumEx01/WebContent/upload";
	int maxFileSize = 1024 * 1024 * 20;
	String encType = "utf-8";
	MultipartRequest multi 
		= new MultipartRequest( request, uploadPath, maxFileSize, encType, new DefaultFileRenamePolicy() );
	
	String subject = multi.getParameter( "subject" );
	String writer = multi.getParameter( "writer" );
	//필수입력항목이 아닌경우 아래와 같이 값을 검사하고 저장해야 한다.
	String mail = "";
	if ( !multi.getParameter( "mail1" ).equals("") && !multi.getParameter( "mail2" ).equals("") ) {
		mail = multi.getParameter( "mail1" ) +  "@" + multi.getParameter( "mail2" );
	}
	String password = multi.getParameter( "password" );
	String content = multi.getParameter( "content" );
	String wip = request.getRemoteAddr();	//환경값만 request사용
	
	String filename = multi.getFilesystemName( "upload" );
	File file = multi.getFile( "upload" );
	long filesize = 0;
	if ( file != null ) {
		filesize = file.length();
	}
	
	BoardTO to = new BoardTO();
	BoardDAO dao = new BoardDAO();
	
	to.setSubject(subject);
	to.setWriter(writer);
	to.setMail(mail);
	to.setPassword(password);
	to.setContent(content);
	to.setWip(wip);
	to.setFilename(filename);
	to.setFilesize(filesize);
	
	int flag = dao.boardWriteOk(to);
	
	out.println( " <script type='text/javascript'> " );
	if( flag == 0 ) {
		out.println( " alert('글쓰기에 성공했습니다.'); " );
		out.println( " location.href='board_list1.jsp'" );
	} else {
		out.println( " alert('글쓰기에 실패했습니다.'); " );
		out.println( " history.back(); " );
	}
	out.println( " </script> " );
	

%>


-board_view1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@page import="model1.BoardTO"%>
<%@page import="model1.BoardDAO"%>

<%
	request.setCharacterEncoding( "utf-8" );
	
	String cpage = request.getParameter( "cpage" );
	String seq = request.getParameter( "seq" );
	
	BoardTO to = new BoardTO();
	to.setSeq( seq );
	
	BoardDAO dao = new BoardDAO();
	to = dao.boardView(to);
	
	seq = to.getSeq();
	String subject = to.getSubject();
	String writer = to.getWriter();
	String mail = to.getMail();
	String wip = to.getWip();
	String wdate = to.getWdate();
	String hit = to.getHit();
	String content = to.getContent();
	String filename = to.getFilename();
	
	//이전글 얻어오기
	BoardTO to_before = new BoardTO();
	to_before.setSeq(seq);

	BoardDAO dao_before = new BoardDAO();
	to_before = dao_before.boardView_before(to);
	
	String subject_before = to_before.getSubject();
	String seq_before = to_before.getSeq();

	//다음글 얻어오기
	BoardTO to_next = new BoardTO();
	to_next.setSeq(seq);
	
	BoardDAO dao_next = new BoardDAO();
	to_next = dao_next.boardView_next(to_next);
	
	String subject_next = to_next.getSubject();
	String seq_next = to_next.getSeq();
	
%>

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="../../css/board_view.css">
</head>

<body>
<!-- 상단 디자인 -->
<div class="contents1"> 
	<div class="con_title"> 
		<p style="margin: 0px; text-align: right">
			<img style="vertical-align: middle" alt="" src="../../images/home_icon.gif" /> &gt; 커뮤니티 &gt; <strong>여행지리뷰</strong>
		</p>
	</div>

	<div class="contents_sub">	
	<!--게시판-->
		<div class="board_view">
			<table>
			<tr>
				<th width="10%">제목</th>
				<td width="60%"><%=subject %>(<%=wip %>)</td>
				<th width="10%">등록일</th>
				<td width="20%"><%=wdate %></td>
			</tr>
			<tr>
				<th>글쓴이</th>
				<td><%=writer %></td>
				<th>조회</th>
				<td><%=hit %></td>
			</tr>
			<tr>
				<td colspan="4" height="200" valign="top" style="padding:20px; line-height:160%">
					<div id="bbs_file_wrap">
						<div>
							<img src='../../upload/<%=filename %>' width="900" onerror="" /><br />
						</div>
					</div>
					<%=content %>
				</td>
			</tr>			
			</table>
		</div>
		<div class="btn_area">
			<div class="align_left">			
				<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='board_list1.jsp?cpage=<%=cpage %>'" />
			</div>
			<div class="align_right">
				<input type="button" value="수정" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='board_modify1.jsp?cpage=<%=cpage %>&seq=<%=seq %>'" />
				<input type="button" value="삭제" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='board_delete1.jsp?cpage=<%=cpage %>&seq=<%=seq %>'" />
				<input type="button" value="쓰기" class="btn_write btn_txt01" style="cursor: pointer;" onclick="location.href='board_write1.jsp?cpage=<%=cpage %>'" />
			</div>	
		</div>
		<!--//게시판-->
		
				<!-- 이전글 / 다음글 -->
		<div class="next_data_area">
			<span class="b">다음글 | </span> <%
				if ( subject_next.equals("다음글이 없습니다.") ) {
					out.println( "다음글이 없습니다." );
				} else {
					out.println( "<a href='board_view1.jsp?cpage="+cpage+"&seq="+seq_next+"'>"+subject_next+"</a>" );
				}
			%>
		</div>
		<div class="prev_data_area">
			<span class="b">이전글 | </span> 
			<%
				if ( subject_before.equals("이전글이 없습니다.") ) {
					out.println( "이전글이 없습니다." );
				} else {
					out.println( "<a href='board_view1.jsp?cpage="+cpage+"&seq="+seq_before+"'>"+subject_before+"</a>" );
				}
			%>
			
		</div>
		<!-- //이전글 / 다음글 -->
	</div>
<!-- 하단 디자인 -->
</div>

</body>
</html>

-board_delete1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@page import="model1.BoardTO"%>
<%@page import="model1.BoardDAO"%>

<%
	request.setCharacterEncoding( "utf-8" );
	
	String cpage = request.getParameter( "cpage" );
	String seq = request.getParameter( "seq" );
	
	String subject = "";
	String writer = "";
	
	BoardTO to = new BoardTO();
	BoardDAO dao = new BoardDAO();
	
	to.setSeq(seq);
	to.setSubject(subject);
	to.setWriter(writer);
	
	to = dao.boardDelete(to);
	
	subject = to.getSubject();
	writer = to.getWriter();
	
%>

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="../../css/board_write.css">
<script type="text/javascript">
	window.onload = function() {
		document.getElementById( 'submit1' ).onclick = function() {
			if( document.dfrm.password.value.trim() == '' ) {
				alert( '비밀번호를 입력해주세요' );
				return false;
			}
			document.dfrm.submit();
		}
	}
</script>
</head>

<body>
<!-- 상단 디자인 -->
<div class="contents1"> 
	<div class="con_title"> 
		<p style="margin: 0px; text-align: right">
			<img style="vertical-align: middle" alt="" src="../../images/home_icon.gif" /> &gt; 커뮤니티 &gt; <strong>여행지리뷰</strong>
		</p>
	</div> 

	<form action="board_delete1_ok.jsp" method="post" name="dfrm">
		<input type="hidden" name="seq" value="<%=seq %>"/>
		<div class="contents_sub">
		<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top" colspan="3"><input type="text" name="writer" value="<%=writer %>" class="board_view_input_mail" maxlength="5" /></td>
				</tr>
				<tr>
					<th>제목</th>
					<td colspan="3"><input type="text" name="subject" value="<%=subject %>" class="board_view_input" /></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td colspan="3"><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				</table>
			</div>

			<div class="btn_area">
				<div class="align_left">			
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='board_list1.jsp?cpage=<%=cpage %>'" />
					<input type="button" value="보기" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='board_view1.jsp?cpage=<%=cpage %>&seq=<%=seq %>'" />
				</div>
				<div class="align_right">			
					<input type="button" id="submit1" value="삭제" class="btn_write btn_txt01" style="cursor: pointer;" />					
				</div>	
			</div>	
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

-board_delete1_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@page import="model1.BoardTO"%>
<%@page import="model1.BoardDAO"%>

<%
	request.setCharacterEncoding( "utf-8" );
	String cpage = request.getParameter( "cpage" );
	
	String seq = request.getParameter( "seq" );
	String password = request.getParameter( "password" );
	
	BoardTO to = new BoardTO();
	BoardDAO dao = new BoardDAO();
	
	to.setSeq(seq);
	to.setPassword(password);
	
	int flag = dao.boardDeleteOk(to);
	
	
	out.println(" <script type='text/javascript'> ");
	if ( flag == 0 ) {
		out.println(" alert( '글삭제에 성공했습니다.' ); ");
		out.println(" location.href='board_list1.jsp;' ");
	} else if ( flag == 1 ) {
		out.println(" alert( '비밀번호가 틀립니다.' ); ");
		out.println(" history.back(); ");
	} else {
		out.println(" alert( '글삭제에 실패했습니다.' ); ");
		out.println(" history.back(); ");
	}
	
	out.println(" </script> ");
	
%>

-board_modify1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%@page import="model1.BoardTO"%>
<%@page import="model1.BoardDAO"%>

<%
	request.setCharacterEncoding( "utf-8" );
	String cpage = request.getParameter( "cpage" );
	String seq = request.getParameter( "seq" );
	
	BoardTO to = new BoardTO();
	BoardDAO dao = new BoardDAO();
	to.setSeq(seq);
	
	to = dao.boardModify(to);
	
	String writer = to.getWriter();
	String subject = to.getSubject();
	String content = to.getContent();
	String mail[] = null;
	if ( to.getMail().equals("") ) {
		mail = new String[] {"", ""};
	} else {
		mail = to.getMail().split("@");
	}
	String filename = to.getFilename();
	
%>

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="../../css/board_write.css">
<script type="text/javascript">
 	window.onload = function() {
 		document.getElementById( 'submit1' ).onclick = function() {
 			if ( document.mfrm.subject.value.trim() == '' ) {
 				alert( '제목을 입력해주세요' );
 				return false;
 			}
 			if ( document.mfrm.password.value.trim() == '' ) {
 				alert( '비밀번호를 입력해주세요' );
 				return false;
 			}
 			if ( document.mfrm.content.value.trim() == '' ) {
 				alert( '내용을 입력해주세요' );
 				return false;
 			}
 			
 			document.mfrm.submit();
 		}
 	}
</script>
</head>

<body>
<!-- 상단 디자인 -->
<div class="contents1"> 
	<div class="con_title"> 
		<p style="margin: 0px; text-align: right">
			<img style="vertical-align: middle" alt="" src="../../images/home_icon.gif" /> &gt; 커뮤니티 &gt; <strong>여행지리뷰</strong>
		</p>
	</div> 

	<form action="board_modify1_ok.jsp" method="post" name="mfrm" enctype="multipart/form-data">
		<input type="hidden" name="seq" value="<%= seq %>">
		<input type="hidden" name="cpage" value="<%= cpage %>">
		<div class="contents_sub">
		<!--게시판-->
			<div class="board_write">
				<table>
				<tr>
					<th class="top">글쓴이</th>
					<td class="top" colspan="3"><input type="text" name="writer" value="<%=writer %>" class="board_view_input_mail" maxlength="5" /></td>
				</tr>
				<tr>
					<th>제목</th>
					<td colspan="3"><input type="text" name="subject" value="<%=subject %>" class="board_view_input" /></td>
				</tr>
				<tr>
					<th>비밀번호</th>
					<td colspan="3"><input type="password" name="password" value="" class="board_view_input_mail"/></td>
				</tr>
				<tr>
					<th>내용</th>
					<td colspan="3">
						<textarea name="content" class="board_editor_area"><%=content %></textarea>
					</td>
				</tr>
				<tr>
					<th>파일첨부</th>
					<td colspan="3">
						기존 파일 : <%=filename %><br /><br />
						<input type="file" name="upload" value="" class="board_view_input" />
					</td>
				</tr>
				<tr>
					<th>이메일</th>
					<td colspan="3"><input type="text" name="mail1" value="<%=mail[0] %>" class="board_view_input_mail"/> @ <input type="text" name="mail2" value="<%=mail[1] %>" class="board_view_input_mail"/></td>
				</tr>
				</table>
			</div>

			<div class="btn_area">
				<div class="align_left">			
					<input type="button" value="목록" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='board_list1.jsp?cpage=<%=cpage %>'" />
					<input type="button" value="보기" class="btn_list btn_txt02" style="cursor: pointer;" onclick="location.href='board_view1.jsp?cpage=<%=cpage %>&seq=<%=seq %>'" />
				</div>
				<div class="align_right">			
					<input type="button" id="submit1" value="수정" class="btn_write btn_txt01" style="cursor: pointer;" />
				</div>	
			</div>	
			<!--//게시판-->
		</div>
	</form>
</div>
<!-- 하단 디자인 -->

</body>
</html>

-board_modify1_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@page import="model1.BoardTO"%>
<%@page import="model1.BoardDAO"%>

<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="java.io.File" %>

<%
	String uploadPath = "C:/Java/jsp-workspace/AlbumEx01/WebContent/upload";
	int maxFileSize = 1024 * 1024 * 20;
	String encType = "utf-8";
	MultipartRequest multi 
		= new MultipartRequest( request, uploadPath, maxFileSize, encType, new DefaultFileRenamePolicy() );
	
	String seq = multi.getParameter( "seq" );
	String cpage = multi.getParameter( "cpage" );
	String password = multi.getParameter( "password" );
	String subject = multi.getParameter( "subject" );
	String content = multi.getParameter( "content" );
	String mail = "";
	if ( !multi.getParameter( "mail1" ).equals("") && !multi.getParameter( "mail2" ).equals("") ) {
		mail = multi.getParameter( "mail1" ) + "@" + multi.getParameter( "mail2" );
	}
	String newFilename = multi.getFilesystemName( "upload" );
	File newFile = multi.getFile( "upload" );

	
	BoardTO to = new BoardTO();
	BoardDAO dao = new BoardDAO();
	to.setSeq(seq);
	to.setPassword(password);
	to.setSubject(subject);
	to.setContent(content);
	to.setMail(mail);
	to.setFilename( newFilename );
	
	int flag = dao.boardModifyOk(to);
	
	
	out.println( " <script type='text/javascript'> " );
	if( flag == 0 ) {
		out.println( " alert('글수정에 성공했습니다.'); " );
		out.println( " location.href='board_view1.jsp?seq="+seq +"&cpage="+cpage+"'" );
	} else if ( flag == 1 ) {
		out.println( " alert('비밀번호가 틀립니다.'); " );
		out.println( " history.back(); " );
	} else {
		out.println( " alert('글수정에 실패했습니다.'); " );
		out.println( " history.back(); " );
	}
	out.println( " </script> " );
	
%>

 

-실행결과

 

 

 

-강사님 소스

AlbumEx01.war
6.65MB

728x90
반응형
Comments