Certification/Spring(2V0-72.22, SCP)

Spring MVC Controller

엘호리스 2018. 8. 6. 17:30

스프링 MVC 컨트롤러 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.example.spring01.controller;
 
import java.util.List;
 
import javax.inject.Inject;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
 
import com.example.spring01.model.dto.MemberDTO;
import com.example.spring01.service.MemberService;
 
@Controller //스프링에서 관리하는 컨트롤러 빈으로 등록
public class MemberController {
    //MemberService 인스턴스를 주입시킴
    @Inject
    MemberService memberService;
    
    @RequestMapping("member/list.do"//url mapping
    public String memberList(Model model) {
        List<MemberDTO> list = memberService.memberList();
        model.addAttribute("list", list);
        //   WEB-INF/views/member/member_list.jsp로 포워딩
        return "member/member_list";
    }
    
    @RequestMapping("member/write.do"//url mapping
    public String write() {
        //  /WEB-INF/views/member/write.jsp로 포워딩
        return "member/write";
    }
    //@ModelAttribute : 폼에서 전달된 값을 저장하는 객체    
    @RequestMapping("member/insert.do")
    public String insert(@ModelAttribute MemberDTO dto) {
        //System.out.println(dto);        
        memberService.insertMember(dto);
        return "redirect:/member/list.do";
    }
    //@RequestParam  : request.getParameter("변수명") 대체    
    @RequestMapping("member/view.do")
    public String view(@RequestParam String userid, Model model) {
        //모델에 자료 저장
        model.addAttribute("dto", memberService.viewMember(userid));
        // view.jsp로 포워딩
        return "member/view"
    }
    // java.util.Date    
    @RequestMapping("member/update.do")
    public String update(MemberDTO dto, Model model) {
        //비밀번호 체크
        boolean result = memberService.checkPw(dto.getUserid(), dto.getPasswd());
        if(result) { //비밀번호가 맞으면
            //회원정보 수정
            memberService.updateMember(dto);
            //수정 후 목록으로 이동
            return "redirect:/member/list.do"//redirect
        }else { //비밀번호가 틀리면
            model.addAttribute("dto", dto);
            model.addAttribute("join_date", memberService.viewMember(dto.getUserid()).getJoin_date());
            model.addAttribute("message""비밀번호를 확인하세요.");
            return "member/view"//forward
        }
    }
    @RequestMapping("member/delete.do")
    public String delete(String userid, String passwd, Model model) {
        boolean result = memberService.checkPw(userid, passwd);
        if(result) { //비번이 맞으면 삭제 => 목록으로 이동
            memberService.deleteMember(userid);
            return "redirect:/member/list.do";
        }else { //비번이 틀리면 되돌아감
            model.addAttribute("message","비밀번호를 확인하세요.");
            model.addAttribute("dto", memberService.viewMember(userid));
            return "member/view";
        }
    }
}
cs


컨트롤러 구현 과정

1. @Controller 어노테이션을 클래스에 적용한다.(해당 클래스가 컨트롤러 빈 객체에 등록되어 스프링이 관리해준다.)

2. @RequestMapping 어노테이션을 이용해서 처리할 요청 경로를 지정한다.(해당 경로로 요청시 메서드 실행.)

3. 웹 브라우저의 요청을 처리할 메서드를 구현(본격적으로 처리할 로직을 짜면 된다.)

4. 뷰 이름 리턴




Model 클래스는 데이터를 담아 전송하는데 사용된다.


Model addAttribute(String attrName, Object attrValue) : 이름과 벨류값이 파라미터. 모델 속성을 추가한다.

Model addAllAttribute(Map<String, ?> attributes) : 맵의 <키, 값> 쌍들을 모델 속성 이름과 값으로 추가한다.

boolean containsAttribute(String attrName) : 이름이 attrName인 모델 속성을 포함할 경우 true를 리턴한다.