본문 바로가기

SPRING

메이븐 프로젝트로 직접 웹 프로젝트 올리기 - 회원가입

레거시 프로젝트가 아닌, 메이븐 프로젝트로 시작해서 하나하나 쌓아 올리는 과정이다.

 

1. spring08 메이븐 프로젝트 생성

 

2. 웹 개발 관련 폴더 생성

src/main/webapp/WEB-INF/view까지 생성

 

 

3. pom.xml에 웹 개발 관련 의존성 설정

- <packaging>war</packaging>

- 서블릿, 스프링 mvc, DB 연동, jstl 관련 의존 라이브러리 추가

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
        http://maven.apache.org/xsd/maven-4.0.0.xsd">
   
    <modelVersion>4.0.0</modelVersion>
    <groupId>sp</groupId>
    <artifactId>spring08</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging> <!-- 웹 프로그램을 묶음으로 만들 때 필요한 war 파일 추가 -->
                               <!-- 다 만들고나면 war 형태로 웹 프로젝트가 배포될 것임 -->

    <dependencies>
    	<!-- 서블릿 관련 라이브러리 추가 -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
        	<groupId>javax.servlet</groupId>
        	<artifactId>javax.servlet-api</artifactId>
        	<version>3.0.1</version>
        </dependency>
        
        <!-- 스프링 mvc 라이브러리 추가 -->
        <dependency>
        	<groupId>org.springframework</groupId>
        	<artifactId>spring-webmvc</artifactId>
        	<version>4.1.0.RELEASE</version>
        </dependency>
        
        <!-- DB 연동 라이브러리들 추가 -->
        <!-- 1. jdbc 추가 -->
        <dependency>
        	<groupId>org.springframework</groupId>
        	<artifactId>spring-jdbc</artifactId>
        	<version>4.1.0.RELEASE</version>
        </dependency>
        
        <!-- 2. 커넥션풀 추가 (두 가지) -->
        <dependency>
        	<groupId>com.mchange</groupId>
        	<artifactId>c3p0</artifactId>
        	<version>0.9.2.1</version>
        </dependency>
        <dependency>
        	<groupId>commons-dbcp</groupId>
        	<artifactId>commons-dbcp</artifactId>
        	<version>1.4</version>
        </dependency>
        
    	<!-- 3. 오라클 드라이버 추가 -->
        <dependency>
        	<groupId>oracle</groupId>
        	<artifactId>ojdbc6</artifactId>
        	<version>11.2.0.3</version>
        </dependency>
        
        <!-- 4. jstl 설정 추가 -->
        <dependency>
        	<groupId>javax.servlet</groupId>
        	<artifactId>jstl</artifactId>
        	<version>1.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

 

4. 프로젝트 우클릭 -> maven 업데이트

 

 

5. 프로젝트 우클릭 -> Java EE Tools -> Generate Deployment Descriptor Stub 클릭 -> web.xml 파일 자동으로 생성

메이븐으로 올리는 것이기 때문에 web.xml 파일도 내가 직접 만들어야함

 

	<display-name>spring08</display-name>

	<!-- 서블릿 설정 및 필터 적용 -->
	<!-- 모든 요청은 dispatcherServlet으로 들어온다 : frontController -->
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value> <!-- 서블릿이 호출되는 순간 이 파일들이 읽어짐 -->
				classpath:spring-mvc.xml
				classpath:spring-controller.xml 
				classpath:spring-member.xml
			</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/</url-pattern> <!-- 모든 사용자의 요청을 dispatcher가 담당하겠다 -->
	</servlet-mapping>
	
	<!-- 한글 인코딩 설정 -->
	<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>
	
</web-app>

 

6. 이클립스 인코딩 설정 및 톰캣 등록

 

7. src/main/resources에 spring-mvc.xml 파일 설정

이 파일은 viewResolver의 역할을 담은 설정 파일이다. 프론트 단의 설정을 담당하는?

 

<?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:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<mvc:annotation-driven/>
	<mvc:default-servlet-handler/>
    
	<!-- 뷰와 관련된 설정 -->
    
	<mvc:view-resolvers>
		<mvc:jsp prefix="/WEB-INF/view/" suffix=".jsp"/>
	</mvc:view-resolvers>
	
</beans>

 

8. src/main/resources에 spring-controller.xml 파일 설정

이 파일은 controller 클래스 사용을 위한 빈 설정 파일이다.

 

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

	<!-- 빈 컨테이너 : 서블릿 등록  -->
    <bean class="controller.RegisterController">
		<property name="memberRegSvc" ref="memberRegSvc"/> <!-- 의존 주입 추가 -->
    </bean>

</beans>

 

9. src/main/resources에 spring-member.xml 파일 설정

트랜잭션 및 DB 연동 관련한 빈 설정 파일이다.

이번 프로젝트에서는 C3P0를 이용한 DB 연동이다.

 

<?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:mvc="http://www.springframework.org/schema/mvc"
	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://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">

	<!-- 트랜잭션 설정 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>
    
	<!-- DB 연동 dataSource 객체 생성 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe"/>
		<property name="user" value="springuser"/>
		<property name="password" value="1234"/>
		<property name="maxPoolSize" value="100"/>
		<property name="maxIdleTime" value="600"/>
		<property name="idleConnectionTestPeriod" value="300"/>
	</bean>
    
	<!-- 트랜잭션 객체 생성 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<!-- 프로젝트에 실행에 필요한 세 가지 객체 생성 -->
	<bean id="memberDao" class="spring.MemberDAO">
		<constructor-arg ref="dataSource"/>
	</bean>
	
	<bean id="memberRegSvc" class="spring.MemberRegisterService">
		<constructor-arg ref="memberDao"/>
	</bean>
	
	<bean id="changePwdSvc" class="spring.ChangePasswordService">
		<constructor-arg ref="memberDao"/>
	</bean>

</beans>

여기까지 기본적인 셋팅 작업은 끝! 이제 회원가입을 위한 컨트롤러와 jsp 파일들을 작성해보자.

 

1. RegisterController 클래스 작성

 

 

2. MemberRegisterService 클래스 / RegisterRequest 클래스

 

 

 

3. step1.jsp 파일 작성

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>약관</title>
</head>
<body>
	<h2>약관</h2>
	<p>약관 내용</p>
	<form action="step2" method="post">
		<label><input type="checkbox" name="agree" value="true">약관동의</label>
		<input type="submit" value="다음 단계">
	</form>
</body>
</html>

 

4. step2.jsp 파일 작성

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입</title>
</head>
<body>
	<h2>회원 정보 입력</h2>
	<form action="step3" method="post">
	<p>
	<label>이메일: <input type="text" name="email" id="email"></label>
	</p>
	<p>
	<label>이름: <input type="text" name="name" id="name"></label>
	</p>
	<p>
	<label>비밀번호: <input type="password" name="password" id="password"></label>
	</p>
	<p>
	<label>비밀번호 확인: <input type="password" name="confirmPassword" id="confirmPassword"></label>
	</p>
	<input type="submit" value="가입완료">
	</form>
</body>
</html>

 

5. step3.jsp 파일 작성

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입</title>
</head>
<body>
	<p>회원 가입을 환영합니다.</p>
	<p><a href="<c:url value='/'/>">[홈 화면 이동]</a></p>
</body>
</html>

 

6. 브라우저 출력