AWS 클라우드환경 네이티브 수업 115 일차
진행
1. 롬복(lombok)
요약
1. 롬복(lombok) 다운
2. 롬복(lombok) 사용 예시
3. 모델 객체 (+ @RequestParam 와 @ModelAttribute)
롬복 (lombok)
Java 라이브러리로 getter, setter, toString 등의 반복되는 메서드 작성 코드를
어노테이션 하나만을 쓰면 동작하게 만들어 확~ 줄여주는 라이브러리
Project Lombok
projectlombok.org
위의 페이지에서 Download 클릭 후 다운.
그 후 , 아래 처럼 cmd 창에 롬복을 다운 후에 아래와 같이 친다.
위처럼 뭔 창이 뜨면 무시.
이후 Specify location 클릭 후 아래처럼 STS나 이클립스 등 원하는 IDE 클릭
그 후 인스톨
이 후 mvnrepository 접속
lombok 검색후 project lombok => 많이 쓰는 버전 들어간다.
그 후, 아래와 같은 maven 코드 복사해서
pom.xml에 코드 추가
=> lombok의 기능 활성화 완료.
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
롬복의 사용 예시
먼저 뷰를 만들자.
MEMBER_VO / map 중 선택되는 것에 따라 아이디/비번 결과가 나오게 만들 것이다.
<!-- 회원정보를 나타내는 뷰 (memberData.jsp) -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>memberData</title>
</head>
<body>
<h1>회원 정보</h1>
<h2>MemberVO</h2>
유저의 아이디 : ${MEMBER_VO.userId}<br/>
유저의 비밀번호 : ${MEMBER_VO.userPw}
<hr/>
<h2>Map</h2>
유저의 아이디 : ${map.userid }<br/>
유저의 비밀번호 : ${map.userpw }
</body>
</html>
URI에서 doD / doE 에 따라 MEMBER_VO / map 를 호출하게 컨트롤러를 만든다.
여기서 사용되는 모델 객체에 대한 설명은 아래에 첨부하겠다.
// 유저정보에 대한 컨트롤러
package com.edu.exam03.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.edu.exam03.vo.MemberVO;
//=============================================
// public class ExamController3
// Return Type이 String인 경우 - 데이터를 전달하는 경우
//=============================================
@Controller
@RequestMapping("/exam3")
public class ExamController3 {
//=============================================
//=============================================
@RequestMapping("/doD")
public String doD(Model model) {
System.out.println("doD가 실행되었습니다.");
MemberVO memberVO = new MemberVO();
memberVO.setUserId("userID-001");
memberVO.setUserPw("userPW-001");
model.addAttribute("MEMBER_VO", memberVO);
return "exam3/memberData";
} // End - public String doD(Model model)
@RequestMapping("/doE")
public String doE(Model model) {
System.out.println("doE가 실행되었습니다.");
Map<String, String> map = new HashMap<String, String>();
map.put("userid", "mapId-002");
map.put("userpw", "mapPW-002");
model.addAttribute("map", map);
return "/exam3/memberData";
}
} // End - public class ExamController3
VO 파일을 만들고 해당 파일에 import 및 어노테이션을 달면
자동으로 set / get / ToString 객체가 만들어진다.
어노테이션을 @Data로 달면 아래의 3개의 어노테이션을 단 것과 같은 기능을 한다.
package com.edu.exam03.vo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
//=============================================
// 회원정보
//=============================================
@Setter
@Getter
@ToString
public class MemberVO {
private String userId;
private String userPw;
} // End - public class MemberVO
<!-- servlet-context.xml에 코드추가 -->
<context:component-scan base-package="com.edu.exam03" />
같은 memberData.jsp 뷰(View)에서 URI에 따라 나오는 값은 달라진다.
모델 객체
JSP Servlet => 보통 request나 session 내장객체에 정보를 담아 뷰로 넘겨주는데
Spring => Model을 사용.
Controller로 지정된 메소드는 Model이라는 타입의 객체를 파라미터로 받을 수 있다.
request.setAttribute() 와 비슷한 역할을 한다.
addAttribute("key", "value") 메서드를 이용해 view에 전달할 데이터를 key, value형식으로 전달한다.
아래는 JSP Servlet과 Spring의 차이를 보여준다.
JSP Servlet
request.setAttribute("time", new java.util.Date());
RequestDispatcher dispatcher = request.getRequestDispatcher("url");
dispatcher.forward(request, response);
Spring
public String home(Model model) {
model.addAttribute("time", new java.util.Date());
return "home";
}
사용 예시
package com.mystudy.coco.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class TestController {
@GetMapping("/test")
public void testMethod(Model model) {
String msg = "model test";
model.addAttribute("value", msg);
}
}
<h2> Test Method : ${value} </h2>
value 라는 key로 값을 부르게 되면
model.addAttribute()의 2번째 항이 실행된다.
@RequestParam 와 @ModelAttribute
(1) @RequestParam
클라이언트가 요청시 전달하는 값을 1:1로 맵핑하는 어노테이션
@Controller
public class TestController{
@GetMapping("/")
public String testPage(@RequestParam("name1") String name){
System.out.print("연습 중");
return "test";
}
}
@RequestParam("name1") String name 을 설명하자면
name1은 해당 이름으로 객체가 만들어져서 jsp 단에서 해당 이름으로 사용할 수 있다.
name 이라는 변수 이름은 java 파일 에서 해당 변수 이름으로 사용이 가능하다.
사용자가 /?name=test1 으로 요청한다면 name1이라는 매개변수에 test1이 들어간다.
(2) @ModelAttribute
클라이언트가 요청시 전달하는 값을 객체 뭉텅이로 매핑하는 어노테이션.
메소드 레벨과 메소드 파라미터 레벨 둘 다 사용이 가능하다.
나머지는 @RequestParam 와 같다.
그저 1:1 매핑이냐 객체로 매핑 해주냐의 차이이다.
결론은 이게 더 편하고 코딩 리스크도 적다는 말.
@Date
public class TestModel{
private String name;
private int age;
}
@Controller
public class TestController{
@GetMapping("/")
public String testPage(@ModelAttribute("myModel") TestModel model){
logger.info("####### model.getName() "+ model.getName());
logger.info("####### model.getAge() "+ model.getAge());
return "test";
}
}
'코딩수업 > AWS 클라우드환경 네이티브' 카테고리의 다른 글
11/9 웹 제작 - contestPath / c.set 태그 / root-context / 도서 쇼핑몰 만들기 (View) / resources mapping (0) | 2022.11.21 |
---|---|
(logger 미완)11/8 웹 제작 - RequestMapping / Inject / 로그 관리 (logger) (0) | 2022.11.18 |
11/4 웹 제작 - xml에서 속성 추가, AutoWired, Controller (2) | 2022.11.17 |
11/3 (0) | 2022.11.17 |
11/2 (0) | 2022.11.17 |
댓글