๐ป
์คํ๋ง ํ๋ ์์ํฌ - [Spring] ํฐ์บฃ ์๋ฒ ์ธํ / MVC ํ๋ก์ ํธ (2) ๋ณธ๋ฌธ
์คํ๋ง ํ๋ ์์ํฌ - [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>