๐Ÿ’ป

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ - [Spring] ํ†ฐ์บฃ ์„œ๋ฒ„ ์„ธํŒ… / MVC ํ”„๋กœ์ ํŠธ (2) ๋ณธ๋ฌธ

KITRI/SPRING

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ - [Spring] ํ†ฐ์บฃ ์„œ๋ฒ„ ์„ธํŒ… / MVC ํ”„๋กœ์ ํŠธ (2)

๋˜ํšจ๋‹ˆ 2020. 7. 28. 16:59

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

๋ฉ”์ธํŽ˜์ด์ง€

 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="root" value="${pageContext.request.contextPath}"/>
	
	<a href="${root}/member/test.do">Spring MVC Start!!!</a>
	
	<h3>ํšŒ์›๊ด€๋ฆฌ</h3>
	<a href="${root}/member/register.do">ํšŒ์›๊ฐ€์ž…</a>
</body>
</html>

 

HAspect.java

package com.java.aop;

import java.util.logging.Logger;

import org.aspectj.lang.ProceedingJoinPoint;

public class HAspect {
	public static Logger logger = Logger.getLogger(HAspect.class.getName());
	public static final String logMsg = "LogMsg~~~~~~~~~~~~~~~";
	
	
	public Object advice(ProceedingJoinPoint joinPoint) {
		Object obj = null;
		
		try {
			logger.info(logMsg + joinPoint.getTarget().getClass().getName() + "---" + joinPoint.getSignature().getName()); 
			obj= joinPoint.proceed();
		
		} catch (Throwable e) {
			e.printStackTrace();
		}
		return obj;
	}
}

 

SpringController-servlet.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
	
	<!-- AOP -->
	<bean id="hAspect" class="com.java.aop.HAspect"/>
	<aop:config>
		<aop:aspect id="exAspect" ref="hAspect">
			<aop:pointcut expression="within(com.java.*)" id="pMethod"/>
			<aop:around method="advice" pointcut-ref="pMethod"/>
		</aop:aspect>
	</aop:config>

	
	
	<!-- HandlerMapping / UI์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„๋ผ -->
	<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/member/*.do">memberController</prop>
			</props>
		</property>
	</bean>
	
	<bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
		<property name="mappings">
			<props>
				<prop key="/member/test.do">testing</prop>
				<prop key="/member/register.do">register</prop>
			</props>
		</property>
	
	</bean>
	
	<!-- MemberController -->
	<bean id="memberController" class="com.java.member.controller.MemberController">
		<constructor-arg ref="memberServiceImp"/>
		<property name="methodNameResolver" ref="propertiesMethodNameResolver"/>
	</bean>
	
	<!-- MemberService -->
	<bean id="memberServiceImp" class="com.java.member.service.MemberServiceImp">
		<constructor-arg ref="memberDaoImp"/>
	</bean>
	
	<!-- MemberDAO -->
	<bean id="memberDaoImp" class="com.java.member.dao.MemberDaoImp"></bean>
	<!-- MyBatis -->
	
	<!-- MVC RequestDispatcher / forward -->
	<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"/>
		<property name="suffix" value=".jsp"></property>
	</bean>	
</beans>

 

MemberController.java

package com.java.member.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import org.springframework.web.servlet.view.InternalResourceView;

import com.java.member.service.MemberService;

public class MemberController extends MultiActionController{	//Command
	private MemberService memberService;

	public MemberController() {}
	
	public MemberController(MemberService memberService) {
		this.memberService = memberService;
	}

	public void setMemberService(MemberService memberService) {
		this.memberService = memberService;
	}
	
	public ModelAndView testing(HttpServletRequest request, HttpServletResponse response) {
		System.out.println("OK");
		
		//Service - Dao / Dto - Service
		//์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋Š” View
		/*
		InternalResourceView view = new InternalResourceView("/WEB-INF/member/test.jsp");
		ModelAndView mav = new ModelAndView();
		mav.addObject("msg", "hi");
		mav.setView(view);
		*/
		
		//๋‹ค์–‘ํ•œ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๊ธฐ์— ๊ทธ์— ๋งž์ถฐ์„œ ์‚ฌ์šฉ!!!
		//ModelAndView mav = new ModelAndView(view);
		ModelAndView mav = new ModelAndView("member/test");
		mav.addObject("msg", "hi");
		
		return mav;
	}
	
	public ModelAndView register(HttpServletRequest request, HttpServletResponse response) {
		return new ModelAndView("member/register");
	}
}

ํ•œ๊ธ€์„ค์ •

 

Web.xml

 <!-- ํ•œ๊ธ€ ์ž‘์—… -->
 <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>

 

ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

 

register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<c:set var="root" value="${pageContext.request.contextPath}" />
<html>
<head>
<meta charset="UTF-8">
<title>ํšŒ์›๊ฐ€์ž…page</title>
	<link rel="stylesheet" href="${root}/css/member/joinStyle.css">
	<script type="text/javascript" src="${root}/javascript/member/register.js"></script>
</head>
<body>
	<!-- ํ…œํ”Œ๋ฆฟ ์ ์šฉ ๋•Œ๋Š” ์‚ญ์ œ -->
	<!--<jsp:include page="../../../index.jsp"/>-->
	<br /><br />

	<form id="joinform" name="joinform" action="${root}/member/registerOk.do" method="post" 
		onsubmit="return createFrom(this)">

		<h4 style="text-align: center;">ํšŒ์›๊ฐ€์ž…(*ํ•„์ˆ˜์ž…๋ ฅ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.)</h4>
		<div class="menu" style="border-bottom-width: 0px;">


		<div id="id">์•„์ด๋””</div>
			<span>* 
				<input type="text" class="checkInfo" name="id" size="12" /> 
				<button type="button" onclick="idCheck(joinform, '${root}')">์•„์ด๋”” ์ค‘๋ณต</button>
			</span>
		</div>

		<div class="menu " style="border-bottom-width: 0px;">
			<div id="id">๋น„๋ฐ€๋ฒˆํ˜ธ</div>
			<span>* <input type="password" class="checkInfo" name="password" size="12" />
			</span>
		</div>

		<div class="menu " style="border-bottom-width: 0px;">
			<div id="id">๋น„๋ฐ€๋ฒˆํ˜ธํ™•์ธ</div>
			<span>* <input type="password" class="checkInfo" name="passwordCheck" size="12" />
			</span>
		</div>

		<div class="menu " style="border-bottom-width: 0px;">
			<div id="id">์ด๋ฆ„</div>
			<span>* <input type="text" class="checkInfo" name="name" size="12" />
			</span>
		</div>

		<div class="menu " style="border-bottom-width: 0px;">
			<div id="id">์ฃผ๋ฏผ๋ฒˆํ˜ธ</div>
			<span>* 
				<input type="text" class="checkInfo" name="jumin1" size="6" /> 
				<span>-</span> 
				<input type="text" class="checkInfo" name="jumin2" size="7" />
			</span>
		</div>

		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id" style="margin-left: 10px,">์ด๋ฉ”์ผ</div>
			<span> 
				<input type="email" name="email" size="25" />
			</span>
		</div>


		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">์šฐํŽธ๋ฒˆํ˜ธ</div>
			<span> 
				<input type="text" name="zipcode" size="30" /> 
				<button type="button" onclick="searchZipcode('${root}')">์šฐํŽธ๋ฒˆํ˜ธ๊ฒ€์ƒ‰</button>
			</span>
		</div>

		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">์ฃผ์†Œ</div>
			<span> <input type="text" name="address" size="50" />
			</span>
		</div>

		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">์ง์—…</div>
			<span> 
			<select name="job">
					<option>์ง์—…์„ ์„ ํƒํ•˜์„ธ์š”.</option>
					<option value=' '>๋ฌด์ง</option>
					<option value='programmer'>ํ”„๋กœ๊ทธ๋ž˜๋จธ</option>
					<option value='designer'>๋””์ž์ด๋„ˆ</option>
			</select>
			</span>
		</div>


		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">๋ฉ”์ผ์ˆ˜์‹ </div>
			<span> <input type="radio" id="yes" name="mailing" value="yes" />
				<label for="yes">yes</label> <input type="radio" id="no"
				name="mailing" value="no" /> <label for="no">no</label>
			</span>
		</div>

		<div class="menu" style="border-bottom-width: 0px;">
			<div id="id">๊ด€์‹ฌ๋ถ„์•ผ</div>
			<span> 
				<input type="checkbox" size="12" name="interest" value="๊ฒฝ์ œ"/> 
				<label for="๊ฒฝ์ œ" >๊ฒฝ์ œ</label> 
				<input type="checkbox" size="12" name="interest" value="IT"/> 
				<label for="IT" >IT</label>
				<input type="checkbox" size="12" name="interest" value="์Œ์•…"/>
				<label for="์Œ์•…" >์Œ์•…</label> 
				<input type="checkbox" size="12" name="interest" value="๋ฏธ์ˆ "/> 
				<label for="๋ฏธ์ˆ " >๋ฏธ์ˆ </label>
				<input type="hidden" name="resultInterest"/>
			</span>	
		</div>

		<div class="menu" style="text-align: center;">
			<span> 
				<input type="submit" value="๊ฐ€์ž…" />
			 	<input type="reset" value="์ทจ์†Œ" />
			</span>
		</div>
	</form>
</body>
</html>

 

/css/member/joinStyle.css

@charset "UTF-8";
#joinform {
	width: 700px;
	height: 100px;
	margin: 100px auto;
}

#joinform .menu {
	border: solid 3px black;
	width: 700px;
	height: 30px;
	display: block;
	line-height: 20px;
	text-indent: 5px;
}
#id {
	border-right: solid 3px black;
	width: 120px;
	height: 30px;
	float: left;
	line-height: 30px;
}
input[type="text"], input[type="email"], input[type="password"], input[type="button"]{
	margin-top: 5px;
}
.checkInfo:focus{
	background-color:yellow;
}

 

registerOk.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="root" value="${pageContext.request.contextPath}"/>
	<c:if test = "${check > 0}">
		<script type="text/javascript">
			alert("ํšŒ์› ๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
			location.href="${root}/member/register.do";
		</script>
	</c:if>

	<c:if test = "${check == 0}">
		<script type="text/javascript">
			alert("ํšŒ์› ๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.");
			location.href="${root}/member/register.do";
		</script>
	</c:if>
</body>
</html>

 

SpringController-servlet.xml

register์ถ”๊ฐ€ , 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:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
	
	<!-- AOP -->
	<bean id="hAspect" class="com.java.aop.HAspect"/>
	<aop:config>
		<aop:aspect id="exAspect" ref="hAspect">
			<aop:pointcut expression="within(com.java.*)" id="pMethod"/>
			<aop:around method="advice" pointcut-ref="pMethod"/>
		</aop:aspect>
	</aop:config>
	
	
	<!-- Spring DB -->
	<bean id="driverManagerDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
		<property name="username" value="mvc"/>
		<property name="password" value = "1234"/>
	</bean>

	
	<!-- MyBatis -->
	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="driverManagerDataSource"></property>
		<property name="mapperLocations" value="classpath:com/java/member/dao/mapper/MemberMapper.xml"></property>
	</bean>
	
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg ref="sqlSessionFactoryBean"/>
	</bean>

	
	<!-- member bean -->
	
	<!-- HandlerMapping / UI์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„๋ผ -->
	<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/member/*.do">memberController</prop>
			</props>
		</property>
	</bean>
	
	<bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
		<property name="mappings">
			<props>
				<prop key="/member/test.do">testing</prop>
				<prop key="/member/register.do">memberRegister</prop>
				<prop key="/member/registerOk.do">memberRegisterOk</prop>
			</props>
		</property>
	
	</bean>
	
	<!-- MemberController -->
	<bean id="memberController" class="com.java.member.controller.MemberController">
		<constructor-arg ref="memberServiceImp"/>
		<property name="methodNameResolver" ref="propertiesMethodNameResolver"/>
	</bean>
	
	<!-- MemberService -->
	<bean id="memberServiceImp" class="com.java.member.service.MemberServiceImp">
		<constructor-arg ref="memberDaoImp"/>
	</bean>
	
	<!-- MemberDAO -->
	<bean id="memberDaoImp" class="com.java.member.dao.MemberDaoImp">
		<property name="sqlSessionTemplate" ref="sqlSessionTemplate"></property>
	</bean>

	
	<!-- MVC RequestDispatcher / forward -->
	<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"/>
		<property name="suffix" value=".jsp"></property>
	</bean>
	
	
</beans>

 

MemberController.java

register, registerOk ์ถ”๊ฐ€

package com.java.member.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import org.springframework.web.servlet.view.InternalResourceView;

import com.java.aop.HAspect;
import com.java.member.dto.MemberDto;
import com.java.member.service.MemberService;

public class MemberController extends MultiActionController{	//Command
	private MemberService memberService;

	public MemberController() {}
	
	public MemberController(MemberService memberService) {
		this.memberService = memberService;
	}

	public void setMemberService(MemberService memberService) {
		this.memberService = memberService;
	}
	
	public ModelAndView testing(HttpServletRequest request, HttpServletResponse response) {
		System.out.println("OK");
		
		//Service - Dao / Dto - Service
		//์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋Š” View
		/*
		InternalResourceView view = new InternalResourceView("/WEB-INF/member/test.jsp");
		ModelAndView mav = new ModelAndView();
		mav.addObject("msg", "hi");
		mav.setView(view);
		*/
		
		//๋‹ค์–‘ํ•œ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๊ธฐ์— ๊ทธ์— ๋งž์ถฐ์„œ ์‚ฌ์šฉ!!!
		//ModelAndView mav = new ModelAndView(view);
		ModelAndView mav = new ModelAndView("member/test");
		mav.addObject("msg", "hi");
		
		return mav;
	}
	
	public ModelAndView memberRegister(HttpServletRequest request, HttpServletResponse response) {
		return new ModelAndView("member/register");
	}
	
	public ModelAndView memberRegisterOk(HttpServletRequest request, HttpServletResponse response, MemberDto memberDto) {
		HAspect.logger.info(HAspect.logMsg + memberDto.toString());
		
		ModelAndView mav = new ModelAndView();
		mav.addObject("memberDto", memberDto);
		
		memberService.memberRegisterOk(mav);
		
		return mav;
	}
}

 

MemberDto.java

Dto์˜ ์ด๋ฆ„๊ณผ ๋ทฐ์˜ form์˜ ์‹๋ณ„์ž(name๊ฐ’)๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

package com.java.member.dto;

import java.sql.Date;

public class MemberDto {
    private String id;
    private String password;
    private String name;
    private String jumin1;
    private String jumin2;
    private String email;
    private String zipcode;
    private String address;
    private String job;
    private String mailing;
    private String interest;
    
    private Date registerDate; //๊ฐ€์ž…๋‚ ์งœ: Date, sysdate
    private int num;	       //์‹œํ€€์Šค๋ฒˆํ˜ธ: .nextval
    private String memberLevel;//ํšŒ์›๋“ฑ๊ธ‰: ํšŒ์›๋“ฑ๊ธ‰:3๊ฐœ(BA,AA,VIP)
   
    public MemberDto() {
	super();
    }

    public MemberDto(String id, String password, String name, String jumin1, String jumin2, String email,
	    String zipcode, String address, String job, String mailing, String interest, Date registerDate, int num,
	    String memberLevel) {
	super();
	this.id = id;
	this.password = password;
	this.name = name;
	this.jumin1 = jumin1;
	this.jumin2 = jumin2;
	this.email = email;
	this.zipcode = zipcode;
	this.address = address;
	this.job = job;
	this.mailing = mailing;
	this.interest = interest;
	this.registerDate = registerDate;
	this.num = num;
	this.memberLevel = memberLevel;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getJumin1() {
        return jumin1;
    }
    public void setJumin1(String jumin1) {
        this.jumin1 = jumin1;
    }
    public String getJumin2() {
        return jumin2;
    }
    public void setJumin2(String jumin2) {
        this.jumin2 = jumin2;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getZipcode() {
        return zipcode;
    }
    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public String getMailing() {
        return mailing;
    }
    public void setMailing(String mailing) {
        this.mailing = mailing;
    }
    public String getInterest() {
        return interest;
    }
    public void setInterest(String interest) {
        this.interest = interest;
    }
    public Date getRegisterDate() {
        return registerDate;
    }
    public void setRegisterDate(Date registerDate) {
        this.registerDate = registerDate;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getMemberLevel() {
        return memberLevel;
    }
    public void setMemberLevel(String memberLevel) {
        this.memberLevel = memberLevel;
    }
    @Override
    public String toString() {
	return "MemberDto [id=" + id + ", password=" + password + ", name=" + name + ", jumin1=" + jumin1 + ", jumin2="
		+ jumin2 + ", email=" + email + ", zipcode=" + zipcode + ", address=" + address + ", job=" + job
		+ ", mailing=" + mailing + ", interest=" + interest + ", registerDate=" + registerDate + ", num=" + num
		+ ", memberLevel=" + memberLevel + "]";
    }    
}

 

[interface] MemberDao.java

memberinsert ์ถ”๊ฐ€

package com.java.member.dao;

import com.java.member.dto.MemberDto;

public interface MemberDao {
	public int memberinsert(MemberDto memberDto);
}

 

MemberDaoImp.java

memberinsert์ถ”๊ฐ€

package com.java.member.dao;

import org.mybatis.spring.SqlSessionTemplate;

import com.java.member.dto.MemberDto;

public class MemberDaoImp implements MemberDao {
	//My batis SqlSessionTemplate
	private SqlSessionTemplate  sqlSessionTemplate;
	
	public MemberDaoImp() {};

	
	public MemberDaoImp(SqlSessionTemplate sqlSessionTemplate) {

		this.sqlSessionTemplate = sqlSessionTemplate;
	}

	public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
		this.sqlSessionTemplate = sqlSessionTemplate;
	}

	@Override
	public int memberinsert(MemberDto memberDto) {
		return sqlSessionTemplate.insert("member_insert", memberDto);
	}
}

 

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="MemberDto">

	<resultMap type="com.java.member.dto.MemberDto" id="member_dto">
		<result column="num" property="num"/>
		<result column="id" property="id"/>
		<result column="password" property="password"/>
		<result column="name" property="name"/>
		<result column="jumin1" property="jumin1"/>
		<result column="jumin2" property="jumin2"/>
		<result column="email" property="email"/>
		
		<result column="zipcode" property="zipcode"/>
		<result column="address" property="saddress"/>
		<result column="job" property="job"/>
		<result column="mailing" property="mailing"/>
		<result column="interest" property="interest"/>
		<result column="member_level" property="memberLevel"/>
		<result column="register_date" property="registerDate"/>
	</resultMap>

<!-- ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์€ parameterType ๋‚˜๊ฐ€๋Š” ๊ฒƒ์€ resultType id๋Š” ์‹๋ณ„์ž, insert๋Š” resultType ์ƒ๋žต -->
	<insert id="member_insert" parameterType="com.java.member.dto.MemberDto">
		insert into member values(
				member_num_seq.nextval,
				#{id},
				#{password},
				#{name},
				#{jumin1},
				#{jumin2},
				#{email},
				#{zipcode},
				#{address},
				#{job},
				#{mailing},
				#{interest},
				#{memberLevel},
				sysdate
		)
	</insert>
</mapper>

 

[interface] MemberService.java

package com.java.member.service;

import org.springframework.web.servlet.ModelAndView;

public interface MemberService {
	public void memberRegisterOk(ModelAndView mav);
}

 

 

MemberServiceImp.java

registerOk์ถ”๊ฐ€

package com.java.member.service;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.servlet.ModelAndView;

import com.java.aop.HAspect;
import com.java.member.dao.MemberDao;
import com.java.member.dto.MemberDto;

public class MemberServiceImp implements MemberService {
	private MemberDao memberDao;


	public MemberServiceImp() {}


	public MemberServiceImp(MemberDao memberDao) {
		this.memberDao = memberDao;
	}


	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}
	
	@Override
	public void memberRegisterOk(ModelAndView mav) {
		Map<String, Object> map = mav.getModelMap();
		MemberDto memberDto = (MemberDto)map.get("memberDto");
		
		memberDto.setMemberLevel("BA");
		
		int check = memberDao.memberinsert(memberDto);
		HAspect.logger.info(HAspect.logMsg + check);
		
		mav.addObject("check", check);
		mav.setViewName("member/registerOk");
		
	}
}

 

 

idCheck๊ธฐ๋Šฅ

 

idCheck.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>์•„์ด๋”” ํ™•์ธ</title>
</head>
<body>
	<c:set var="root" value="${pageContext.request.contextPath}"/>
	<c:if test="${check != 0}">
		<div align="center"> 
			์ด๋ฏธ ์‚ฌ์šฉ์ค‘์ธ ์•„์ด๋””์ž…๋‹ˆ๋‹ค.
			<form action="${root}/member/idCheck.do" method="get">
				<input type="text" name="id"/>
				<input type="submit" value="ํ™•์ธ"/>
			</form>
		</div>
	</c:if>

	<c:if test="${check == 0}">
		<div align="center"> 
			์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ด๋””์ž…๋‹ˆ๋‹ค.
		</div>
		
		<script type="text/javascript">
			opener.joinform.id.value="${id}";
		</script>	
	</c:if>
	
	<div align="center">
		<a href="javascript:self.close();">๋‹ซ๊ธฐ</a>
	</div>
</body>
</html>

 

register.js

function idCheck(root){
	alert(root);
	if($("input[name='id']").val()==""){
		alert("์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”");
		$("input[name='id']").focus();
		return false;
	}
	
	var url = root + "/member/idCheck.do?id=" + $("input[name='id']").val();
	//alert(url);
	window.open(url , "", "width=250, height=150"); 
}

 

SpringController-servlet.xml

idCheck.do์ถ”๊ฐ€

	<bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
		<property name="mappings">
			<props>
				<prop key="/member/test.do">testing</prop>
				<prop key="/member/register.do">memberRegister</prop>
				<prop key="/member/registerOk.do">memberRegisterOk</prop>
				<prop key="/member/idCheck.do">memberidCheck</prop>
			</props>
		</property>
	</bean>
    
    <bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
		<property name="mappings">
			<props>
				<prop key="/member/test.do">testing</prop>
				<prop key="/member/register.do">memberRegister</prop>
				<prop key="/member/registerOk.do">memberRegisterOk</prop>
				<prop key="/member/idCheck.do">memberidCheck</prop>
			</props>
		</property>
    </bean>

 

MemberController.java

memberidCheck ์ถ”๊ฐ€

public ModelAndView memberidCheck(HttpServletRequest request, HttpServletResponse response) {
		ModelAndView mav = new ModelAndView();
		mav.addObject("request", request);
		
		memberService.memberidCheck(mav);
		
		return mav;
}

 

[interface] MemberDao.java

memberidcheck์ถ”๊ฐ€

package com.java.member.dao;

import com.java.member.dto.MemberDto;

public interface MemberDao {
	public int memberinsert(MemberDto memberDto);
	public int memberidCheck(String id);
}

 

MemberDaoImp.java

memberidCheck์ถ”๊ฐ€

@Override
	public int memberidCheck(String id) {
		String value =  sqlSessionTemplate.selectOne("id_check",id);
		
		int check = 0;
		if(value!=null) check=1;
		
		
		return check;
}

 

[interface] MemberService.java

memberidCheck ์ถ”๊ฐ€

package com.java.member.service;

import org.springframework.web.servlet.ModelAndView;

public interface MemberService {

	public void memberRegisterOk(ModelAndView mav);
	public void memberidCheck(ModelAndView mav);
}

 

MemberServiceImp.java

memberidCheck ์ถ”๊ฐ€

@Override
	public void memberidCheck(ModelAndView mav) {
		Map<String, Object> map = mav.getModelMap();
		HttpServletRequest request = (HttpServletRequest)map.get("request");
		
		String id = request.getParameter("id");
		HAspect.logger.info(HAspect.logMsg + id);
		
		int check = memberDao.memberidCheck(id);
		HAspect.logger.info(HAspect.logMsg + check);
	
		mav.addObject("check", check);
		mav.addObject("id", id);
		mav.setViewName("member/idCheck");
	}

โ€‹

 

 

SpringController-servlet.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
	
	<!-- AOP -->
	<bean id="hAspect" class="com.java.aop.HAspect"/>
	<aop:config>
		<aop:aspect id="exAspect" ref="hAspect">
			<aop:pointcut expression="within(com.java.*)" id="pMethod"/>
			<aop:around method="advice" pointcut-ref="pMethod"/>
		</aop:aspect>
	</aop:config>
	
	
	<!-- Spring DB -->
	<bean id="driverManagerDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
		<property name="username" value="mvc"/>
		<property name="password" value = "1234"/>
	</bean>

	
	<!-- MyBatis -->
	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="driverManagerDataSource"></property>
		<property name="mapperLocations" value="classpath:com/java/member/dao/mapper/MemberMapper.xml"></property>
	</bean>
	
	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg ref="sqlSessionFactoryBean"/>
	</bean>

	
	<!-- member bean -->
	
	<!-- HandlerMapping / UI์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„๋ผ -->
	<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/member/*.do">memberController</prop>
			</props>
		</property>
	</bean>
	
	<bean id="propertiesMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
		<property name="mappings">
			<props>
				<prop key="/member/test.do">testing</prop>
				<prop key="/member/register.do">memberRegister</prop>
				<prop key="/member/registerOk.do">memberRegisterOk</prop>
				<prop key="/member/idCheck.do">memberidCheck</prop>
			</props>
		</property>
	
	</bean>
	
	<!-- MemberController -->
	<bean id="memberController" class="com.java.member.controller.MemberController">
		<constructor-arg ref="memberServiceImp"/>
		<property name="methodNameResolver" ref="propertiesMethodNameResolver"/>
	</bean>
	
	<!-- MemberService -->
	<bean id="memberServiceImp" class="com.java.member.service.MemberServiceImp">
		<constructor-arg ref="memberDaoImp"/>
	</bean>
	
	<!-- MemberDAO -->
	<bean id="memberDaoImp" class="com.java.member.dao.MemberDaoImp">
		<property name="sqlSessionTemplate" ref="sqlSessionTemplate"></property>
	</bean>

	
	<!-- MVC RequestDispatcher / forward -->
	<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"/>
		<property name="suffix" value=".jsp"></property>
	</bean>	
</beans>

 

MemberController.java

package com.java.member.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import org.springframework.web.servlet.view.InternalResourceView;

import com.java.aop.HAspect;
import com.java.member.dto.MemberDto;
import com.java.member.service.MemberService;

public class MemberController extends MultiActionController{	//Command
	private MemberService memberService;

	public MemberController() {}
	
	public MemberController(MemberService memberService) {
		this.memberService = memberService;
	}

	public void setMemberService(MemberService memberService) {
		this.memberService = memberService;
	}
	
	public ModelAndView testing(HttpServletRequest request, HttpServletResponse response) {
		System.out.println("OK");
		
		//Service - Dao / Dto - Service
		//์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋Š” View
		/*
		InternalResourceView view = new InternalResourceView("/WEB-INF/member/test.jsp");
		ModelAndView mav = new ModelAndView();
		mav.addObject("msg", "hi");
		mav.setView(view);
		*/
		
		//๋‹ค์–‘ํ•œ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๊ธฐ์— ๊ทธ์— ๋งž์ถฐ์„œ ์‚ฌ์šฉ!!!
		//ModelAndView mav = new ModelAndView(view);
		ModelAndView mav = new ModelAndView("member/test");
		mav.addObject("msg", "hi");
		
		return mav;
	}
	
	public ModelAndView memberRegister(HttpServletRequest request, HttpServletResponse response) {
		return new ModelAndView("member/register");
	}
	
	public ModelAndView memberRegisterOk(HttpServletRequest request, HttpServletResponse response, MemberDto memberDto) {
		HAspect.logger.info(HAspect.logMsg + memberDto.toString());
		
		ModelAndView mav = new ModelAndView();
		mav.addObject("memberDto", memberDto);
		
		memberService.memberRegisterOk(mav);
		
		return mav;
	}
	
	public ModelAndView memberidCheck(HttpServletRequest request, HttpServletResponse response) {
		ModelAndView mav = new ModelAndView();
		mav.addObject("request", request);
		
		memberService.memberidCheck(mav);
		
		return mav;
	}
}

 

MemberDaoImp.java

package com.java.member.dao;

import org.mybatis.spring.SqlSessionTemplate;

import com.java.member.dto.MemberDto;

public class MemberDaoImp implements MemberDao {
	//My batis SqlSessionTemplate
	private SqlSessionTemplate  sqlSessionTemplate;
	
	public MemberDaoImp() {};

	
	public MemberDaoImp(SqlSessionTemplate sqlSessionTemplate) {

		this.sqlSessionTemplate = sqlSessionTemplate;
	}

	public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
		this.sqlSessionTemplate = sqlSessionTemplate;
	}

	@Override
	public int memberinsert(MemberDto memberDto) {
		return sqlSessionTemplate.insert("member_insert", memberDto);
	}
	
	@Override
	public int memberidCheck(String id) {
		String value =  sqlSessionTemplate.selectOne("id_check",id);
		
		int check = 0;
		if(value!=null) check=1;
		
		
		return check;
	}	
}

 

MemberServiceImp.java

package com.java.member.service;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.servlet.ModelAndView;

import com.java.aop.HAspect;
import com.java.member.dao.MemberDao;
import com.java.member.dto.MemberDto;

public class MemberServiceImp implements MemberService {
	private MemberDao memberDao;


	public MemberServiceImp() {}


	public MemberServiceImp(MemberDao memberDao) {
		this.memberDao = memberDao;
	}


	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}
	
	@Override
	public void memberRegisterOk(ModelAndView mav) {
		Map<String, Object> map = mav.getModelMap();
		MemberDto memberDto = (MemberDto)map.get("memberDto");
		
		memberDto.setMemberLevel("BA");
		
		int check = memberDao.memberinsert(memberDto);
		HAspect.logger.info(HAspect.logMsg + check);
		
		mav.addObject("check", check);
		mav.setViewName("member/registerOk");
		
	}
	
	@Override
	public void memberidCheck(ModelAndView mav) {
		Map<String, Object> map = mav.getModelMap();
		HttpServletRequest request = (HttpServletRequest)map.get("request");
		
		String id = request.getParameter("id");
		HAspect.logger.info(HAspect.logMsg + id);
		
		int check = memberDao.memberidCheck(id);
		HAspect.logger.info(HAspect.logMsg + check);
	
		mav.addObject("check", check);
		mav.addObject("id", id);
		mav.setViewName("member/idCheck");
	}	
}

 

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="MemberDto">

	<resultMap type="com.java.member.dto.MemberDto" id="member_dto">
		<result column="num" property="num"/>
		<result column="id" property="id"/>
		<result column="password" property="password"/>
		<result column="name" property="name"/>
		<result column="jumin1" property="jumin1"/>
		<result column="jumin2" property="jumin2"/>
		<result column="email" property="email"/>
		
		<result column="zipcode" property="zipcode"/>
		<result column="address" property="saddress"/>
		<result column="job" property="job"/>
		<result column="mailing" property="mailing"/>
		<result column="interest" property="interest"/>
		<result column="member_level" property="memberLevel"/>
		<result column="register_date" property="registerDate"/>
	</resultMap>

<!-- ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์€ parameterType ๋‚˜๊ฐ€๋Š” ๊ฒƒ์€ resultType id๋Š” ์‹๋ณ„์ž, insert๋Š” resultType ์ƒ๋žต -->
	<insert id="member_insert" parameterType="com.java.member.dto.MemberDto">
		insert into member values(
				member_num_seq.nextval,
				#{id},
				#{password},
				#{name},
				#{jumin1},
				#{jumin2},
				#{email},
				#{zipcode},
				#{address},
				#{job},
				#{mailing},
				#{interest},
				#{memberLevel},
				sysdate
		)
	</insert>
	
	 <select id="id_check" parameterType="java.lang.String" resultType="java.lang.String">
		select id from member 
				  where id = #{id}
	</select>
</mapper>
๋ฐ˜์‘ํ˜•
Comments