■ 자바 스프링 시작!!



이제부터 이클립스를 사용하지 않고, String boot 전자정부프레임워크 사용할 것이다.
최신 이클립스를 쓰면 좋지만 예전 기능들을 쓰지 못한다.
예전 환경에서도 사용가능하게끔 학습하도록...

★ 환경변수 -> 자바 홈 1.8로 맞춰야함

(전자정부프레임워크 홈페이지) 현재 개발환경은 4.2까지 나와있다.
처음 사용하기엔 예전기능들이 빠져있기 때문에 좋지 않다.
3.9 버전으로 학습한다.
개발방식이 달라진 것이 아니라 이클립스 버전이 다르다.


★ 개발자용 개발환경 32&64bit(Implementation Tool) Version 3.9.0 (20년도) 다운로드 (JDK는 1.8 버전 사용이 필수)
(다운로드 링크 : https://www.egovframe.go.kr/home/sub.do?menuNo=41)

압축풀고, programfiles의 eclipse에 넣어준다. (교체!)
workspace는 따로 사용 X --> 기존의 KosaCourse를 사용

이제 이 안의 eclipse를 사용할 것.
기존 KosaCourse에 있던 .metadata는 서로 버전이 안맞음 (17환경 -> 1.8환경)
.metada 폴더를 지우고, 새로운 전자정부 eclipse를 연결하면 그에 맞는 .metadata가 다시 생성될 것임.

이클립스 종료하고
★ 롬복 다운로드 → cmd 관리자권한으로. (C드라이브 밑에 바로 설치하려면 관리자 권한이 필요)
롬복이 있는 파일로 cd한다.
java -jar lombok.jar 명령어를 입력해주고 전자정부프레임워크 이클립스를 체크하고 설치한다.

★ 구글에 tomcat 검색 -> 아파치 톰캣의 톰캣 9 64-bit Windows zip 다운
압축풀고 C의 Program Files에 이동
다시 이클립스 실행
servers클릭 → WAS(Tomcat) 등록
→ 9.0버전 서버를 선택하고 아까 받았던 Tomcat폴더를 디렉토리로 등록

★ new -> egovFrame Web Project 생성 (springframework)
targetRuntime → 아파치 톰캣 9.0
Dynamic Web Module version → 4.0
Maven Setting - Group Id : com.mycompany
→ next 누른다음 finish

전자정부프레임워크 : 이클립스 뿐만 아니라 외부 라이브러리를 묶어놓은 것.
springframework 폴더에 X표가 뜬다. 우클릭 Maven -> update project 하기
다시 springframework 폴더에 X표가 뜬다. 우클릭 java EE tools -> Generate Deployment Descriptor Stub

ppt 6페이지 pom.xml 수정
springframework > Maven > Disable Maven Nature
pom.xml 삭제 > eclipse 재시작
springframework > Configure > Convert to Maven Project
그룹 아이디 : com.mycompany -> finish
pom.xml이 다시 생김. 내용도 바뀐다.

ppt 7페이지
pom.xml 내용 추가
<packaging>war</packaging> 밑에 작성

  <dependencies>
   <!-- 서블릿 4.0 라이브러리를 사용 -->
   ( 복사해서 가져온다 )
  </dependencies>

① 구글에서 Maven 검색 → Maven 레파지토리 사이트 들어가서 servlet 검색 후 Java Servlet API를 들어간다. 그 후 4.0.1버전에 들어가 Maven 복사 (서블릿 4.0 라이브러리를 사용)

② JSP를 다시 검색. JavaServer Pages(TM) API에 들어가 2.3.3으로 또 들어가고, Maven 복사.(JSP 2.3.3 라이브러리를 사용)

③ JSTL 검색 JSTL(javax.servlet » jstl) 이곳으로 들어간다. 1.2버전으로 들어가 Maven 복사.(JSTL 1.2 라이브러리를 사용)

→ 초기화된 pom.xml을 라이브러리들을 업데이트 하는 것.. 주석을 달고 붙여넣자. 할 줄 알아야 한다. 

④ log4j 검색. 4번째목록  Relocated → org.apache.logging.log4j » log4j-slf4j2-impl로 들어간다. beta는 제외하고 2.23.1버전 사용 Maven 복사. scope부분 test문장은 지운다. (로깅 라이브러리 사용)



⑤ lombok검색. Project Lombok클릭 1.18.32버전 사용 Maven복사. scope부분 삭제 (Lombok 라이브러리 사용)


⑥ org.springframework » spring-context 클릭 자바 1.8은 5.대 버전까지밖에 사용 못함. 5.3.33버전 Maven 복사
org.springframework » spring-webmvc 클릭. 5.3.33버전 Maven 복사
(SpringFramework 라이브러리 사용)


여기까지 최소한의 라이브러리 설정 끝




src/main/resources --> new --> file --> log4j2.xml파일 생성
Source부분으로 들어가서

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="Out" target="SYSTEM_OUT">
      <PatternLayout charset="UTF-8" pattern="%-5level: %logger{1}.%M() - %msg%n"/>
    </Console>
  </Appenders>
  
  <Loggers>
    <Logger name="com.mycompany.springframework" level="info" additivity="false">
      <AppenderRef ref="Out"/>
    </Logger>
    <Root level="error">
      <AppenderRef ref="Out"/>
    </Root>
  </Loggers>
</Configuration>

 

붙여놓고 저장.

src - main - webapp - WEB-INF - web.xml 파일 열기
</welcome-file-list> 밑에

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/root/*.xml</param-value>
  </context-param>

붙여놓고 저장

src/main/resources 밑에 폴더 spring/root 만들기
root폴더 아래에 Spring Bean Definition file 만들기
파일 이름 ch01_component_scan.xml
next 누른 다음 beans 체크, 상세 옵션에 버전없는 것 spring-beans.xsd 체크

web.xml 파일에 다시 

  <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/dispatcher/*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

코드 추가.

spring 폴더 아래에 dispatcher 폴더생성 후 Spring Bean Definition file 만들기
파일 이름 ch01_component_scan.xml

다시 web.xml 파일에 소스 추가

  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


root 밑 ch01_component_scan파일에 소스 추가

   <context:component-scan base-package="com.mycompany.line8_mini_web" use-default-filters="false">
      <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
      <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
   </context:component-scan>

// Namespaces 설정 --> context, 버전없는것 선택

다시 dispatcher 밑 ch01_component_scan 파일에 소스 추가

   <context:component-scan base-package="com.mycompany.line8_mini_web">
      <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
      <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
   </context:component-scan>
   
   <mvc:annotation-driven/>

Namespaces 설정 --> context, 버전없는것 선택
<mvc:annotation-driven/> --> MVC, 버전없는것 선택

dispatcher에 Spring Bean Definition file 만들기
파일 이름 ch01_static_resource.xml
<mvc:resources mapping="/resources/**" location="/resources/" /> 소스 추가

밑의 str - main - webapp 아래에 새폴더 resources 만들기

다시 dispatcher 밑에 Create a new Spring Bean Definition file 만들기
파일 이름 ch01_veiw_resolver.xml
추가 코드

   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/views/"/>
      <property name="suffix" value=".jsp"/>
   </bean>


str - main - webapp - web-INF 아래에 views폴더 생성

# src/main/java 폴더에 패키지 생성
패키지 이름 : com.mycompany.springframework
패키지 이름 : com.mycompany.springframework.controller
클래스 파일 만들기 : HomeController.java 생성

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Controller
public class HomeController {
	@RequestMapping("/")
	public String index() {
		log.info("실행");
		return "home";
	}
}

위의 소스 넣어주기.


패키지 이름 : com.mycompany.springframework.dao
패키지 이름 : com.mycompany.springframework.service

다시 아래의 src - main - webapp - WEB-INF - views폴더에 home.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h3>머리가 어질어질합니다..</h3>
	<hr/>

</body>
</html>

위의 코드를 home.jsp에 넣어준다.



★ pom.xml 을 변경하면 프로젝트의 Maven → update project를 해주어야 반영된다. (에러났을 때 바로 시도)
★ pom.xml의 artifactId는 도메인의 네임을 바꿔준다.

# 주의

pom.xml → test(scope부분) 빼주어야될 것 빼주기.
C드라이브 밑에 사용자 및에 .m2 → Maven된 것들이 저장되어 있음..
pom에 추가한 라이브러리들이 저곳에 들어있게 된다. 레포지토리가 깨졌을 경우 전체 삭제 후 다시 이클립스에서 pom.xml파일을 저장하면 다시 다운로드 된다.
src/main/java의 패키지 네임과 artifactId 일치시키기.

반복 숙달하자~!!!!!!! ㅠㅠ

'JAVA' 카테고리의 다른 글

22일차 2024 - 3 - 27  (0) 2024.03.27
21일차 2024 - 03 - 26  (0) 2024.03.26
19일차 2024 - 3 - 22  (1) 2024.03.24
18일차 2024 - 3 - 21  (0) 2024.03.21
17일차 2024 - 3 - 20  (0) 2024.03.20

+ Recent posts