2021. 11. 30. 17:41ㆍ[프론트엔드]_/[Javascript]_ES6
이전에 두었던 Tomcat 으로만 구현된 웹서버 개발환경에는 큰 문제가 있었다.
이렇게 두고 톰켓을 이용한 서버는. 단순한 구조일 뿐 더러.
지금 직장에서 사용하는 환경과는 동 떨어져 있기 때문이다.
그래서 분석해본 결과. spring을 뼈대로 나누고 MVC처럼 동작하는것 처럼 만들었다. 그래서 spring 연동을 해볼 예정이다.
1. 프로젝트 만들기
new- > project 에 들어간 다음.
이름과 location 지정 후 순서대로
java : 자바기반 언어로 만들것이기 때문에 선택
Maven : 프로젝트 타입
group : 프로젝트 저장소와 관련된 Artifact 그룹
artifact
사용하는 maven project에서 빌드 결과물로 나오는 개체를 artifact라고 한다.
프로젝트 -> 빌드 -> jar 파일(artifact)
java 외에도 기타 다른 산출물을 artifact라고 한다.
sdk version : 설치한 버전
packaging : jar -> 스프링에 있는 tomcat 서버, War -> 내부 tomcat외의 서버 사용시
그 다음 Next 클릭
web을 사용할 것이기 때문에 선택후 Finish 클릭
그럼 다음과 같은 directory가 생성되고 프로젝트가 만들어진다.
여기에서 위의 file -> Project Structure 클릭
그뒤 아래의 화면에서 facets 란 선택
그뒤 + 버튼 클릭한다.
이런 창이 나오면 ok 클릭
그뒤 모듈로 돌아가서 web이 추가된 것을 확인 할 수 있다. web을 클릭한다.
그 뒤 오른쪽에 Deployment Descriptors 에 편집 아이콘 클릭후
위의 경로를 해당 디렉토리이름\src\main\webapp\WEB-INF\web.xml 으로 변경한다.
아래 Resource Directories도 해당 디렉토리 이름\src\main\webapp 으로 변경한다.
그리고 apply 클릭한다.
그럼 아래와 같은 디렉토리가 생긴다.
지금 생긴 web.xml을 참조하여 스프링은 웹을 실행한다고 볼 수 있다.
서버쪽 환경 설정을 지정하는 파일들과
사용자 화면과 관련된 부분에 대한 설정을 하는 스프링 설정 파일들에 대한 정보를 담고 있다.
또한 기본적인 URL 형식에 대한 설정도 이 파일에서 할 수 있다.
다음과 같이 편집한다.
<?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>classpath:spring/*Context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
<param-name>contextConfigLocation</param-name>
에서 스프링 설정 파일 경로를 명시해 줍니다.
<param-value>classpath:spring/*Context.xml</param-value>
위의 코드에서는 value 가 가리키는 classpath는 기본적으로 src->main->resources 를 가리키게 됩니다. 해당 디렉토리의 spring이라는 폴더 안의 Context.xml로 끝나는 모든 파일을 참조하겠다는 뜻입니다.
지금 spring이란 폴더가 없으니 만들어 줍니다.
이렇게 만들어 준 다음에 해당 폴더에 new>spring Config 파일을 생성합니다.
이름은 Context로 끝나는 xml 파일 아무거나 생성합니다. 코드는 넣지 않아도 됩니다.
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
web.xml에서 해당 servlet 쪽 코드입니다.
위와 마찬가지로 WEB_INF 안에 spring 파일을 만듭니다. 단 여기에서는 classpath가 아닌 dispatcher servlet부분이라 webapp 아래에 WEB_INF 안에 만듭니다. 그리고 위에 했던 spring Config 파일 형식으로 servlet-context 파일을 만듭니다. 이름은 코드부분을 변경한다면 변경해도 좋습니다.
그리고 나서 새로만든 servlet-context 파일을 다음과 같이 변경합니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="order" value="1"/>
</bean> <context:component-scan base-package="com.example.springintellij"/>
</beans>
마지막 base-pakage 쪽 은 생성한 루트대로 만듭니다.
스프링은 MVC 형식을 지원합니다. 테스트를 위한 controller와 파일을 만듭니다.
그림과 같은 위치에 java클래스 파일을 만듭니다.
코드는 다음과 같습니다.
package com.example.springintellij;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class Testcontroller {
@GetMapping("/") public String test(Model model){
return "test/index";
}
}
위의 test 함수는 단지 string의 주소만 반환합니다.
이 반환된 string 값의 주소가 화면이 떴을 때 보여줄 jsp의 위치가 됩니다.
위의 servlet.context.xml 의 파일을 다시 보면
prefix와 suffix가 보입니다.
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
prefix는 url에 localhost:8000이후에 쳐야하는 주속
suffix는 그뒤 파일의 확장자 명을 말합니다.
이렇게 지정을 하게 되면 WEB-INF\views\ 를 쳐야하는 주소를 단순히 8000포트 번호만 호출해도 의도한 페이지가 로딩됩니다.
prefix 에서 지정한 views를 해당 위치에 만들고
controller가 보내주는 test/index.jsp 파일을 만듭니다.
소스는 다음과 같습니다.
<%@ page contentType="text/html; charset=UTF-8" language="java"%>
<div class = "content-wrap">
<div class ="page-contents page-contents-mobile-manual">
<div class="page-head">
<div class="page-head_left">
<h2 class="page-head__title">test</h2>
</div>
</div>
</div>
</div>
<script type="javascript">
</script>
이제 서버에 띄웁니다.
초반에 war로 외부 tomcat을 이용하려고 하였기 때문에 Tomcat에 연결합니다.
tomcat 설치와 기본 설정은 다음 글 참조하시면 되겠습니다.
https://yn971106.tistory.com/11
다른점은 다음과 같습니다.
Deployment에서 + 누른 뒤 Artifact 클릭
war exploded 선택
Application context / 로 변경
기본 java 파일 삭제
화면이 정상적으로 출력됩니다.
이제 환경설정이 끝났으니 API 연동부터 json 까지 해보려고 합니다.
감사합니다.
참고 블로그 : https://freehoon.tistory.com/147
'[프론트엔드]_ > [Javascript]_ES6' 카테고리의 다른 글
[IntelliJ]_Spring 로딩 페이지 설정 (0) | 2021.12.01 |
---|---|
[IntelliJ]_빠른 테스트 (0) | 2021.12.01 |
[_IntelliJ ]_ 코드 작성 시간을 줄여주는 단축키 (0) | 2021.11.30 |
[초보개발자]_JSP 메모장 3번 (0) | 2021.11.29 |
[IntelliJ ]_설치와 Tomcat 서버 연동 (0) | 2021.11.27 |