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.xml은 view와 관련되지 않은 객체 (그러면 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
사진은 위에서 잠깐 설명했던 servlet-context.xml과 root-context.xml의 역할에 대해서 그림으로 보여준다.
뭐 정리하자면 servlet-context.xml은 DispatcherServlet과 관련된, 요청이나 view와 연관된 객체, 설정을 정의하며,
root-context.xml은 반대로 view와 관련되지 않은, 비즈니스 로직과 관련된 설정,객체를 정의한다.
'국비교육기관 > 스터디' 카테고리의 다른 글
Spring 시작2 [웹 사이트] - 회원가입 (0) | 2021.06.29 |
---|---|
Spring 시작2 - MariaDB 설치 (0) | 2021.06.22 |
<Spring> 설치 및 환경 셋업 (0) | 2021.06.14 |
댓글