Last login: Tue Oct 17 23:34:02 on ttys000
gangminhui@gangminhuiui-MacBookAir ~ cd ~
gangminhui@gangminhuiui-MacBookAir ~ cd study
gangminhui@gangminhuiui-MacBookAir ~/study ll
total 0
drwxr-xr-x@ 14 gangminhui staff 448B 10 17 23:36 hello-spring
gangminhui@gangminhuiui-MacBookAir ~/study cd hello-spring
gangminhui@gangminhuiui-MacBookAir ~/study/hello-spring ll
total 56
-rw-r--r--@ 1 gangminhui staff 1.4K 10 17 23:11 HELP.md
drwxr-xr-x@ 6 gangminhui staff 192B 10 17 23:36 build
-rw-r--r--@ 1 gangminhui staff 525B 10 17 23:36 build.gradle
drwxr-xr-x@ 3 gangminhui staff 96B 10 17 23:11 gradle
-rwxr-xr-x@ 1 gangminhui staff 8.4K 10 17 23:11 gradlew
-rw-r--r--@ 1 gangminhui staff 2.8K 10 17 23:11 gradlew.bat
drwxr-xr-x@ 3 gangminhui staff 96B 10 17 23:35 out
-rw-r--r--@ 1 gangminhui staff 34B 10 17 23:11 settings.gradle
drwxr-xr-x@ 4 gangminhui staff 128B 10 17 23:11 src
gangminhui@gangminhuiui-MacBookAir ~/study/hello-spring ./gradlew build
Welcome to Gradle 8.3!
Here are the highlights of this release:
- Faster Java compilation
- Reduced memory usage
- Support for running on Java 20
For more details see https://docs.gradle.org/8.3/release-notes.html
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.3/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD SUCCESSFUL in 4s
7 actionable tasks: 7 executed
gangminhui@gangminhuiui-MacBookAir ~/study/hello-spring cd build
gangminhui@gangminhuiui-MacBookAir ~/study/hello-spring/build ll
total 8
-rw-r--r--@ 1 gangminhui staff 40B 10 18 00:46 bootJarMainClassName
drwxr-xr-x@ 3 gangminhui staff 96B 10 17 23:35 classes
drwxr-xr-x@ 3 gangminhui staff 96B 10 17 23:36 generated
drwxr-xr-x@ 4 gangminhui staff 128B 10 18 00:46 libs
drwxr-xr-x@ 3 gangminhui staff 96B 10 18 00:46 reports
drwxr-xr-x@ 3 gangminhui staff 96B 10 17 23:36 resources
drwxr-xr-x@ 3 gangminhui staff 96B 10 18 00:46 test-results
drwxr-xr-x@ 7 gangminhui staff 224B 10 18 00:46 tmp
gangminhui@gangminhuiui-MacBookAir ~/study/hello-spring/build cd libs
gangminhui@gangminhuiui-MacBookAir ~/study/hello-spring/build/libs ls -arlth
total 37640
-rw-r--r--@ 1 gangminhui staff 18M 10 18 00:46 hello-spring-0.0.1-SNAPSHOT.jar
drwxr-xr-x@ 4 gangminhui staff 128B 10 18 00:46 .
-rw-r--r--@ 1 gangminhui staff 2.6K 10 18 00:46 hello-spring-0.0.1-SNAPSHOT-plain.jar
drwxr-xr-x@ 10 gangminhui staff 320B 10 18 00:46 ..
gangminhui@gangminhuiui-MacBookAir ~/study/hello-spring/build/libs java -jar hello-spring-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.16)
2023-10-18 00:49:33.597 INFO 52665 --- [ main] h.hellospring.HelloSpringApplication : Starting HelloSpringApplication using Java 11.0.20 on gangminhuiui-MacBookAir.local with PID 52665 (/Users/gangminhui/study/hello-spring/build/libs/hello-spring-0.0.1-SNAPSHOT.jar started by gangminhui in /Users/gangminhui/study/hello-spring/build/libs)
2023-10-18 00:49:33.599 INFO 52665 --- [ main] h.hellospring.HelloSpringApplication : No active profile set, falling back to 1 default profile: "default"
2023-10-18 00:49:34.058 INFO 52665 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2023-10-18 00:49:34.065 INFO 52665 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-10-18 00:49:34.065 INFO 52665 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.80]
2023-10-18 00:49:34.107 INFO 52665 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-10-18 00:49:34.107 INFO 52665 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 483 ms
2023-10-18 00:49:34.221 INFO 52665 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2023-10-18 00:49:34.316 INFO 52665 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2023-10-18 00:49:34.323 INFO 52665 --- [ main] h.hellospring.HelloSpringApplication : Started HelloSpringApplication in 0.944 seconds (JVM running for 1.178)
2023-10-18 00:49:45.936 INFO 52665 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-10-18 00:49:45.936 INFO 52665 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2023-10-18 00:49:45.937 INFO 52665 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
서버에서 Spring 실행시키는 방법
## 프로젝트 파일로 들어가기
$ cd hello-spring
$ ll
## gradlew 파일 빌드
$ ./gradlew build
$ cd build
$ ll
$ cd libs
$ ls -arlth
## jar 파일 빌드
$ java -jar hello-spring-0.0.1-SNAPSHOT.jar
clean을 할 경우 build폴더가 사라짐
$ ./gradlew clean
total 56
-rw-r--r--@ 1 gangminhui staff 1.4K 10 17 23:11 HELP.md
-rw-r--r--@ 1 gangminhui staff 525B 10 17 23:36 build.gradle
drwxr-xr-x@ 3 gangminhui staff 96B 10 17 23:11 gradle
-rwxr-xr-x@ 1 gangminhui staff 8.4K 10 17 23:11 gradlew
-rw-r--r--@ 1 gangminhui staff 2.8K 10 17 23:11 gradlew.bat
drwxr-xr-x@ 3 gangminhui staff 96B 10 17 23:35 out
-rw-r--r--@ 1 gangminhui staff 34B 10 17 23:11 settings.gradle
drwxr-xr-x@ 4 gangminhui staff 128B 10 17 23:11 src
스프링 웹 개발 기초
- 정적 컨텐츠 : 서버에서 파일을 그대로 웹브라우저에 내려주는 것
- MVC와 템플릿 엔진 : 과거 JSP, PHP - html 을 서버에서 변형을 주어 동적으로 바꿔서 내려주는 것
- API : JSON이라는 데이터 구조 포맷으로 클라이언트에게 데이터를 전달하는 방식
1. 정적 컨텐츠 : http://localhost:8080/hello-static.html
controller에서 해당 이름을 먼저 찾는다. 컨트롤러가 우선 순위를 가짐!
그리고 없으면 resources:static/hello-static.html 찾음!
2. MVC와 템플릿엔진
@GetMapping("hello-mvc")
public String helloMvc (@RequestParam("name") String name, Model model){
model.addAttribute("name", name);
return "hello-template";
http://localhost:8080/hello-mvc?name=spring!
get방식으로 파라미터를 받아야 오류없이 페이지를 띄울 수 있음.
값을 넘겨주기 위해서는
GetMapping 주소 다음에 ?name 으로 파라미터를 적어줘야 한다.
model에 값을 넣어 뷰에게 전달
이렇게 넘겨진 String name 은 View파일에서 model에 들어있는 ${name}이라는 키 값으로 spring! 이라는 값을 꺼내 hello! empty!! 라는 글에 출력이 된다.
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name} ">hello! empty!!</p>
</body>
</html>
템플릿 엔진에서는 변환 후 넘겨준다!
변환된 것을 어떻게 확인하는가?
소스코드 보기를 하면 바뀌어있는 것을 확인할 수 있다.
3. API
@ResponseBody
Body부분에 데이터를 직접 넣어주겠다.
템플릿 엔진과 차이점!
뷰가 없고 데이터가 그대로 넘어감.
커맨드 + shift + enter -> 자동완성
'👩💻 BackEnd > 🍃 스프링부트 [SpringBoot]' 카테고리의 다른 글
[SpringBoot] 21강 전처리와 후처리 (1) | 2024.01.04 |
---|---|
[SpringBoot] 19강 CSFR 토큰 해제 (0) | 2024.01.02 |
16강 Spring Security Config 설정 - 로그인 페이지로 이동하도록 설정 (0) | 2023.12.29 |
15강 스프링 부트 Controller - Redirection (0) | 2023.12.28 |
[SpringBoot] 서비스의 인증과 권한 부여 (0) | 2023.09.14 |