Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JVM
- 스프링
- list
- 리액트
- 이클립스
- Spring 개발환경 설정
- spring
- react
- pom.xml
- 트랜잭션
- 의존성주입
- @Bean
- 스프링 컨테이너
- 자바
- 인터페이스
- merge
- 자동주입
- mysql
- github
- 객체
- 어노테이션
- 영속성 컨텍스트
- java
- 빈
- 깃허브
- 상속
- @transactional
- Spring legacy Project
- DI
- springboot
Archives
- Today
- Total
DEVLOG
Controller 객체 구현 - 2 본문
@ModelAttribute 어노테이션
@ModelAttribute 어노테이션을 이용하면 커맨드 객체의 이름을 변경할 수 있고, 이렇게 변경된 이름은 view에서 커맨드 객체를 참조할 때 사용된다.
MemberController.java
커맨드 객체에 @ModelAttribute("mem") 어노테이션 사용하면 view에서 ${mem.~~~}으로 커맨드 객체에 접근 가능하다.
@Controller
@RequestMapping("/member") // 공통 매핑값
public class MemberController {
@Resource(name="memService")
MemberService service;
@RequestMapping(value="/memJoin", method=RequestMethod.POST)
// @ModelAttribute("mem") 어노테이션 : mem으로 member 객체에 접근할 수 있다. (Ex. ${mem.memId})
public String memJoin(@ModelAttribute("mem") Member member) { // form 에서 입력한 값들이 Member.java의 setter()메소드로 셋팅됨
// Member.java의 getter()로 셋팅된 값을 들고온다.
service.memberRegister(member.getMemId(), member.getMemPw(), member.getMemMail(),
member.getMemPhone1(), member.getMemPhone2(), member.getMemPhone3());
return "memJoinOk";
}
}
MemJoinOk.html
<body>
<h1> memJoinOk </h1>
ID : ${mem.memId}<br /> <!-- Member.java의 getter가 작용한다.-->
PW : ${mem.memPw}<br />
Mail : ${mem.memMail} <br />
Phone : ${mem.memPhone1} <br />
<a href="/lec17/resources/html/memJoin.html"> Go MemberJoin </a>
</body>
또한, @ModelAttribute 어노테이션이 사용되는 Controller에서 어떠한 메소드가 호출되든 항상 @ModelAttribute 어노테이션은 같이 호출된다.
커맨드 객체 프로퍼티 데이터 타입
데이터가 중첩 커맨드 객체를 이용한 List 구조인 경우, List 구조를 갖는 객체에 대해 또 하나의 커맨드 객체를 생성한다.
memJoin.html
<form action="/lec19/member/memJoin" method="post">
PHONE1 : <input type="text" name="memPhones[0].memPhone1" size="5"> -
<input type="text" name="memPhones[0].memPhone2" size="5"> -
<input type="text" name="memPhones[0].memPhone3" size="5"><br />
PHONE2 : <input type="text" name="memPhones[1].memPhone1" size="5"> -
<input type="text" name="memPhones[1].memPhone2" size="5"> -
<input type="text" name="memPhones[1].memPhone3" size="5"><br />
</form>
MemPhone.java
public class MemPhone {
private String memPhone1;
private String memPhone2;
private String memPhone3;
public String getMemPhone1() {
return memPhone1;
}
public void setMemPhone1(String memPhone1) {
this.memPhone1 = memPhone1;
}
public String getMemPhone2() {
return memPhone2;
}
public void setMemPhone2(String memPhone2) {
this.memPhone2 = memPhone2;
}
public String getMemPhone3() {
return memPhone3;
}
public void setMemPhone3(String memPhone3) {
this.memPhone3 = memPhone3;
}
}
Member.java
List의 제네릭으로 새로 생성한 MemPhone 커맨드 객체를 선언해준다.
public class Member {
private List<MemPhone> memPhones;
public List<MemPhone> getMemPhones() {
return memPhones;
}
public void setMemPhones(List<MemPhone> memPhones) {
this.memPhones = memPhones;
}
}
Model & ModelAndView 차이점
컨트롤러에서 뷰에 데이터를 전달하기 위해 사용되는 객체로 Model과 ModelAndView가 있다. 두 객체의 차이점은 Model은 뷰에 데이터만을 전달하기 위한 객체이고, ModelAndView는 데이터와 뷰의 이름을 함께 전달하는 객체이다.
MemberController.java
/*
@RequestMapping(value = "/memModify", method = RequestMethod.POST)
public String memModify(Model model, Member member) { // 반환형 String
Member[] members = service.memberModify(member);
model.addAttribute("memBef", members[0]); // view 파일에서 ${memBef.memId}로 접근
model.addAttribute("memAft", members[1]);
return "memModifyOk"; // 뷰 이름을 리턴
}
*/
@RequestMapping(value = "/memModify", method = RequestMethod.POST)
public ModelAndView memModify(Member member) { // 반환형 : ModelAndView
Member[] members = service.memberModify(member);
ModelAndView mav = new ModelAndView(); // new 연산자를 이용해 ModelAndView 객체 생성
mav.addObject("memBef", members[0]);
mav.addObject("memAft", members[1]);
mav.setViewName("memModifyOk"); // 뷰 이름 함께 전달
return mav; // ModelAndView 객체를 리턴
}
🙆♂️출처🙇♂️
자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌 - 인프런 | 강의
스프링 프레임워크 기본부터 실전 사용법까지! 충실하고 폭넓은 설명과 예제를 통해 현장에 바로 투입되어 활약하는 개발자로 거듭나세요., - 강의 소개 | 인프런...
www.inflearn.com
'Spring' 카테고리의 다른 글
리다이렉트, 인터셉터 (0) | 2022.06.14 |
---|---|
세션, 쿠키 (0) | 2022.06.13 |
Controller 객체 구현 - 1 (0) | 2022.06.11 |
Service & Dao 객체 구현 (0) | 2022.06.10 |
웹 서버(Tomcat)와 이클립스 연동 (0) | 2022.06.09 |
Comments