Feb 20, 2023
4 mins read
package hello.servlet.web.springmvc.v2;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import hello.servlet.domain.member.Member;
import hello.servlet.domain.member.MemberRepository;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/springmvc/v2/members") //공통 부분은 클래스 단위로 지정할 수 있다.
public class SpringMemberControllerV2 {
private MemberRepository memberRepository = MemberRepository.getInstance();
//RequestMapping은 메서드 단위로 동작하기 때문에 다 합쳐놔도 정상 작동한다.
@RequestMapping("/new-form")
public ModelAndView newForm() {
return new ModelAndView("new-form");
}
@RequestMapping("/save")
public ModelAndView save(HttpServletRequest request, HttpServletResponse response) {
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
Member member = new Member(username, age);
memberRepository.save(member);
ModelAndView mv = new ModelAndView("save-result");
//편하게 Member오브젝트 넣어주는 메서드
mv.addObject("member", member);
return mv;
}
//"/springmvc/v2/members" 공통 부분 뒤에 아무것도 안붙으면 아래 members() 메서드 호출됨
@RequestMapping
public ModelAndView members() {
List<Member> members = memberRepository.findAll();
ModelAndView mv = new ModelAndView("members");
mv.addObject("members", members);
return mv;
}
}
http://localhost:8080/springmvc/v2/members/new-form
http://localhost:8080/springmvc/v2/members
package hello.servlet.web.springmvc.v3;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import hello.servlet.domain.member.Member;
import hello.servlet.domain.member.MemberRepository;
@Controller
@RequestMapping("/springmvc/v3/members")
public class SpringMemberControllerV3 {
private MemberRepository memberRepository = MemberRepository.getInstance();
//GET방식, POST방식을 지정할 수 있다.
//@RequestMapping(value = "/new-form", method = RequestMethod.GET)
@GetMapping("/new-form") //위와 똑같은 기능
public String newForm() {
return "new-form";
}
//@RequestMapping(value = "/save", method = RequestMethod.POST)
@PostMapping("/save")
public String save(
@RequestParam("username") String username,
@RequestParam("age") int age,
Model model
) {
Member member = new Member(username, age);
memberRepository.save(member);
model.addAttribute(member);
return "save-result";
}
//@RequestMapping(method = GET)
@GetMapping
public String members(Model model) {
List<Member> members = memberRepository.findAll();
model.addAttribute("members", members);
return "members";
}
}
GET으로 지정한 new-form 메서드를 POST로 요청 해보면 에러가 난다.
http://localhost:8080/springmvc/v3/members/new-form
http://localhost:8080/springmvc/v3/members
접속해보면 잘 동작을 하는걸 확인할 수 있다.