공부한것들을 정리하는 블로그 입니다.
4. @RequestParam, @ModelAttribute 사용하기 본문
4. @RequestParam, @ModelAttribute 사용하기
호 두 2019. 11. 26. 14:26
1. @RequestParam 사용하기
- Command 객체(VO)를 이용하면 클라이언트에서 넘겨준 요청 파라미터 정보를 받아낼 수 있다
- 하지만 이를 위해서는 반드시 요청 파라미터와 매핑될 변수와 Setter 메소드가 Command 클래스에 선언되어 있어야 한다.
- 하지만 Command 객체에는 없는 파라미터를 Controller 클래스에서 사용해야 할 경우가 있다.
- Spring MVC에서는 HTTP 요청 파라미터 정보를 추출하기 위한 @RequestParam을 제공한다.
2. @ModelAttribute 사용하기
- 매개변수에 사용되는 @ModelAttribute는 Command 객체(VO)의 이르믕ㄹ 변경 할 목적으로 사용 할 수 있다.
- 메소드에 사용되는 @ModelAttribute는, @RequestMapping 어노테이션이 적용된 메소드보다 먼저 호출된다.
- 그리고 @ModelAttribute 메소드 실행 결과로 리턴된 객체는, 자동으로 Model에 저장된다.
- 따라서 @ModelAttribute 메소드의 실행 결과로 리턴된 객체를 View 페이지에서 사용 할 수 있다.
ex) 예제
순서 :
1. 클라이언트가 /getBoardList.do 요청 전송
2. @ModelAttribute 메서드인 searchConditionMap() 메소드가 먼저 실행
3. @ModelAttribute 메서드 실행 결과가 리턴되어 Model 객체에 저장된다 -> [ 컬렉션1 : "conditionMap" ] 생성
4. 클라이언트가 호출한 getBoardList() 메소드가 실행
5. 메소드가 실행되어 DAO를 boardList 라는 이름의 Model에 저장된다. -> [ 컬렉션2 : "boardList" ] 생성
6. getBoardList() 메소드가 리턴한 getBoardList.jsp 파일에서 Model에 저장된 2개의 컬렉션을 모두 사용 할 수 있다.
- getBoardList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>글 목록</title>
</head>
<body>
<center>
<h1>글 목록</h1>
<h3>${userName}님 환영합니다....<a href="logout.do">log out</a></h3>
<!-- 검색 시작 -->
<form action="getBoardList.do" method="post">
<table border="1" cellpadding="0" cellspacing="0" width="700">
<tr>
<td align="right">
<select name="searchCondition">
<c:forEach items="${conditionMap}" var="option">
<option value="${option.value}">${option.key}</option>
</c:forEach>
</select>
<input name="searchKeyword" type="text">
<input type="submit" value="검색 ">
</td>
</tr>
</table>
</form>
<!-- 검색 종료 -->
<table border="1" cellpadding="0" cellspacing="0" width="700">
<tr>
<th bgcolor="orange" width="100">번호</th>
<th bgcolor="orange" width="200">제목</th>
<th bgcolor="orange" width="150">작성자</th>
<th bgcolor="orange" width="150">등록일</th>
<th bgcolor="orange" width="100">조회수</th>
</tr>
<c:forEach items="${boardList }" var="board">
<tr>
<td>${board.seq }</td>
<td align="left">
<a href="getBoard.do?seq=${board.seq }">
${board.title }
</a>
</td>
<td>${board.writer }</td>
<td>${board.regDate }</td>
<td>${board.cnt }</td>
</tr>
</c:forEach>
</table>
<br>
<a href="insertBoard.jsp">새 글 등록</a>
</center>
</body>
</html>
- LoginController.java
package com.springbook.view.user;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.springbook.biz.user.UserVO;
import com.springbook.biz.user.impl.UserDAO;
@Controller
public class LoginController {
@RequestMapping(value="/login.do", method=RequestMethod.GET)
public String loginView(@ModelAttribute("user") UserVO vo) {
System.out.println("로그인 화면으로 이동");
vo.setId("user1");
vo.setPassword("user1");
return "login.jsp";
}
@RequestMapping(value="/login.do", method=RequestMethod.POST)
public String login(UserVO vo, UserDAO userDAO, HttpSession session) {
System.out.println("로그인 처리");
UserVO user = userDAO.getUser(vo);
if(user != null) {
session.setAttribute("userName", user.getName());
return "getBoardList.do";
} else {
return "login.jsp";
}
}
}
'(2019) 사이드 프로젝트 > BoardWeb2(게시판-SpringMVC)' 카테고리의 다른 글
7. gmail로 email 인증번호 보내기(비밀번호 찾기 기능/ 회원가입시 이메일 인증) (0) | 2020.01.06 |
---|---|
6. 프레젠테이션 레이어와 비즈니스 레이어 통합 (0) | 2019.11.29 |
5. @SessionAttributes, @ModelAttribute 사용하기 (0) | 2019.11.26 |
3. Controller 통합(@RequestMapping), JSP에서 Command객체 사용(EL,@ModelAttribute), Servlet API 사용(HttpServletRequest, HttpSession) (0) | 2019.11.26 |
2. 게시판 구조 변경 : (Spring MVC 구조) -> (어노테이션 기반 MVC) (0) | 2019.11.26 |
1. 시작하기 : 게시판 만들기(Spring MVC 구조) (0) | 2019.11.25 |
0. 환경설정 (Spring MVC) (0) | 2019.11.22 |