728x90
본 포스팅에서 사용되는 자바 클래스들의 종류와 용도입니다.
클래스명 | 설명 |
BoardDao.java | BoardController로 부터 요청사항을 전달받아 처리한 후 그 결과를 다시 BoardController에게 전달하는 클래스. |
Page.java | 게시물 목록을 볼 때 페이징 처리를 하기 위한 클래스 |
BoardVo.java | 게시물 한 건에 대한 데이터 저장 클래스 |
AttVo.java | 첨부파일 한 건에 대한 데이터 저장 클래스 |
DBConn.java | 오라클 데이터베이스를 연결하기 위한 클래스 |
FileUpload.java | 첨부파일을 업로드 하기위한 클래스 |
BoardController | 사용자의 요청정보를 전달받아 BoardDao에 전달하고 처리된 결과를 BoardDao에게서 리턴받아 사용자에게 전달하는 클래스 |
각 클래스에 대한 필드와 메서드는 아래와 같습니다. 메서드의 내용은 앞으로 진행할 각 장에서 자세히 설명드리도록 하겠습니다.
BoardDao.java
BoardController로부터 요청받아 실제로 데이터베이스와 연동하여 CRUD를 처리하는 클래스.(CRUD:Create, Read, Update, Delete)
package bean;
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class BoardDao {
public BoardDao() {
}
//로그인/로그아웃 처리
public boolean loginCheck(String mid, String pwd) {
}
// 게시판 저장 처리
public String register(HttpServletRequest req) {
String msg = "게시물이 저장되었습니다.";
return msg;
}
// 게시판 답글 처리
public String repl(HttpServletRequest req) {
String msg = "댓글이 작성되었습니다.";
return msg;
}
// 검색된 전체 행수
public Page getTotListSize(Page p) {
}
// 검색 처리
public List<BoardVo> select(Page p) {
List<BoardVo> list = new ArrayList<BoardVo>();
return list;
}
// 상세보기 처리
public BoardVo view(int serail, char mode) {
String msg = "";
BoardVo respVo = new BoardVo();
List<AttVo> attList = null;
return respVo;
}
// 수정된 내용 저장 처리
public String modifyR(HttpServletRequest req) {
String msg = "수정되었습니다.";
return msg;
}
// 삭제 처리
public String delete(int serial) {
String msg = "삭제 되었습니다.";
return msg;
}
// 첨부 파일 삭제
public void deleteFile(List<AttVo> list) throws Exception{
}
// BoardVo 정보 생성
public BoardVo setVo(ResultSet rs, char mode) throws Exception {
BoardVo vo = new BoardVo();
return vo;
}
// 첨부파일 정보 생성
public AttVo setAttach(ResultSet rs) throws Exception {
AttVo att = new AttVo();
return att;
}
}
Page.java
게시판 조회부분에서 페이징 처리를 하기 위한 전체 정보를 갖고 있는 클래스입니다. nowPage를 기준으로 pageCompute()에서 모든 변수의 값을 계산합니다.
package bean;
public class Page {
int totListSize; //검색된 결과의 전체 건수
int totPage;
int listSize=20;
int blockSize=5;
int startNo;
int endNo;
int startPage;
int endPage;
int nowPage=1;
String findStr ="";
public Page() {}
public Page(int tot, int now) {
this.totListSize = tot;
this.nowPage = now;
pageCompute();
}
//페이지와 관련된 모든 변수 계산
public void pageCompute() {
totPage = (int)Math.ceil(totListSize/(double)listSize);
endNo = nowPage * listSize;
startNo = endNo-listSize+1;
if(endNo>totListSize) endNo = totListSize;
endPage = (int)Math.ceil(nowPage/(double)blockSize) * blockSize;
startPage = endPage-blockSize+1;
if(endPage>totPage) endPage = totPage;
}
public int getStartPage() { return startPage; }
public void setStartPage(int startPage) { this.startPage = startPage; }
public int getEndPage() { return endPage; }
public void setEndPage(int endPage) { this.endPage = endPage; }
public int getTotListSize() { return totListSize; }
public void setTotListSize(int totListSize) { this.totListSize = totListSize; }
public int getTotPage() { return totPage; }
public void setTotPage(int totPage) { this.totPage = totPage; }
public int getListSize() { return listSize; }
public void setListSize(int listSize) { this.listSize = listSize; }
public int getNowPage() { return nowPage; }
public void setNowPage(int nowPage) { this.nowPage = nowPage; }
public int getStartNo() { return startNo; }
public void setStartNo(int startNo) { this.startNo = startNo; }
public int getEndNo() { return endNo; }
public void setEndNo(int endNo) { this.endNo = endNo; }
public String getFindStr() { return findStr; }
public void setFindStr(String findStr) { this.findStr = findStr; }
public int getBlockSize() { return blockSize; }
public void setBlockSize(int blockSize) { this.blockSize = blockSize; }
}
BoardVo.java
게시판 한건의 정보와 첨부파일들을 기억하는 클래스.
package bean;
import java.util.List;
public class BoardVo {
// 데이블과 관련된 필드
private int serial;
private String worker = "";
private String pwd = "";
private String subject = "";
private String content = "";
private String mdate;
private int hit;
private int attCnt;
List<AttVo> attList;
public BoardVo() {
}
public int getSerial() { return serial; }
public void setSerial(int serial) { this.serial = serial; }
public String getContent() { return content; }
public void setContent(String content) { this.content = content; }
public String getMdate() { return mdate; }
public void setMdate(String mdate) { this.mdate = mdate; }
public String getWorker() { return worker; }
public void setWorker(String worker) { this.worker = worker; }
public String getPwd() { return pwd; }
public void setPwd(String pwd) { this.pwd = pwd; }
public String getSubject() { return subject; }
public void setSubject(String subject) { this.subject = subject; }
public int getHit() { return hit; }
public void setHit(int hit) { this.hit = hit; }
public List<AttVo> getAttList() { return attList; }
public void setAttList(List<AttVo> attList) { this.attList = attList; }
public int getAttCnt() { return attCnt; }
public void setAttCnt(int attCnt) { this.attCnt = attCnt; }
}
AttVo.java
첨부파일 한건에 대한 정보를 저장하는 클래스.
package bean;
public class AttVo {
int serial; // 자신의 순번
int pSerial; // 본문글 번호
String attFile; // 저장된 파일명
String oriAttFile; // 사용자가 업로드한 파일명
public int getSerial() { return serial; }
public void setSerial(int serial) { this.serial = serial; }
public int getpSerial() { return pSerial; }
public void setpSerial(int pSerial) { this.pSerial = pSerial; }
public String getAttFile() { return attFile; }
public void setAttFile(String attFile) { this.attFile = attFile; }
public String getOriAttFile() { return oriAttFile; }
public void setOriAttFile(String oriAttFile) { this.oriAttFile = oriAttFile; }
}
DBConn.java
오라클 데이터베이스와 연결하기 위한 클래스입니다. 연결 정보(driver, path, user, pwd)를 가지고 최종적으로 Connectioin 객체를 반환합니다.
package bean;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConn {
private String driver = "oracle.jdbc.driver.OracleDriver";
private String path = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
private String user = "";
private String pwd = "";
private Connection conn;// DB의 연결 정보를 기억
public DBConn() {
this("jobtc", "1234");
}
public DBConn(String user, String pwd) {
this.user = user;
this.pwd = pwd;
try {
// 드라이버 로딩
Class.forName(driver).newInstance();
// DB 연결
conn = DriverManager.getConnection(path, user, pwd);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Connection getConn() {
return conn;
}
}
FileUpload.java
입력, 수정, 댓글 처리 부분에서 필수로 사용되어야 하는 클래스.
package bean;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUpload {
public FileUpload(HttpServletRequest req) {
//<form/> 정보 가져옴.
}
public boolean uploadFormCheck() {
// <form/>이 ectype='multipart/form-data'인지 체크
}
public HttpServletRequest uploading() {
// 파일 업로드 및 처리 결과 저장
}
}
BoardController.java
사용자 요청정보를 가장 먼저 받아들여 BoardDao의 적당한 메서드를 호출하고 그 결과를 다시 사용자에게 되돌려 주는 클래스.
package bean;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class BoardController {
HttpServletRequest req;
HttpServletResponse resp;
BoardDao dao;
public BoardController(HttpServletRequest req, HttpServletResponse resp) {
}
//login.jsp페이지에서 호출됨
public void loginCheck() {
// form 정보를 가져옴.
String loginFlag = req.getParameter("loginFlag");
String mid = req.getParameter("mid");
String pwd = req.getParameter("pwd");
// 요청 객체로 부터 세션을 가져옴.
HttpSession session = req.getSession();
if(loginFlag.equals("login")){
boolean b = dao.loginCheck(mid, pwd);
if(b) {
//세션에 아이디 저장
session.setAttribute("session_id", mid);
}
}else if(loginFlag.equals("logout")){
// 세션에서 session_id 속성 제거
session.removeAttribute("session_id");
}
}
public void select() {
// 조회 요청 처리
}
public void view() {
// 상세보기 처리
}
public void register() {
// 게시판 저장 처리
}
public void modify() {
// 수정 화면 처리
}
public void modifyR() {
// 수정 내용 저장 처리
}
public void deleteR() {
// 삭제 처리
}
public void replR() {
// 답글 처리
}
public Page getPage() {
Page p = new Page();
// 페이지 정보 처리
return p;
}
}
대부분의 메서드안의 내용은 이직 기술하지 않았습니다. 각 메서드의 내용은 앞으로 진행되는 각 단원에서 설명하도록 하겠습니다.
'프로젝트 > 자바 빈과 JSP만을 사용한 게시판 만들기' 카테고리의 다른 글
15장 게시물 입력폼 만들기 (0) | 2020.05.10 |
---|---|
14장 검색및 페이징 (0) | 2020.05.10 |
12장 페이지 동적 삽입 (0) | 2020.05.10 |
11장 메인 페이지와 로그인 처리 만들기 (0) | 2020.05.10 |
10장 파일구조및 목록 (0) | 2020.05.10 |