yahayaha

8. 프레젠테이션(웹) CRUD 구현 본문

spring/프로젝트

8. 프레젠테이션(웹) CRUD 구현

yaha 2024. 1. 21. 16:39

스프링 MVC의 Controller는 하나의 클래스 내에서 여러 메서드를 작성하고,

 

@RequestMapping 등을 이용해서 URL을 분리하는 구조로 작성할 수 있기때문에 하나의 클래스에서 필요한 만큰 메서드의 분기를 이용하는 구조로 작성.

 

 

원하는 기능을 호출하는 방식을 테이블로 정리한 후 코드를 작성.

 

Task URL Method Parameter From URL 이동
전체 목록 /board/list GET      
등록처리 /board/register POST 모든 항목 입력화면 필요 이동
조회 /board/get GET bno=123    
삭제 처리 /board/remove POST bno 입력화면 필요 이동
수정 처리 /board/modify POST 모든 항목 입력화면 필요 이동

 

 

GET : 조회가 가능하고, 카톡으로 보낼 수 있는거라 생각하면 편함.

POST : 실제 작업에 관련된 애들.

 

 

1. 작업 진행 순서

1. 목록페이지 - 모든 진입 경로인 동시에 입력을 가는 링크

2. 등록 입력/처리 - 게시물 등록 및 처리, 처리후 이동

3. 조회 - 목록 페이지에서 특정 게시물로 이동

4. 수정/삭제 - 조회 페이지에서 수정/삭제 선택해 처리

 

그럼먼저 목록 처리먼저 작업.

 

컨트롤러 생성

@Controller
@RequiredArgsConstructor
@RequestMapping("/board/*")
@Log4j
public class BoardController {
	
	
	@GetMapping("/list")
	public void list() {
		
		log.info("list.................");
	}

 

그리고 항상 하던 테스트 진행.

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration({
	"file:src/main/webapp/WEB-INF/spring/root-context.xml",
	"file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml"
})
@Log4j
public class BoardControllerTests {
	
	@Setter(onMethod_ = {@Autowired})
	private WebAppConfiguration ctx;
	
	//가짜로 Requset를 만들어서 보내는것.
	private MockMvc mockMvc;
	
	@Before
	public void setup() {
		this.mockMvc = MockMvcBuilders.webAppContextSetup((WebApplicationContext) ctx).build();
	}
	
	@Test
	public void testlist() throws Exception {
		log.info(
				mockMvc.perform(						
						MockMvcRequestBuilders.get("/board/list"))
				.andReturn()
				.getModelAndView()
				.getModelMap());
	}
}

 

 

테스트 실행 결과

 

 

 

그럼 get이 잘 작동이 되는지 톰켓을 실행 후 board/list 접속해보면.

 

JSP를 찾을 수 없다고함.

 

다른 오류는 없고 실제로 JSP가 없으니 JSP가 없다고 뜬것. 그리고 sts 로그창을 보면.

 

로그가 정상적으로 잘 찍힌 걸 확인.

 

그럼 JSP를 한번 만들어서 확인을 해봐야함. 

 

먼저 경로를 잘 보면 views/board/list.jsp 라고 있는데 board라는 폴더를 하나 더 만들어줘야함

 

경로는 항상 잘 확인하기.

그럼 리스트 페이지를 뜨는걸 확인 해봄.

 

그럼 이제 여기서 해야하는건 내용물 채우고 주입을 해줘야함.

 

먼저 주입을 해야함.

 

BoardController에 내용 추가.

 

@Controller
@RequiredArgsConstructor
@RequestMapping("/board/*")
@Log4j
public class BoardController {
	
	private final BoardService service;
	
	@GetMapping("/list")
	public void list(Model model) {
		
		log.info("list.................");
		
		model.addAttribute("list", service.getList());
	}

}

 

화면에 게시물을 전달해줘야 하는데 게시물은 파라미터가 없고 데이터베이스에서 가져와야 하니까 

 

Model이 필요한 상황.

 

Model을 통해서 집어 넣는건 addAttribute가 필요.

 

이름은 list로 해주고 service객체한테 리스트를 얻어와서 담아서 보낸다는 뜻.

 

그리고 list.jsp로 이동해서 리스트를 뿌릴 수 있도록 수정.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>List Page</h1>
	
	${list}
</body>
</html>

 

그리고 서버를 실행하고 다시 board/list로 가보면.

 

 

 

데이터베이스에 들어가있는 데이터들이 정상적으로 뿌려진게 확인 가능함.

'spring > 프로젝트' 카테고리의 다른 글

10. 프레젠테이션(웹) CRUD 구현 ( 삭제 / 수정)  (0) 2024.01.23
9. 프레젠테이션(웹) CRUD 구현  (0) 2024.01.23
7. 비즈니스 계층과 테스트.  (0) 2024.01.21
6. CRUD (update)  (1) 2024.01.20
5. CRUD (delete)  (0) 2024.01.20