본문 바로가기

SpringBoot

SpringBoot(4) - Web Page 예제2, 추가 정리 사항

728x90
반응형

1) SpringBoot

   1-1) Web Page 예제2

   1-2) 추가 정리 사항

 

 

 

 

 

1) SpringBoot

1-1) Web Page 예제2

 

 

(1) [src/main/resources] 안에 application.properties 파일 생성 후 아래와 같이 작성

 

 

(2) [src/main/java] - [net.datasa.web2] 안에 HomeController.java 파일 생성 후 아래와 같이 작성

package net.datasa.web2;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {
	@GetMapping({"", "/"})
	public String web2Method() {
		return "home";
	}
}

 

 

(3) [src/main/java] - [net.datasa.web2.controller] 안에 LomController.java 파일 생성 후 아래와 같이 작성

package net.datasa.web2.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import lombok.extern.slf4j.Slf4j;
import net.datasa.web2.domain.Person;

// Class명(데이터 타입) 인스턴스명 = new 생성자();
// ex) LomController a = new LomController();
// 즉, @Controller는 위와 같이 인스턴스(객체)를 생성해주는 역할을 함!
@Controller
@RequestMapping("lom")
@Slf4j  // "@Slf4j"을 통해 "log"라는 객체를 사용할 수 있음!
public class LomController {
	// http://localhost:8888/lom/lombok
	@GetMapping("lombok")
	public String lombok() {
		Person p = new Person();
		p.setName("홍길동");
		p.setAge(12);
		p.setPhone("010~");
		System.out.println(p);
		
		Person p2 = new Person("김", 11, "222");
		System.out.println(p2);
		
		System.out.println("왔다감");
		return "redirect:/";
	}
	
	@GetMapping("logger")
	public String logger() {
		log.error("error 메서드로 출력");
		log.warn("warn 메서드로 출력");
		log.info("info 메서드로 출력");
		log.debug("debug 메서드로 출력");
		log.trace("trace 메서드로 출력");
		
		String a = "alsdf";
		int b = 1234;
		
		log.debug("a는 {}, b는 {} 입니다.", a, b);
		
		return "redirect:/";
	}
}

 

 

(4) [src/main/java] - [net.datasa.web2.controller] 안에 ParamController.java 파일 생성 후 아래와 같이 작성

package net.datasa.web2.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import lombok.extern.slf4j.Slf4j;

@Controller
@RequestMapping("param")
@Slf4j
public class ParamController {
	// http://localhost:8888/param/view1 경로의 요청 처리
	@GetMapping("view1")
	public String view1() {
		// templates/paramView/view1.html 파일로 포워딩
		return "paramView/view1";
	}
	
	@GetMapping("input1")
	public String input1(
			@RequestParam(name="id", defaultValue="") String id,
			@RequestParam("pw") String pw
			) {
		log.debug("id: {}, pw: {}", id, pw);
		return "redirect:/";
	}
}

 

 

(5) [src/main/java] - [net.datasa.web2.domain] 안에 Person.java 파일 생성 후 아래와 같이 작성

package net.datasa.web2.domain;

import lombok.AllArgsConstructor;  // 명시적 생성자
//import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;  // 기본 생성자
import lombok.Setter;
import lombok.ToString;

// lombok(@Data)은 아래와 같이 class 내부에 멤버변수를 추가하거나 빼면 그에 맞게 getter, setter, toString, 생성자 등을 자동으로 만들어줌!
// @Data
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Person {
	String name;
	int age;
	String phone;
	
	/*
	public Person() {
		
	}
	
	public Person(String name, int age, String phone) {
		this.name = name;
		this.age = age;
		this.phone = phone;
	}
	
	public String getName() {
		return name;
	}
	*/
}

 

 

(6) [src/main/resources] - [templates] 안에 home.html 파일 생성 후 아래와 같이 작성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>web2</title>
</head>
<body>
	<h1>[ web2 ]</h1>
	<ol>
		<li>Lombok & Logger 사용
			<ul>
				<li>
					<a href="lom/lombok">Lombok 사용하기</a>
				</li>
				<li>
					<a href="lom/logger">Logger 사용하기</a>
				</li>
				<!--
				여기는 메인화면입니다. 위의 l은 소문자 L입니다.
				글꼴 때문에 꼬부라져 보이는 것입니다.
				-->
			</ul>
		</li>
		<li>서버로 데이터 보내기/받기
			<ul>
				<li>
					<a href="param/view1">GET 방식으로 보내기</a>
				</li>
			</ul>
		</li>
	</ol>
</body>
</html>

 

 

(7) [src/main/resources] - [templates.paramView] 안에 view1.html 파일 생성 후 아래와 같이 작성

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>view1.html</title>
</head>
<body>
	<h1>[ GET method로 데이터 전송하기 ]</h1>
	<!-- http://localhost:8888/param/input1로 전송 -->
	<form action="input1" method="get">
		ID <input type="text" name="id"><br>
		PW <input type="password" name="pw"><br>
		<input type="submit" value="전송"><br>
	</form>
</body>
</html>

 

 

(8) 결과 페이지 화면

- 홈페이지 화면

 

- "Lombok 사용하기" 링크 클릭 시 Console 결과

 

- "Logger 사용하기" 링크 클릭 시 Console 결과

 

- "GET 방식으로 보내기" 링크 클릭 시 결과 화면

 

- 위의 ID, PW 입력 form에 각각 아이디, 비밀번호 입력 후 "전송" 버튼 클릭 시 Console 결과

("전송" 버튼을 누르면 다시 홈페이지로 이동함!)

 

 

 

 

1-2) 추가 정리 사항

application.properties파일의 “logging.level.패키지(ex. net.datasa.web2)” 코드에서

로깅 레벨(error, debug 등) 지정 시 지정한 로깅 레벨까지만 console에 출력해주고

지정한 로깅 레벨보다 낮은 레벨의 로깅 레벨에 대한 메시지는 출력하지 않는다!

 

Javatry...catch 문을 통해 심각한 에러는 error,

그정도는 아니라고 판단되는 내용들은 warn에 기록되어 남는다.

그리고 개발 후에 기록을 남기고 싶다고 생각하는 데이터가 info로 기록되어 남는다고 보면된다.

추가로 개발 시에 개발자 본인이 확인하려고 만들어 놓은 중요하지 않은 내용들은 debug에 기록되어 남는다.

그렇기에 개발 시에는 “debug”로 로깅 레벨을 지정해두고, 개발이 완료되면 이 로깅 레벨을 “info”로 바꿔줌으로써

개발 시 확인했던 불필요한 debug 내용들을 드러나지 않도록 해준다!