푸들푸들

1210 코드 실행시간 설정, lombok 생성자, 유효성 검사 본문

구디아카데미/JAVA

1210 코드 실행시간 설정, lombok 생성자, 유효성 검사

COCO_develop 2024. 12. 10. 12:10

@RestController

@RestController
public class UserRest {
	@GetMapping(path = "/userJson")
	public List<Map<String,Object>> user(){
		List<Map<String,Object>> list = new ArrayList<>();
		Map<String,Object> u1 = new HashMap<String,Object>();
		u1.put("name", "user1");
		u1.put("age", 20);
		list.add(u1);
		
		Map<String,Object> u2= new HashMap<String,Object>();
		u2.put("name", "user1");
		u2.put("age", 20);
		list.add(u2);
		
		Map<String,Object> u3 = new HashMap<String,Object>();
		u3.put("name", "user1");
		u3.put("age", 20);
		list.add(u3);
		
		return list;	
	}
}

@RestController: 반환값을 자동으로 JSON 문자열로 변환되어 반환함

기본값: @GetMapping(path = "/userJson", produces = MediaType.APPLICATION_JSON_VALUE)

@RestController의 맵핑 메서드의 반환 타입: List<Map<String,Object>>

public static final String APPLICATION_JSON_VALUE = "application/json";

	/**
	 * Public constant media type for {@code application/json;charset=UTF-8}.
	 * @deprecated as of 5.2 in favor of {@link #APPLICATION_JSON}
	 * since major browsers like Chrome
	 * <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=438464">
	 * now comply with the specification</a> and interpret correctly UTF-8 special
	 * characters without requiring a {@code charset=UTF-8} parameter.
	 */

MediaType.class

 

http://localhost/userJson

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

--> pom.xml에 의존성 추가하면 XML타입으로 변환도 가능

 

@RestController
public class UserRest {
	@GetMapping(path = "/userXml", produces = MediaType.APPLICATION_XML_VALUE)
	public List<Map<String,Object>> userXml(){
		List<Map<String,Object>> list = new ArrayList<>();
		Map<String,Object> u1 = new HashMap<String,Object>();
		u1.put("name", "user1");
		u1.put("age", 20);
		list.add(u1);
		
		Map<String,Object> u2= new HashMap<String,Object>();
		u2.put("name", "user1");
		u2.put("age", 20);
		list.add(u2);
		
		Map<String,Object> u3 = new HashMap<String,Object>();
		u3.put("name", "user1");
		u3.put("age", 20);
		list.add(u3);
		
		return list;	
	}
}

 

 

코드 실행 시간 특정 

(Ex)Application.java에 @EnableScheduling 추가

   ( ): 프로젝트 이름

@Component
public class MySchedule {
	@Scheduled(cron="0 0 7 1 * *")
	public void scheduleTest() {
		// 특정 날짜에 실행될 코드
		System.out.println("스케줄링 테스트");
	}
}

매월 1일 오전 7시

 

 

생성자(롬복)

@Data
@AllArgsConstructor
@NoArgsConstructor
public class MemberCommand {
	private String name;
	private int age;
}

OutLine

@AllArgsConstructor -> MemberCommand(String,int)

- 모든 필드마다 하나의 파라미터값을 가진 생성자 생성

- 순서 주의

@NoArgsConstructor -> MemberCommand - 파라미터값 없는 기본 생성자 생성

 

 

validation을 이용한 커맨드객체 유효성 검사

https://cafe.naver.com/jjdev/16191

 

[41] springboot validation을 이용한 커맨드객체 유효성 검사

1) validation 의존성 추가 pom.xml 의존성 확인 2) 커맨드 객체의 유효성 체크 ※ 커맨드 객체의 유효성 체크 애노테이션 종류(하나의 필드에 겹처사용 가능) ...

cafe.naver.com

@Controller
public class MemberController {
	// 백엔드 유효성 검사 Spring API
	
	@GetMapping("/addMember")
	public String addMember() {
		return "addMember";
	}
	
	@PostMapping("/addMember")
	public String addMember(@Valid MemberCommand memberCommand, Errors err, Model model) {
		System.out.println(memberCommand.toString());
		System.out.println(err.hasErrors()); // MemberCommand m 매개값을 채울 때 에러 유무
		// 유효성 검사에 걸려서 입력 실패
		if(err.hasErrors()) {
			for(FieldError fe : err.getFieldErrors()) {
				System.out.println(fe.getField()); // name
				System.out.println(fe.getDefaultMessage()); // message
				model.addAttribute(fe.getField()+"Msg", fe.getDefaultMessage());
			}
			return "addMember"; // 유효성 체크에 걸리면 Command 객체 + Msg 입력폼으로 다시 포워딩
		}
		// 입력 성공 시
		// insert sql 호출 서비스
		
		return "redirect:/";
	}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MemberCommand {
	@Size(min=2, message = "이름을 2자 이상 입력하세요")
	private String name;
}

post 되기 전 유효성 검사가 됨

<body>
	<h1>ADD</h1>
	<form method="post" action="/addMember">
		name : 
		<input type="text" name="name" value="${memberCommand.name}">
		<button type="submit">가입</button>
		<br><span>${nameMsg}</span>
	</form>
</body>

localhost/addMember

 

'구디아카데미 > JAVA' 카테고리의 다른 글

1211 Javascript, AJax, RestAPI select+조건  (0) 2024.12.11
1210 Javascript 퍼머링크, 차트  (0) 2024.12.10
1209  (0) 2024.12.09
1209  (0) 2024.12.09
1120 [Mall] 설계  (0) 2024.11.20