728x90
반응형
Spring은 설정만 잡아주면 실제 구현하기는 훨씬 수월하다고 한다.
근데 설정이 겁나 어렵다. 지금부터 한번 잘 정리해보겠다.
Spring MVC 설정 순서
1. pom.xml : ojdbc6.jar, mybatis, mybatis-spring, commons-dbcp, spring-orm
2. web.xml : mapping(*.do), encoding filter
3. /WEB-INF/spring/sqls
4. dto, dao, biz, controller : impl class인 dao, biz에 각각 @Repository, @Service
5. src/main/resources/mybatis/db.properties
6. src/main/resources/mybatis/board-mapper.xml
7. /WEB-INF/spring/sqls/config.xml
8. applicationContext.xml 에서 설정잡아주기
위의 설정 순서에 맞게 세부적인 코드들을 살펴보자.
1. pom.xml : 라이브러리 추가하기
ojdbc6.jar, mybatis, mybatis-spring, commons-dbcp, spring-orm
※이때 각 라이브러리가 공통으로 공유하는 jar파일이 있는 경우 버전을 맞춰주어야 오류없이 동작할 수 있다.
여기서는 상단에 태그된 context와 webmvc, 그리고 하단에 추가한 orm이 core파일을 공유 하고 있기때문에 정상적인 동작을 위해 버전을 맞춰주어야한다. 따라서 orm을 추가한 후 version 부분은 상단에 따로 선언된 properties안의 버전으로 통일해주었다.
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
2. web.xml
1) 기본설정
- context-param: root-context.xml
- context-param은 context(프로젝트)전체에서 사용할 수 있는 변수로 DB와 관련된 설정들을 잡아준다.
- Listener : 어떤 xml로 연결할지 찾아서 dispatcherServlet으로 요청을 전달한다
- DispatcherServlet: 요청받은 내용을 Controller와 연결한다.
- init-param : servlet-context.xml ▷여기 파일에서 servlet관련 설정과 annotation을 사용할 수 있도록 태그를 잡아준다.
- 여기서 설정해주는 것들은 Dispatcher가 요청에 따라 연결해줄 controller와 관련된 파일설정을 잡아준다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/applicationContext.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2) 추가 설정사항
- servlet-mapping : servlet name을 정하고 url과 연결할 패던을 정해준다. (기본설정은 /로 되어있다)
- filter : encoding을 잡아주어 어떤 곳에서도 설정한 인코딩으로 반환되게끔 해준다.
- forceEncoding : 특별히 utf가 걸려있지 않더라고 강제로 걸어준다.
<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>
</web-app>
▶︎ applicationContext.xml
<?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">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- db.properties -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:mybatis/db.properties"/>
</bean>
<!-- dataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
<!-- mybatis factory -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="WEB-INF/spring/sqls/config.xml"/>
</bean>
<!-- classpath = src/main/resources
value에 해당경로에 파일을 넣고 담고 싶다면 classpath:mybatis/config.xml 이런식으로 적을 수 있음 -->
<!-- mybatis template -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSession"/>
</bean>
</beans>
▶︎ servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.mvc.upgrade" />
</beans:beans>
3. sql파일 만들기 : /WEB-INF/spring/sqls/파일명.sql
DROP SEQUENCE MYNOSEQ;
DROP TABLE MYBOARD;
CREATE SEQUENCE MYNOSEQ;
CREATE TABLE MYBOARD(
MYNO NUMBER PRIMARY KEY,
MYNAME VARCHAR2(500) NOT NULL,
MYTITLE VARCHAR2(1000) NOT NULL,
MYCONTENT VARCHAR2(4000) NOT NULL,
MYDATE DATE NOT NULL
);
INSERT INTO MYBOARD
VALUES(MYNOSEQ.NEXTVAL, '관리자', '테스트 글입니다.', 'test1234', SYSDATE);
SELECT MYNO, MYNAME, MYTITLE, MYCONTENT, MYDATE
FROM MYBOARD
ORDER BY MYNO DESC;
4. dto, dao, biz, controller 만들기
5. src/main/resources/mybatis/db.properties 파일 만들기
: 연결할 DB에 대한 정보를 담아준다.
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
username=kh
password=kh
6. src/main/resources/mybatis/board-mapper.xml 파일 만들기
- 이때 mapper의 namespace는 <cache-ref>가 아닌 mapper 태그안에 namespace로 잡아주어야 한다. <cache-ref>는 다른 설정임!
- SQL을 매핑하기 위해서 상단의 <!DOCTYPE mapper PUBLIC ~>의 설정이 필요하다. mybatis사이트에서 찾을수 있고, Preferences에서 설정을 잡아주어 편하게 쓸 수 도 있다. 설정 방법은 가장 아래 링크에서 확인하자.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="myboard">
<select id="selectList" resultType="myBoardDto">
SELECT MYNO, MYNAME, MYTITLE, MYCONTENT, MYDATE
FROM MYBOARD
ORDER BY MYNO DESC
</select>
<select id="selectOne" resultType="myBoardDto" parameterType="integer">
SELECT MYNO, MYNAME, MYTITLE, MYCONTENT, MYDATE
FROM MYBOARD
WHERE MYNO = #{myno}
</select>
<insert id="insert" parameterType="myBoardDto">
INSERT INTO MYBOARD
VALUES(MYNOSEQ.NEXTVAL, #{myname}, #{mytitle}, #{mycontent}, SYSDATE)
</insert>
<update id="update" parameterType="myBoardDto">
UPDATE MYBOARD SET
MYNAME = #{myname}, MYTITLE=#{mytitle}, MYCONTENT=#{mycontent}
WHERE MYNO = #{myno}
</update>
<delete id="delete" parameterType="myBoardDto">
DELETE FROM MYBOARD WHERE MYNO = #{myno}
</delete>
</mapper>
7. /WEB-INF/spring/config.xml
- dto에 대한 typeAliases를 잡아주고 매퍼설정을 해준다.
- configuration도 역시 상단 DOCTYPE 태그가 필요하고 관련 설정방법은 아래 링크를 참고하자.
<?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>
<typeAlias type="com.mvc.upgrade.dto.MyBoardDto" alias="myBoardDto"/>
</typeAliases>
<mappers>
<mapper resource="/mybatis/board-mapper.xml"/>
</mappers>
</configuration>
8. applicationContext.xml에서 설정잡아주기
: 2번에서 함께 설명했으므로 생략한다.
▷▷mapper와 configuration 이클립스 설정방법
728x90
반응형
'Web > Spring' 카테고리의 다른 글
[Spring]MVC_2. filter, aop 설정 (0) | 2020.11.04 |
---|---|
[Spring]mapper_configuration doctype설정 (0) | 2020.11.02 |
[Spring]MVC_상대경로, @RequestParam, @ModelAttribute, Void (0) | 2020.10.29 |
[Spring]MVC기초설명 (0) | 2020.10.29 |
[Spring]Annotation (0) | 2020.10.28 |