본문 바로가기
국비교육기관/스터디

Spring 시작1 - 셋업

by 밀키스 2021. 6. 22.

21.06.22

 

 

 Spring 

   => 전에 Spring 관련하여 설치 및 셋업하는 법을 잠깐 보긴했지만 찾아보니 그것들과 다른게 더 많은듯 하다. 이번엔 좀 다르게 진행하면서, Page 만들기를 해보았다.

 

 


 

  • 전과는 동일하게 설치를 진행한다. 단, 자바 버전과 Spring 버전을 좀 바꿨다.
  • Spring이나 views 폴더는 지우지 않았다.
  • 그외 내가 했던 다른 부분들이 좀 많이 다르다.
  • 이번 시작하는건, WAS는 TOMCAT, DB는 MariaDB, ORM이란건 myBatis란걸 사용한다.

 

 


 

  • Properties의 Project Facets에서 자바 버전을 1.8로 변경.

 


 

  • Porm.xml 파일에서 자바와 Spring 버전을 변경, 그리고 <dependencies> 태그 안에 아래의 코드를 넣어준다. 해당 코드들은 myBatis와 MariaDB를 사용하기 위한 라이브러리를 등록하기 위함.
    		<!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
    		<dependency>
    		    <groupId>org.mariadb.jdbc</groupId>
    		    <artifactId>mariadb-java-client</artifactId>
    		    <version>1.5.9</version>
    		</dependency>
    		
    		<!-- 스프링 데이터베이스 기능을 사용하기 위한 라이브러리 설정 -->
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-jdbc</artifactId>
    			<version>${org.springframework-version}</version>
    		</dependency>
    
    		<!-- MyBatis 라이브러리 설정 -->
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>3.2.7</version>
    		</dependency>
    
    		<!-- 스프링 프로젝트에서 MyBatis를 사용하기 위한 라이브러리 설정 -->
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis-spring</artifactId>
    			<version>1.2.2</version>
    		</dependency>

 

 


 

다음은 TOMCAT환경설정 파일인 web.xml(src-main-webapp-WEBINF)에 코드를 추가하는데, 해당 부분은 post방식으로 데이터가 컨트롤러에 전송될 때 인코딩 처리를 해준다.

	<!-- POST 방식 전송에서의 파라미터 인코딩 설정 -->
	<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>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 


 

다음은 servlet-context.xml(WEB-INF - spring-appServlet) 파일을 수정한다. 해당부분에선, prefix라는 부분을 수정해주는데 여기서 prefix는 최상위 폴더를 어디로 지정할 것인지를 의미하며, suffix는 확장자를 의미한다.

servlet-context.xml요청과 관련된 객체를 정의한다.

url과 관련된 controller, @(annotation), ViewResolver, Interceptor, MultiPartResolver 등의 설정을 해준다.


다음은 root-context.xml(WEB-INF - spring)에 아래의 코드를 복붙해준다.

아래의 코드에서 user name, password는 나중에 쓸 MariaDB의 계정정보이며, 

url의 홈페이지는 테이블 스페이스란걸 의미한다고 한다.

그 외의 내용들은 myBatis 설정 파일을 mapping시켜주는 역할을 한다고 함.

(   -> sql문을 xml에 작성하면 해당 내용들을 mapping시킨다는데 잘 모르겠다...)

<?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:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		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-4.1.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
	<!-- Root Context: defines shared resources visible to all other web components -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
		<property name="driverClass" value="org.mariadb.jdbc.Driver" />
		<property name="url" value="jdbc:mariadb://localhost:3307/homepage" />
		<property name="username" value="" />
		<property name="password" value="" />
	</bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:util/SqlMapConfig.xml" />
		<property name="mapperLocations" value="classpath*:sql/*.xml" />
	</bean>
    <bean class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
	</bean>
	<!-- mybatis ORM DB 연동 프레임웍 연결 및 종료(close) -->
    <bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	<!-- 트랜잭션을 처리할 객체를 설정 -->
	<tx:annotation-driven transaction-manager="transactionManager" />
</beans>

root-context.xmlview와 관련되지 않은 객체 (그러면 model, controller인가??...)를 정의한다.Service, Repository(DAO), DB 등 비즈니스로직과 관련된 설정을 해준다.

 

 


 

  • 다음은 위 사진의 경로에 sql과 util이라는 package를 만들어준다. sql 패키지는 후에 쿼리문이 작성될 공간이라고 함
  • util 아래에는 SqlMapConfig.xml 파일을 생성하는데, 해당 파일은 dto 같은 파일들의 이름이 길기 때문에 별칭을 주어 사용하기 위함이라고 한다. 해당 파일은 아래의 코드를 주면 됨.
<?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>
	<typeAliases>
	</typeAliases>
</configuration>

 


 

%에러

A field of identity constraint 'web-app-servlet-name-uniqueness' matched element 'web-app', but this element does not have a simple type.

 

web.xml에서 위와 같은 뭔 소린지 모를 에러가 나기도 한다. 이때는

해당 파일의 윗 부분에서 <web-app>이란 태그의 xmlns에서 java를 대문자로 써주면 된다.

 

 


 

%Servlet / Root context.xml

출처:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc

사진은 위에서 잠깐 설명했던 servlet-context.xml과 root-context.xml의 역할에 대해서 그림으로 보여준다.

 

뭐 정리하자면 servlet-context.xmlDispatcherServlet과 관련된, 요청이나 view와 연관된 객체, 설정을 정의하며, 

root-context.xml반대로 view와 관련되지 않은, 비즈니스 로직과 관련된 설정,객체를 정의한다.

반응형

'국비교육기관 > 스터디' 카테고리의 다른 글

Spring 시작2 [웹 사이트] - 회원가입  (0) 2021.06.29
Spring 시작2 - MariaDB 설치  (0) 2021.06.22
<Spring> 설치 및 환경 셋업  (0) 2021.06.14

댓글