1. Apache Tomcat(아파치 톰캣) 설치
저는 Tomcat9 버전을 설치하였습니다.
2. 톰캣 설치 설정
데이터베이스는 Oracle db를 사용할 예정이기에 포트 충돌 방지를 위해
다음과 같이 임의로 변경해줍니다.
포트번호는 자유롭게 입력 가능하지만 특정 포트는 사용이 불가합니다.
2-1. 톰캣 설치 설정
본인 컴퓨터의 jdk가 설치된 폴더로 설정해줍니다.
3. Spring 설치
저는 Spring Tools 4 for Eclipse로 설치하였습니다.
본인 운영체제 환경에 맞게 설치 해줍니다.
만약 파일이 아무것도 인식이 안되는 흰색 서류종이 모양이라면
저는 cmd에서 jar 이라고 입력하면 아래와 같은 아이콘으로 변했습니다.
프로젝트 생성 방법
프로젝트 영역에서 우클릭 New - Other 클릭
Spring - Spring Legacy Project를 선택해줍니다
Spring MVC 선택후 패키지명 정한후 Finish 해줍니다.
여기서는 패키지명을 com.icia.member로 해줬습니다.
4. Spring 사용 환경설정
아무 프로젝트나 만드신 후 Window - Show View - Other를 클릭해줍니다.
4-1. Spring 사용 환경설정
Show View가 나왔다면 Servers를 열고 목록들 중에 아까 설치해준 톰캣 버전을 찾아 선택해 줍니다.
4-2. Spring 사용 환경설정
톰캣이 설치된 경로를 설정해주고 JRE는 자신의 jdk 버전을 선택해줍니다.
4-3. Spring 사용 환경설정
아래 create a new server를 클릭해주고 Available에 있는 SpringTest1(프로젝트명)을 Add 해줍니다.
4-4. Spring 사용 환경설정
Server Options에서 Publish module contexts to separate XML files를 체크해주고
Ports에서 포트넘버가 맞는지 확인해줍니다.
4-5. Spring 사용 환경설정
Window - Preferences를 클릭 후
General - workspace를 눌러주신후 UTF-8로 변경해줍니다.
Web - CSS, HTML JSP도 UTF-8로 변경해줍니다.
4-6 Spring 사용 환경설정
Java Build Path - Libraries - ModulPath AddLibrary 누르신 후 Workspace default JRE 클릭
Java Compiler - 컴파일러 레벨을 자신의 jdk 버전에 맞게 변경해줍니다.
4-7 Spring 사용 환경설정
이어서 Project Facets에서 Dynamic Web Module을 4.0으로 변경해주고 바로 밑에 Java를 클릭후
자신의 jdk 버전에 맞게 설정합니다. 단 Dynamic Web Module 4.0은 jdk가 1.8 이상이여 합니다.
4-8 Spring 사용 환경설정
RunTimes에서 Apach Tomcat 9.0 체크를 해줍니다.
Help - Eclipse Marketplace 를 클릭해 들어가줍니다.
Marketplace에서 sts와 web developer tools를 검색 후 둘중 하나를 설치해줍니다.
참고) sts는 둘중 하나만 설치해도 둘다 설치되며,
web developer tools 설치는 java and web 붙은걸 설치하는걸 권장하는듯 합니다.
그냥 web developer를 설치해도 작동엔 문제없음
4-9 Spring 사용 환경설정
Pom.xml의 내용 수정
Pom.xml의 아래 사진의 밑부분에 pom.xml 코드를 넣어줍니다.
<!-- 여기부터 복사 -->
<properties>
<java-version>11</java-version>
<org.springframework-version>4.3.11.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<!-- Oracle -->
<repositories>
<repository>
<id>Oracle</id>
<name>Oracle JDBC Repository</name>
<url>http://maven.jahia.org/maven2</url>
</repository>
</repositories>
<!-- dependencies 중요! -->
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version> <!-- 버전 수정 -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<!-- 추가할 dependencies -->
<!-- Spring-JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- tomcat-dbcp -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-dbcp</artifactId>
<version>9.0.31</version>
</dependency>
<!-- Mybatis : DB Framework -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- Mybatis : spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Ojdbc6.jar -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>12.1.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<!-- java버전 수정 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
4-10 Spring 사용 환경설정, web.XML 수정
web.xml의 내용 수정
web.xml 파일에서 아래의 코드로 변경해줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.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/root-context.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>/</url-pattern>
</servlet-mapping>
<!-- 한글깨짐 관련 : UTF-8 파라미터 설정 -->
<filter>
<filter-name>encodingFilterUTF8</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>encodingFilterUTF8</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- beans 관련 설정 -->
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</context-param>
<context-param>
<param-name>spring.liveBeansView.mbeanDomain</param-name>
<param-value>dev</param-value>
</context-param>
</web-app>
root-context.xml의 내용수정
root-context.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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- 데이터베이스 연결 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL" />
<property name="username" value="cygnus" />
<property name="password" value="1111" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:/mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/icia/member/dao/mapper/*.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<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에서 username과 password 부분은 자신이 만든 oracle 계정으로 변경해줍니다.
자신의 oracle 버전에 따라 url 마지막 부분이 ORCL이나 XE로 나눠집니다.
root-context.xml에서
<property name="mapperLocations" value="classpath:com/icia/member/dao/mapper/*.xml" /> 이 부분을
자신의 패키지명에 맞게 수정해줍니다.
servlet-context.xml 내용 수정
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.icia.*" />
<!-- com.icia.member.controller 대신 -->
<!--모든 controller를 사용하겠다는 의미로 com.icia.*로 변경 -->
</beans:beans>
mapper 폴더추가
com.icia.member.dao 패키지 우클릭 - New - Folder 생성하고 이름은 mapper 라고만 작성해줍니다.
mapper 라는 폴더를 생성하면 아래와 같은 패키지와 폴더모양이 같이있는 폴더가 생기며
그 안에 MemberMapper.xml 파일을 만들어주고 아래의 코드를 작성합니다.
<?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="Member">
<insert id="mJoin" parameterType="member">
INSERT INTO MEMBER VALUES(#{mId},#{mPw})
</insert>
</mapper>
mybatis-config.xml 추가
src/main/resources 폴더에 mybatis-config.xml 파일 생성 후 아래 코드를 작성해줍니다.
<?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.icia.member.dto.MemberDTO" alias="member"/>
<!-- com.icia.member.dto.MemberDTO 대신 alias 별칭으로 member로 사용한다고 변경 -->
</typeAliases>
</configuration>
mybatis-config.xml 파일의 <typeAlias type="com.icia.member.dto.MemberDTO" alias="member"/> 부분도
자신의 패키지명에 맞게 수정해줍니다.
프로젝트 우클릭 - Maven - Update Project - Force Update 체크 후 Ok
그래도 오류가 발생한다면 Run - Run As - Maven clean 후 Maven install 해주시면 됩니다.
기존에 있던 HomeController.java 파일을 삭제해줍니다.
(@RequestMapping의 value를 겹치지 않게 수정해주면 삭제 안해도 됩니다.)
MemberController.java 파일에 해당 코드를 작성해줍니다.
package com.icia.member.controller;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class MemberController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home() {
return "home";
}
}
to be continue..
'Spring' 카테고리의 다른 글
SpringBoot 스프링부트 프로젝트 설정방법 (0) | 2022.05.23 |
---|---|
스프링(Spring ) Security 비밀번호 암호화 (0) | 2022.05.04 |
스프링(Spring) 비동기 Ajax 아이디 중복확인 및 로그인 예제와 @RequestParam , @RequestBody, @ModelAttribute 차이점 (0) | 2022.05.01 |
스프링 페이징 처리 (0) | 2022.04.26 |
Spring CRUD 예제 (0) | 2022.04.19 |