복습 ARCHIVE/모델별 프로젝트

[Spring](간단한게시판) 기능 - 글 삭제, 글 수정, 글 검색, 글 상세보기

SummerON 2021. 6. 11. 16:38

추가 된 ActionController

 

1. RetrieveActionController

package board.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import board.dao.BoardDAO;
import board.dto.BoardDTO;

public class RetrieveActionController implements Controller {

	private BoardDAO dao;
	
	public RetrieveActionController() {
		
	}

	public void setDao(BoardDAO dao) {
		this.dao = dao;
		System.out.println("RetrieveActionController의 setDao()호출 : "+dao);
	}

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println("RetrieveActionController 실행 됨 ");
		//글 번호 확인
		String num = request.getParameter("num");
		
		//BoardDAO의 상세보기 메서드를 통해 해당 글에 대한 데이터 조회
		//BoardDAO의 상세보기 메서드는 조회된 데이터를 BoardDTO객체에 담아서 리턴
		BoardDTO dto = dao.retrieve(num);
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("retrieve");
		mav.addObject("data", dto);
		
		return mav;
	}

}

2. DeleteActionController

package board.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import board.dao.BoardDAO;

public class DeleteActionController implements Controller {

	private BoardDAO dao;
	
	public DeleteActionController() {
		// TODO Auto-generated constructor stub
	}

	public void setDao(BoardDAO dao) {
		this.dao = dao;
		System.out.println("DeleteActionController DAO 세팅 "+dao);
	}

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println("DeleteActionController 실행");
		String num = request.getParameter("num");
		
		dao.delete(num);
		
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("redirect:/list.do");
		
		return mav;
	}

}

3. UpdateActionController

package board.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;

import board.command.BoardCommand;
import board.dao.BoardDAO;

public class UpdateActionController extends AbstractCommandController {

	private BoardDAO dao;
	
	public UpdateActionController() {
	}

	
	public void setDao(BoardDAO dao) {
		this.dao = dao;
		System.out.println("UpdateActionController setDao : "+dao);
	}


	public UpdateActionController(Class commandClass) {
		super(commandClass);
	}

	public UpdateActionController(Class commandClass, String commandName) {
		super(commandClass, commandName);
	}

	@Override
	protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command, BindException error)
			throws Exception {
		System.out.println("UpdateActionController 호출");
		BoardCommand data = (BoardCommand) command;
		String num = request.getParameter("num");
		
		dao.update(data, num);
		
		return new ModelAndView("redirect:/list.do");
	}

}

4. SearchActionController

package board.controller;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import board.dao.BoardDAO;
import board.dto.BoardDTO;

public class SearchActionController implements Controller {
	
	private BoardDAO dao;
	
	public SearchActionController() {
	}

	
	public void setDao(BoardDAO dao) {
		this.dao = dao;
		System.out.println("SearchActionController setDao : "+dao);
	}


	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println("SearchActionController 실행");
		String searchName = request.getParameter("searchName");
		String searchValue = request.getParameter("searchValue");
		
		ArrayList<BoardDTO> list = dao.search(searchName, searchValue);
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("list");
		mav.addObject("list", list);
		
		return mav;
	}

}

 

최종 board-searvlet.xml 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- 요청에 따른 컨트롤러 반환 담당 -->
	<bean id="defaultHandlerMapping"  class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
	
	<!-- DB 접속 : JNDI 방식 -->
	<bean id="boardDAO" class="board.dao.BoardDAO"></bean>
	
	<!-- 글 목록 보기 컨트롤러 등록 : private dao => setDao(boardDAO)-->
	<bean name="/list.do" class="board.controller.ListActionController">
		<property name="dao">
			<ref bean="boardDAO" />
		</property>
	</bean>
	
	<!-- 글쓰기 화면 처리 컨트롤러 등록 : 스프링이 제공-->
	<bean name="/writeui.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
		<property name="viewName" value="write"></property>
		<!-- ModelAndView.setViewName("write") return mav 객체-->
	</bean>
	
	<!-- 글 저장 처리 컨트롤러 등록 -->
	<bean name="/write.do" class="board.controller.WriteActionController">
		<property name="dao">
			<ref bean="boardDAO" />
		</property>
		<property name="commandClass" value="board.command.BoardCommand"></property>
		<!-- BoardCommand객체는 handle()세번째 매개변수에 자동 전달 -->
	</bean>
	
	<!-- 상세보기 컨트롤러 등록 -->
	<bean name="/retrieve.do" class="board.controller.RetrieveActionController">
		<property name="dao">
			<ref bean="boardDAO" />
		</property>
	</bean>
	
	<!-- 글 삭제 컨트롤러 -->
	<bean name="/delete.do" class="board.controller.DeleteActionController">
		<property name="dao">
			<ref bean="boardDAO" />
		</property>
	</bean>
	
	<!-- 글 수정하기 컨트롤러 -->
	<bean name="/update.do" class="board.controller.UpdateActionController">
		<property name="dao">
			<ref bean="boardDAO" />
		</property>
		<property name="commandClass" value="board.command.BoardCommand"></property>
		<!-- BoardCommand객체는 handle()세번째 매개변수에 자동 전달 -->
	</bean>
	
	<!-- 글 검색 컨트롤러 -->
	<bean name="/search.do" class="board.controller.SearchActionController">
		<property name="dao">
			<ref bean="boardDAO" />
		</property>
	</bean>
	
	
	<!-- viewResolver(위치, 이동할 페이지 지정) : "list" -->
	<bean id="viewResolover"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	    <property name="viewClass"   value="org.springframework.web.servlet.view.InternalResourceView"/>
	    <property name="prefix" value="/"/> <!-- "/list" -->
	    <property name="suffix" value=".jsp"/><!-- "/list.jsp" -->
	</bean>
	
	
</beans>