본문 바로가기
STUDY/JSP

게시판(서블릿) - BoardServlet.jave

by Anne of Green Galbes 2019. 2. 26.

서블릿을 이용한 게시판 만들기


① 서블릿에서는 주소를 숨겨서 사용한다

물리적인 주소 : http://192.168.16.8:8080/study/sboard/created.jsp

바뀌는 주소 : http://192.168.16.8:8080/study/bbs/created.do


② DAO, DTO, DB는 그대로 사용


③ BoardServlet.jave : 서블릿클래스 생성

○ jsp에서 공통으로 사용하는 코드를 작성

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

req.setCharacterEncoding("UTF-8");

String cp = req.getContextPath();

Connection conn = DBCPConn.getConnection();

BoardDAO dao = new BoardDAO(conn);

MyUtil myUtil = new MyUtil();

String uri = req.getRequestURI();

String url;


}


주소 : http://192.168.16.8:8080/study/bbs/created.do

req.getContextPath() : study까지의 주소 → http://192.168.16.8:8080/study
req.getRequestURI() : study 이후의 주소 → /bbs/created
if문으로 list.do / created.do를 구분하기 위해 사용


○ list.do / created.do ...를 구분 → if문 사용

○ insert / update / delete / session의 값이 바뀐 경우를 제외하고는 if문에서는 포워드 작업을 해준다

◈ 포워드 작업

○ doPost() 안의 코드 내용

if(uri.indexOf("created.do")!=-1){

RequestDispatcher rd = req.getRequestDispatcher("/sboard/created.jsp");

rd.forward(req, resp);

}


○ 간단하게 수정 가능

forward 메소드를 만들어서, 포워드 작업을 실행

protected void forward(HttpServletRequest req, HttpServletResponse resp, String url)

throws ServletException, IOException {


RequestDispatcher rd = req.getRequestDispatcher(url);

rd.forward(req, resp);

}


○ 수정한 doPost() 안의 코드 내용

doPost에서는 포워드 메소드를 실행

if(uri.indexOf("created.do")!=-1){

url = "/sboard/created.jsp";

forward(req, resp, url);

}


○ 액션태그 사용 불가

◈ 액션태그 사용
<jsp:useBean id="dto" class="com.board.BoardDTO" scope="page"/>

<jsp:setProperty property="*" name="dto"/>


◈ 액션태그 사용 불가

else if(uri.indexOf("created_ok.do")!=-1){

BoardDTO dto = new BoardDTO();

int maxNum = dao.getMaxNum();

dto.setNum(maxNum + 1);

dto.setSubject(req.getParameter("subject"));

dto.setName(req.getParameter("name"));

dto.setEmail(req.getParameter("email"));

dto.setPwd(req.getParameter("pwd"));

dto.setContent(req.getParameter("content"));

dto.setIpAddr(req.getRemoteAddr());

dao.insertData(dto);

url = cp + "/bbs/list.do";

resp.sendRedirect(url);

}


○ 페이징 작업

◈ 필요한 데이터는 다 보내줘야 한다.

req.setAttribute("변수명", 보내는 변수);


else if(uri.indexOf("list.do")!=-1){

String pageNum = req.getParameter("pageNum");

int currentPage = 1;

if(pageNum!=null)

currentPage = Integer.parseInt(pageNum);

String searchKey = req.getParameter("searchKey");

String searchValue = req.getParameter("searchValue");

if(searchValue==null){

searchKey="subject";

searchValue="";

}else{

if(req.getMethod().equalsIgnoreCase("GET")){

searchValue = URLDecoder.decode(searchValue,"UTF-8");

}

}

int dataCount = dao.getDataCount(searchKey, searchValue);

int numPerPage = 10;

int totalPage = myUtil.getPageCount(numPerPage, dataCount);

if(currentPage>totalPage)

currentPage = totalPage;

int start = (currentPage-1)*numPerPage+1;

int end = currentPage*numPerPage;

List<BoardDTO> lists = dao.getLists(start, end, searchKey, searchValue);

String param = "";

if(!searchValue.equals("")){

param = "searchKey=" + searchKey;

param+= "&searchValue=" + URLEncoder.encode(searchValue,"UTF-8");

}

String listUrl = cp + "/bbs/list.do";

if(!param.equals("")){

listUrl += "?" + param;

}

String pageIndexList = myUtil.pageIndexList(currentPage, totalPage, listUrl);

String articleUrl = cp + "/bbs/article.do?pageNum=" +currentPage;

if(!param.equals("")){

articleUrl += "&" + param;

}

//포워딩 데이터

req.setAttribute("lists", lists);

req.setAttribute("pageIndexList", pageIndexList);

req.setAttribute("articleUrl", articleUrl);

req.setAttribute("dataCount", dataCount);

url = "/sboard/list.jsp";

forward(req, resp, url);

}


넘겨주는 변수명은 param 사용 불가

서블릿에서 이미 param을 사용하고 있기 때문

req.setAttribute("dto", dto);

req.setAttribute("params", param);

req.setAttribute("lineSu", lineSu);


url = "/sboard/article.jsp";

forward(req, resp, url);


○ 필요한 값은 getParameter로 받아서 사용

String 변수명 = req.getParameter("변수명");

else if(uri.indexOf("deleted_ok.do")!=-1){

int num = Integer.parseInt(req.getParameter("num"));

String pageNum = req.getParameter("pageNum");    

String searchKey = req.getParameter("searchKey");

String searchValue = req.getParameter("searchValue");


}


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

게시판(서블릿) - 코드  (0) 2019.02.26
게시판(서블릿) - web.xml / jsp  (0) 2019.02.26
Jsp 11일차 - DBCP  (0) 2019.02.25
Jsp 11일차 - JSTL(JSP Standard Tag Library)  (1) 2019.02.25
Jsp 11일차 - 서블릿(Servlet)  (0) 2019.02.25

댓글