JAVA/spring

spring 프로젝트 환경설정

lavender1122 2024. 4. 22. 21:55

0. 환경설정

https://lavender1122.tistory.com/162

 

스프링부트 전체 환경설정(자바 버전, 인코딩)

자바 버전 확인 본인 자바 버전확인 https://lavender1122.tistory.com/124 [이클립스] 설치 경로 확인 방법 1. 상단 메뉴바 > Help > About Eclipse IDE 2. Installation Details 3. Configuration 에서 launcher 에서 설치 경로 확

lavender1122.tistory.com

 

Spring Legacy Project 생성하기

Explorer 빈공간 우클릭 >New > Other...

Project name 적기  > Spring MVC project  클릭 > Next

워크스페이스MVC 프로젝트 안될때 대체방법

더보기

워크스페이스 

.metadata\.plugins\org.springsource.ide.eclipse.commons.content.core 넣기

https-content.xml
0.02MB

Yes 클릭

패키지경로 입력 ⇒ context:component-scan 반영되서 잘 써야 된다!!

Spring Legacy Project 생성완료

 

Tomcat 설정하기

Servers > No servers ~~ 클릭

설치된 Tomcat 버전 클릭 > Next 클릭

project 클릭 > Add > configured 들어갔는지 확인 후 > Finish

Tomcat 설정 완료

프로젝트 설정하기

해당 프로젝트 우클릭 > Properties 클릭

Java Build Path

설치된 자바 버전에 맞게 해야한다!

Java Build Path 클릭 > JRE System Library[JavaSE-1.6] 클릭 > Edit.. 클릭

Execution environment 에서 JavaSE-1.8(JDK1.8) 클릭 > Environments..클릭

JavaSE-1.8 클릭 > JDK1.8[perfect match] 선택 > Apply and Close 클릭

Finish 클릭

1.6 → 1.8 버전으로 변경확인 >Add Library... 클릭

Server Runtime 클릭 > Next 클릭

Apache Tomcat 클릭 > Finish

Apache Tomcat 버전확인 , JRE 버전 확인 > Apply

Project Facets

Project Facets 클릭 > Dynamic Web Module 3.1 변경 > Java 1.8 변경 > Runtimes 클릭 > Apche Tomcat 클릭 > Apply

Deployment  Assembly

Deployment Assembly > Maven Dependencies 확인 > Apply > Apply and Close

web.xml :  tomcat서버의 설정

웹 프로젝트의 배포 설명자/배치 기술서(deployment description)이며, 

웹 프로젝트가 배포되는 데 이용되는 XML 형식의 자바 웹 애플리케이션 환경 설정 부분을 담당함
스프링 웹 프로젝트가 실행되면 가장 먼저 web.xml 파일을 읽어들이고 위부터 차례로 태그를 해석함

1) 네임 스페이스 : 코드에서 이름은 같지만 내용이 전혀 다른 요소와 충돌하지 않도록, 즉 이런 요소를 구별하는 데 사용함
2) 스키마 : 코드의 구조와 요소, 속성의 관계를 정의하여 다양한 자료형을 사용할 수 있도록 정의된 문서 구조, 

                  즉 틀을 의미함
                  xsi:schemaLocation 속성은 참조하고자 하는 인스턴스 문서의 URI를 지정함
                  두 개의 속성 값은 공백으로 구분. 첫 번째는 사용할 네임 스페이스(보통 기본 네임 스페이스와 동일)고,
                  두 번째는 참조할 스키마 파일 이름.

한글 처리 필터

<!-- 한글 처리 -->
   <filter>
      <filter-name>encodingFilter</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>
      <init-param>
         <param-name>forceEncoding</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>
   <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <!-- 모든 요청에서 -->
      <url-pattern>/*</url-pattern>
   </filter-mapping>

 

log4j.xml

src/main/resources.log4j.xml 우클릭 > Open With > XML Editor 클릭

 

appender : 전달된 로그를 어디에 출력할지 결정(콘솔, 파일 기록, DB 저장)

priority : 로그 레벨

- fatal : 심각한 오류 발생

- error : 요청 처리 중 문제 발생

- warn : 프로그램 실행에는 문제가 없으나 오류 발생 경고

- info : 상태변경 등 정보성 메시지

- debug : 개발 시 디버깅 용도*

- trace : 상세한 이벤트 용도

pom.xml

java-version : 1.6 → 1.8 변경

org.springframework-version 3.1.1 → 5.2.5 로 변경

 

Database 라이브러리 의존 라이브러리

Test 아래 넣기

<!-- Database 라이브러리 시작 -->
      <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
      <!-- XML로 쿼리를 작성하게 해주는 라이브러리 -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.10</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
      <!-- 스프링과 mybatis를 연동하게 해주는 라이브러리 -->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>2.0.4</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
      <!-- 스프링에서 JDBC(Java DataBase Connectivitiy) -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${org.springframework-version}</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
      <!-- dbcp : database connection pool => 커넥션객체를 미리 만들어놓고 쓰고/반납 
               최근에는 hikaricp를 사용하는 경우도 있음
      -->
      <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-dbcp2</artifactId>
          <version>2.7.0</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
      <!-- 로깅을 위한 라이브러리. 쿼리를 console이나 파일 로그로 볼 수 있음 -->
      <dependency>
          <groupId>org.bgee.log4jdbc-log4j2</groupId>
          <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
          <version>1.16</version>
      </dependency>
      
      <!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6 -->
      <!-- ojdbc6 : oracle java database connectivity 드라이버 -->
      <dependency>
          <groupId>com.oracle.database.jdbc</groupId>
          <artifactId>ojdbc6</artifactId>
          <version>11.2.0.4</version>
      </dependency>
      <!-- Database 라이브러리 시작 -->

 


lombok 의존 라이브러리

      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.22</version>
          <scope>provided</scope>
      </dependency>

lombok download

https://projectlombok.org/download

 

Download

 

projectlombok.org

이클립스 설치 경로  lombok.jar 이동

cmd 열기

java -jar lombok.jar 입력

Specify location... 클릭

이클립스 설치 경로 > eclipse.exe 클릭 > Select 클릭

Install/Update 클릭

Quit Installer  클릭


json 데이터 바인딩을 위한 의존 라이브러리

	<!-- json 데이터 바인딩을 위한 의존 라이브러리 -->
      <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.13.3</version>
      </dependency>

Maven build 설정 ⇒pom.xml 변경시 실행 시켜야함!

해당 프로젝트 우클릭 > Run As > Maven build 클릭

Goals : compile 작성 > Apply 클릭 > Run 클릭


Run Configurations 다른방법으로 여는 방법

해당 프로젝트 우클릭 > Run As > Run Configurations... 클릭

 


Run 클릭 > Console 창에 BUILD SUCCESS 출력시 사용가능


root-context.xml ⇒ 스프링 설정 파일

서블릿과 필터가 공유할 수 있는 루트 스프링 컨테이너 설정으로, 공통 빈(Service, Repository(DAO), DB, Log 등)을 설정함. 공통빈을 설정하는 곳으로 주로 View 지원을 제외한 bean을 설정함

스프링설정 이란

view와 관련되지 않은 객체를 정의
Service(기능), DAO(Repository : 저장소), DB등 비즈니스 로직과 관련된 설정

uploadFolder

	<bean id="uploadFolder" class="java.lang.String">
		<constructor-arg
			value="C:\\eGovFrameDev-3.10.0-64bit\\workspace\\springProj\\src\\main\\webapp\\resources"></constructor-arg>
	</bean>

uploadFolderDirect 

  <bean id="uploadFolderDirect" class="java.lang.String">
      <constructor-arg value="C:\\eGovFrameDev-3.10.0-64bit\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\springProj\\resources\\upload"></constructor-arg>
   </bean>

dataSource ⇒ 데이터베이스와 관련된 정보를 설정

   <bean id="dataSource"  //dataSource 객체 만듬
      class="org.apache.commons.dbcp2.BasicDataSource" //BasicDataSource 데이터 소스 옴
      destroy-method="close">
      <property name="driverClassName"  //객체의 property name
      value="oracle.jdbc.driver.OracleDriver" /> //객체의 property value
      <property name="url" 
      value="jdbc:oracle:thin:@localhost:1521:xe" />
      <property name="username" value="오라클사용자" /> 
      <property name="password" value="오라클비밀번호" /> 
   </bean>
  • bean을 Java로 변경 할 때
   BasicDataSource dataSource = new BasicDataSource();
   dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
   dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe");

sqlSessionFactory ⇒ 데이터베이스와 연결을 맺고 끊어질 때까지의 
   라이프 사이클을 관리해주는 sqlSession 객체를 생성

  • classpath == src/main/resources/
 <bean id="sqlSessionFactory"
   class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource"></property>
      <property name="mapperLocations"
      value="classpath:/sqlmap/**/*_SQL.xml" /> //SQL.xml 연동시킴
      <property name="configLocation"
       value="/WEB-INF/mybatisAlias/mybatisAlias.xml" /> //mybatisAlias 연동시킴
   </bean>

*_SQL.xml 생성

src/main/resources 우클릭 >  folder 생성 > sqlmap 이름 작성

new > other > MyBatis XML Mapper 클릭 > Next 클릭 > 아무거나써도된다_SQL.xml >Finish

! 꼭 _SQL.xml 똑같이 작성해야된다 !

예시

SQL.xml 위치 &예시

mybatisAlias.xml

WEB-INF 에서 mybatisAlias folder 생성

mybatisAlias folder 에서 MyBatis XML Mapper 클릭 > Next 클릭> mybatisAlias.xml 작성 > Finish

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <!-- 
   [마이바티스] 스프링에서 "_"를 사용한 컬럼명을 사용 시(BOOK 테이블의 BOOK_ID)
   카멜케이스로 읽어줌(bookId)
   ex) 테이블 컬러명이 member_id인 경우 jsp화면단에서 이 값을 사용 시 memberId로 사용
   -->
   <settings>
      <setting name="mapUnderscoreToCamelCase" value="true"/>
   </settings>
   <!-- 자주 사용하는 타입의 별칭을 세팅 -->
   <typeAliases>
   	<typeAlias type="kr.or.ddit.vo.BookVO" alias="bookVO"/> //예시
   </typeAliases>
</configuration>

sqlSessionTemplate ⇒ 객체를 통해 query를 실행함

  • 데이터베이스에 개별적으로 쿼리를 실행시키는 객체
   <bean id="sqlSessionTemplate"
   class="org.mybatis.spring.SqlSessionTemplate">
      <constructor-arg index="0" ref="sqlSessionFactory" />
   </bean>

원본

<?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 https://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="uploadFolder" class="java.lang.String">
		<constructor-arg
			value="C:\\eGovFrameDev-3.10.0-64bit\\workspace\\springProj\\src\\main\\webapp\\resources"></constructor-arg>
	</bean>

	<bean id="uploadFolderDirect" class="java.lang.String">
		<constructor-arg
			value="C:\\eGovFrameDev-3.10.0-64bit\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\springProj\\resources\\upload"></constructor-arg>
	</bean>

	<bean id="dataSource"
		class="org.apache.commons.dbcp2.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName"
			value="oracle.jdbc.driver.OracleDriver" />
		<property name="url"
			value="jdbc:oracle:thin:@localhost:1521:xe" />
		<property name="username" value="PC15_2" />
		<property name="password" value="java" />
	</bean>
    
	<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="mapperLocations"
			value="classpath:/sqlmap/**/*_SQL.xml" />
		<property name="configLocation"
			value="/WEB-INF/mybatisAlias/mybatisAlias.xml" />
	</bean>

	<bean id="sqlSessionTemplate"
		class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
	</bean>

</beans>

서버 실행

Tomcat 클릭 > start 클릭

Welcom home 출력시 성공

실행 성공

- 프로젝트 이름 안써도 가동되는 이유 :   서버 Modules 에서 Path / 만 설정(해당 path 클릭 > Edit 클릭하면 변경가능)

jQury 설정

src.main.webapp.resources 우클릭 > folder 'js'생성 >jquery.min.js 넣기

jquery.min.js
0.09MB

jsp에서 아래 코드 넣기

<script type="text/javascript" src="/resources/js/jquery.min.js"></script>