* 초보 웹 개발자를 위한 스프링5 프로그래밍 입문*
Chapter 9 내용
- 간단한 스프링 MVC
이번 Chapter 9 내용은 MVC 환경 구성하는 내용이였다.
1. 프로젝트 생성
프로젝트 생성
- 프로젝트 생성 시, Gradle에서 java에 체크한 후 프로젝트를 만들어준다.
스프링 프레임워크 추가
1. [프로젝트 우클릭]
- [Add Framework Support] 에서 Spring을 추가한다.
2. build.gradle에서 수동으로 추가할 수도 있다.
1
2
3
4
5
|
compile group: 'org.springframework', name: 'spring-context', version: '5.2.3.RELEASE'
compile group: 'org.springframework', name: 'spring-test', version: '5.2.3.RELEASE'
compile group: 'org.springframework', name: 'spring-tx', version: '5.2.3.RELEASE'
|
cs |
Tomcat 실행하기
1. builder.gradle, plugins에 id 'war'을 추가한다.
- war로 배포파일이 생성된다.
2. Edit Configurations에서 Tomcat을 추가한다.
- 상단부의 Edit Configurations를 클릭해서 Tomcat을 추가할 수 있다.
- [+버튼] > Tomcat Server > Locale을 선택하고 저장
3. HTTP 포트를 변경한다.
- 생성된, Tomcat Server에서 Server -> HTTP port로 이동
- 9090으로 변경해준다.
- DB와의 충돌 예방, 9090 포트 말고 안쓰는 포트 확인해서 변경해야한다.
4. Tomcat Deployment Artifact 설정
- [+ 버튼] > Artifact
- war 파일 지정 후 저장한다.
✔✔ Artifact?
Gradle, Maven 등에서 빌드 결과로 나오는 개발 산출물을 Artifact라고 합니다. Java외에 기타 다른 다양한 '산출물'을 Artifact라고 부르며, Delivery 및 Deploy를 위해 최종적으로 관리되는 산출물. Artifact를 모아서 저장하는 공간을 Library 또는 Artifactory 라고 한다.
5. Tomcat실행
- 실행 시 정상적으로 connection은 되나, 경로가 url경로에 war파일 경로가 붙는다.
6. Application context 조정해준다.
- 어플리케이션 실행 시, context 위치를 알 수 있도록 조정준다.
- [Run/Debug Configurations] > [Deployment] > Application context
- 루트 값[/]으로 지정한다.
- 다시, Tomcat을 재구동 시키면, localhost:9090으로 구동된다.
2. 스프링 MVC 추가, 스프링 MVC를 위한 설정 XML 파일 생성
- (root-context.xml, servlet-context.xml, web.xml)
Spring.webmvc를 추가
1
2
|
compile group: 'org.springframework', name: 'spring-webmvc', version: '5.2.3.RELEASE'
|
cs |
webapp 폴더에 필요한 폴더 구조를 생성
- webapp은 HTML,CSS, JS,JSP 등 웹 어플리케이션을 구현하는데 필요한 코드가 위치한다.
- WEB-INFO에는 web.xml 파일이 위치한다.
✔ 폴더구조
- src/main/java
- src/main/webapp
- src/main/webapp/WEB-INF
- src/main/webapp/WEB-INF/spring
- src/main/webapp/WEB-INF/view
root-context.xml, servlet-context.xml,web.xml 세팅 및 등록
1. root-context.xml 생성
- root-context는 /WEB-INF/spring폴더 아래에 위치시킨다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
2. servlet-context.xml
servlet-context.xml은 /WEB-INF/spring/appServlet 폴더에 위치
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<context:component-scan base-package="config"/>
</beans>
3. context 등록
- context를 추가하면 configure application context와 같은 메시지가 뜨게된다.
- 셍성한 root-context, sevelet-context 등록한다.
[참고]
✔ servlet-contex.xml
요청과 관련된 객체를 정의
url과 관련된 controller, @(어노테이션), ViewResolver, Interceptor, MultipartResolver 등의 설정함
DispatcherServlet과 관련된 설정을 해야함을 알 수 있습니다.
✔ root-context.xml
view와 관련되지 않은 객체를 정의
따라서 Service, DAO, DB등 비즈니스 로직과 관련된 설정을 해줍니다.
✔ web.xml
설정을 위한 설정파일. 여러 xml파일을 인식하도록 각 파일을 가리킴.
4. web.xml 생성
- [File] > [Project Structure] > Facets에서 web.xml을 추가한다
- 만들어지는 경로는 \webapp\WEB-INF\ 아래여야한다.
- web.xml에 root-context와, servlet-context를 등록해준다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
5. Controller와 View파일을 만든다.
- MVC 기반으로 잘 돌아가는지 확인한다.
- contoller는 XML에서 config폴더를 스캔했기 때문에, config 파일에다가 생성했다.
package config;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model,
@RequestParam(value = "name", required = false) String name) {
model.addAttribute("greeting", "안녕하세요, " + name);
System.out.println("hello");
return "hello";
}
}
|
cs |
✔ Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다.
> 파일 구조를 잘못했거나, 해당 설정을 해줘야한다.
> files->settings> build->gradle에서 Bulid,Run Intellj IDEA로 변경
'공부 > Spring' 카테고리의 다른 글
[Spring] Chapter 12 - MVC 2 : 메시지, 커맨드 객체 검증 (1) | 2021.07.11 |
---|---|
[Spring]Chapter 11 - 요청 매핑, 커맨드 객체, 리다이렉트, 폼 태그, 모델 (0) | 2021.07.11 |
[Spring] Chapter 08 - DB 연동(MySQL + Gradle + JDBC) (0) | 2021.07.03 |
[Spring] Chapter 07 - Spring AOP (0) | 2021.06.13 |
[Spring] Chapter 06 - 빈라이클사이클과 범위 (0) | 2021.06.13 |