Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-05-19(목) 078일차 [Oracle, Spring Framework, Mybatis Framework] 서브쿼리, 회원 만들기, 로그인

옌炎 2022. 6. 17. 20:01
728x90

수업내용


1교시 (09:30-10:20)

  • SUBQUERY
SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO;

-- 다중행 연산자 IN, NOT IN, ANY, ALL, EXISTS

-- ANY 연산자
SELECT ENAME, SAL, JOB, DEPTNO
FROM EMP
WHERE DEPTNO != 30
AND SAL > ANY (SELECT SAL FROM EMP WHERE JOB = 'SALESMAN')
ORDER BY 2;

-- ALL 연산자
SELECT ENAME, SAL, JOB, DEPTNO
FROM EMP
WHERE SAL > ALL (SELECT SAL FROM EMP WHERE DEPTNO = 30);

SELECT * FROM EMP WHERE JOB = 'SALESMAN';

2교시 (10:30-11:20)

  • QUERY
-- EXISTS 연산자
-- 서브쿼리 데이터가 존재하는가를 체크해 존재 여부(TRUE, FALSE)를 결과로 반환한다.
-- EXISTS 절에는 반드시 메인쿼리와 연결되는 조인 조건을 가지고 있어야 한다.
-- 서브쿼리에서 결과 행을 찾으면, INNER QUERY 수행을 중단하고 TRUE를 반환한다.
SELECT * FROM EMP
WHERE EXISTS (SELECT DNAME FROM DEPT WHERE DEPTNO = 10);

SELECT * FROM EMP
WHERE EXISTS (SELECT DNAME FROM DEPT WHERE DEPTNO = 50);

SELECT DISTINCT A.DEPTNO, A.DNAME
FROM DEPT A, EMP B
WHERE A.DEPTNO = B.DEPTNO ORDER BY 1;

SELECT A.DEPTNO, A.DNAME
FROM DEPT A
WHERE EXISTS (SELECT 1 FROM EMP B WHERE B.DEPTNO = A.DEPTNO)
ORDER BY 1;

-- 다중 열(컬럼)(Multi-Column) 서브 쿼리
-- 결과 값이 두 개 이상의 컬럼을 반환하는 서브쿼리
SELECT EMPNO, SAL, DEPTNO
FROM EMP
WHERE (SAL, DEPTNO) IN (SELECT SAL, DEPTNO
                        FROM EMP
                        WHERE DEPTNO = 30
                        AND COMM IS NOT NULL);

3교시 (11:30-12:20)

회원 만들기

  • 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="a.b.c.com.kosmo.product.vo.KosmoProductVO" alias="kosmoproductvo"/>
		<typeAlias type="a.b.c.com.kosmo.cart.vo.KosmoCartVO" alias="kosmocartvo" />
		<typeAlias type="a.b.c.com.kosmo.mem.vo.KosmoMemberVO" alias="kosmomembervo"/>	
	</typeAliases>
</configuration>
  • spring_member.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="a.b.c.com.kosmo.mem.dao.KosmoMemberDAO">

<insert id="kosmoMemberInsert" parameterType="kosmomembervo" >
	
	INSERT INTO KOSMO_MEMBER (	KMNUM, KMID, KMPW, 
								KMNAME, KMHP, KMEMAIL,
								KMZONE, KMROAD, KMROAD2,
								KMJIBUN, KMIMAGE, DELETEYN, 
								INSERTDATE, UPDATEDATE)
            			VALUES( #{kmnum}, 
            					#{kmid}, 
            					#{kmpw}, 
            					#{kmname}, 
            					#{kmhp}, 
            					#{kmemail},             					
            					#{kmzone}, 
            					#{kmroad},
            					#{kmroad2},
            					#{kmjibun},
            					#{kmimage}, 
            					'Y', 
            					SYSDATE, 
            					SYSDATE)
</insert>

<select id="kosmoMemberSelectAll" parameterType="kosmomembervo" resultType="kosmomembervo">	
	
		SELECT 	A.KMNUM 	KMNUM
		       ,A.KMID 		KMID
		       ,A.KMPW 		KMPW
		       ,A.KMNAME 	KMNAME
		       ,A.KMHP 		KMHP
		       ,A.KMEMAIL 	KMEMAIL
		       ,A.KMZONE 	KMZONE
		       ,A.KMROAD 	KMROAD
		       ,A.KMROAD2 	KMROAD2
		       ,A.KMJIBUN 	KMJIBUN
		       ,A.KMIMAGE 	KMIMAGE		     
		       ,A.DELETEYN 	DELETEYN
		       ,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD') INSERTDATE
		       ,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD') UPDATEDATE	 		      
		FROM 	KOSMO_MEMBER A
		WHERE 	A.DELETEYN = 'Y' 	
		ORDER BY 1 DESC  
	
</select>

<select id="kosmoMemberSelect" parameterType="kosmomembervo" resultType="kosmomembervo">	
	
		SELECT 	A.KMNUM 	KMNUM
		       ,A.KMID 		KMID
		       ,A.KMPW 		KMPW
		       ,A.KMNAME 	KMNAME
		       ,A.KMHP 		KMHP
		       ,A.KMEMAIL 	KMEMAIL
		       ,A.KMZONE 	KMZONE
		       ,A.KMROAD 	KMROAD
		       ,A.KMROAD2 	KMROAD2
		       ,A.KMJIBUN 	KMJIBUN
		       ,A.KMIMAGE 	KMIMAGE		     
		       ,A.DELETEYN 	DELETEYN
		       ,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD') INSERTDATE
		       ,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD') UPDATEDATE	 		      
		FROM 	KOSMO_MEMBER A
		WHERE 	A.DELETEYN = 'Y' 	
		AND    A.KMNUM = #{kmnum} 
	
</select>

<select id="kosmoIdCheck" parameterType="kosmomembervo" resultType="kosmomembervo">	
	
		SELECT 
		        A.KMID 		KMID
		FROM 	KOSMO_MEMBER A
		WHERE 	A.DELETEYN = 'Y' 	
		AND     A.KMID = #{kmid} 
	
</select>

</mapper>
  • spring_chabun.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="a.b.c.com.kosmo.common.dao.SpringChabunDAO">

<select id="getProductChabun" resultType="kosmoproductvo">
	SELECT /*+ INDEX_DESC(A SYS_C0012888) */ NVL(MAX(SUBSTR(A.KPNUM, -4)), 0) + 1  KPNUM FROM KOSMO_PRODUCT A
</select>

<select id="getCartChabun" resultType="kosmocartvo">
	SELECT /*+ INDEX_DESC(A SYS_C0011101) */ NVL(MAX(SUBSTR(A.KCNUM, -4)), 0) + 1  KCNUM FROM KOSMO_CART A
</select>

<select id="getMemberChabun" resultType="kosmomembervo">
	SELECT /*+ INDEX_DESC(A SYS_C0011102) */ NVL(MAX(SUBSTR(A.KMNUM, -4)), 0) + 1  KMNUM FROM KOSMO_MEMBER A
</select>

</mapper>
  • KosmoMemberVO.java
package a.b.c.com.kosmo.mem.vo;

public class KosmoMemberVO {
	
	private String kmnum;
	private String kmid;
	private String kmpw;
	private String kmname;
	private String kmhp;
	private String kmemail;
	private String kmzone;
	private String kmroad;
	private String kmroad2;
	private String kmjibun;
	private String kmimage;
	private String deleteyn;
	private String insertdate;
	private String updatedate;
	
	// 생성자 
	public KosmoMemberVO() {
		
	}
	
	public KosmoMemberVO(String kmnum, String kmid, String kmpw, String kmname, String kmhp, String kmemail,
			String kmzone, String kmroad, String kmroad2, String kmjibun, String kmimage, String deleteyn,
			String insertdate, String updatedate) {
		
		this.kmnum = kmnum;
		this.kmid = kmid;
		this.kmpw = kmpw;
		this.kmname = kmname;
		this.kmhp = kmhp;
		this.kmemail = kmemail;
		this.kmzone = kmzone;
		this.kmroad = kmroad;
		this.kmroad2 = kmroad2;
		this.kmjibun = kmjibun;
		this.kmimage = kmimage;
		this.deleteyn = deleteyn;
		this.insertdate = insertdate;
		this.updatedate = updatedate;
	}



	// setter/getter
	public String getKmnum() {
		return kmnum;
	}

	public String getKmid() {
		return kmid;
	}

	public String getKmpw() {
		return kmpw;
	}

	public String getKmname() {
		return kmname;
	}

	public String getKmhp() {
		return kmhp;
	}

	public String getKmemail() {
		return kmemail;
	}

	public String getKmzone() {
		return kmzone;
	}

	public String getKmroad() {
		return kmroad;
	}

	public String getKmroad2() {
		return kmroad2;
	}

	public String getKmjibun() {
		return kmjibun;
	}

	public String getKmimage() {
		return kmimage;
	}

	public String getDeleteyn() {
		return deleteyn;
	}

	public String getInsertdate() {
		return insertdate;
	}

	public String getUpdatedate() {
		return updatedate;
	}

	public void setKmnum(String kmnum) {
		this.kmnum = kmnum;
	}

	public void setKmid(String kmid) {
		this.kmid = kmid;
	}

	public void setKmpw(String kmpw) {
		this.kmpw = kmpw;
	}

	public void setKmname(String kmname) {
		this.kmname = kmname;
	}

	public void setKmhp(String kmhp) {
		this.kmhp = kmhp;
	}

	public void setKmemail(String kmemail) {
		this.kmemail = kmemail;
	}

	public void setKmzone(String kmzone) {
		this.kmzone = kmzone;
	}

	public void setKmroad(String kmroad) {
		this.kmroad = kmroad;
	}

	public void setKmroad2(String kmroad2) {
		this.kmroad2 = kmroad2;
	}

	public void setKmjibun(String kmjibun) {
		this.kmjibun = kmjibun;
	}

	public void setKmimage(String kmimage) {
		this.kmimage = kmimage;
	}

	public void setDeleteyn(String deleteyn) {
		this.deleteyn = deleteyn;
	}

	public void setInsertdate(String insertdate) {
		this.insertdate = insertdate;
	}

	public void setUpdatedate(String updatedate) {
		this.updatedate = updatedate;
	}	
}
  • SpringChabunDAO.java
package a.b.c.com.kosmo.common.dao;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

public interface SpringChabunDAO {

	public KosmoProductVO getProductChabun();
	public KosmoCartVO getCartChabun();
	public KosmoMemberVO getMemberChabun();
}
  • SpringChabunDAOImpl.java
package a.b.c.com.kosmo.common.dao;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

@Repository
public class SpringChabunDAOImpl implements SpringChabunDAO {

	Logger logger = LogManager.getLogger(SpringChabunDAOImpl.class);
	
	@Autowired(required=false)
	private SqlSessionTemplate sqlSession;
	
	@Override
	public KosmoProductVO getProductChabun() {
		// TODO Auto-generated method stub
		return sqlSession.selectOne("getProductChabun");
	}
	
	@Override
	public KosmoCartVO getCartChabun() {
		// TODO Auto-generated method stub
		return sqlSession.selectOne("getCartChabun");
	}
	
	@Override
	public KosmoMemberVO getMemberChabun() {
		// TODO Auto-generated method stub
		logger.info("SpringChabunDAOImpl getMemberChabun >>> : ");
		return sqlSession.selectOne("getMemberChabun"); // getMemberChabun
	}
}
  • SpringChabunService.java
package a.b.c.com.kosmo.common.service;

import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

public interface SpringChabunService {

	public KosmoProductVO getProductChabun();
	public KosmoCartVO getCartChabun();
	public KosmoMemberVO getMemberChabun();
}
  • SpringChabunServiceImpl.java
package a.b.c.com.kosmo.common.service;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import a.b.c.com.kosmo.common.dao.SpringChabunDAO;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;
import a.b.c.com.kosmo.cart.vo.KosmoCartVO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

@Service
@Transactional
public class SpringChabunServiceImpl implements SpringChabunService {

	Logger logger = LogManager.getLogger(SpringChabunServiceImpl.class);
	
	@Autowired(required=false)
	private SpringChabunDAO springChabunDAO;
	
	@Override
	public KosmoProductVO getProductChabun() {
		// TODO Auto-generated method stub
		logger.info("SpringChabunServiceImpl getProductChabun >>> : ");
		return springChabunDAO.getProductChabun();
	}

	@Override
	public KosmoCartVO getCartChabun() {
		// TODO Auto-generated method stub
		logger.info("SpringChabunServiceImpl getCartChabun >>> : ");
		
		return springChabunDAO.getCartChabun();
	}
	
	@Override
	public KosmoMemberVO getMemberChabun() {
		// TODO Auto-generated method stub
		logger.info("SpringChabunServiceImpl getMemberChabun >>> : ");
		return springChabunDAO.getMemberChabun();
	}
}
  • CommonUtils.java
package a.b.c.com.kosmo.common;

public abstract class CommonUtils {
	
	// 게시판
	public static final String PRODUCT_IMG_UPLOAD_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_kosmo_spring_work\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\kosmoSpring\\fileupload\\product";	
	public static final int PRODUCT_IMG_FILE_SIZE = 10*1024*1024; // 10MB
	public static final String PRODUCT_EN_CODE = "UTF-8";
	
	// 상품 페이징  
	public static final int PRODUCT_PAGE_SIZE = 3;
	public static final int PRODUCT_GROUP_SIZE = 3;
	public static final int PRODUCT_CUR_PAGE = 1;
	public static final int PRODUCT_TOTAL_COUNT = 0;
	
	// 회원 
	public static final String MEMBER_IMG_UPLOAD_PATH = "C:\\00.KOSMO108\\30.Web\\eclipse_kosmo_spring_work\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\kosmoSpring\\fileupload\\mem";
	public static final int MEMBER_IMG_FILE_SIZE = 10*1024*1024; // 10MB
	public static final String MEMBER_EN_CODE = "UTF-8";
}
  • ChabunUtil.java
package a.b.c.com.kosmo.common;

public abstract class ChabunUtil {

	public static final String BIZ_GUBUN_P = "P"; // 상품
	public static final String BIZ_GUBUN_C 	= "C"; // 카트
	public static final String BIZ_GUBUN_M 	= "M"; // 회원
	
	// type : D : YYYYMMDD, M : YYYYMM, Y : YYYY, N;
	public static String numPad(String t, String c) {
		
		for (int i=c.length(); i < 4; i++) {
			c = "0" + c;
		}
		String ymd = DateFormatUtil.ymdFormats(t);
		
		return ymd.concat(c);
	}
	
	public static String getProductChabun(String type, String memNum) {
		return BIZ_GUBUN_P.concat(ChabunUtil.numPad(type, memNum));
	}
	
	public static String getCartChabun(String type, String memNum) {		
		return BIZ_GUBUN_C.concat(ChabunUtil.numPad(type, memNum));
	}
	
	public static String getMemberChabun(String type, String memNum) {		
		return BIZ_GUBUN_M.concat(ChabunUtil.numPad(type, memNum));
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String c = "1";
		System.out.println(">>> : " + ChabunUtil.getProductChabun("m", c));
	}
}
  • CodeUtil.java
package a.b.c.com.kosmo.common;

public class CodeUtil {

	// 성별 라벨
	public static final String[] gender_value = {"여자","남자"};
	
	// 핸드폰 라벨
	public static final String[] hp_value = {"010", "011", "016", "017"};
		
	// 전화번호 라벨
	public static final String[] tel_value = {"02", "031", "041", "051", "061"};
	
	// 취미 라벨
	public static final String[] hobby_lavel = {"알고리즘", "코딩", "분석설계", "데이터베이스", "스크립트"};
	public static final String[] hobby_value = {"01", "02", "03", "04", "05"};
	
	// 생년월일 
	public static String birth(String s) {

		String s0 = "";
		String s1 = "";
		String s2 = "";
		String ss = "";
		
		if (s !=null && s.length() > 0){			
			int sLen = s.length();			
			if (8 == sLen) {
				s0 = s.substring(0, 4);
				s1 = s.substring(4, 6);
				s2 = s.substring(6);				
				ss = s0 + "-" + s1 + "-" + s2;
			}
		}		
		return ss;
	}
	
	// 성별
	public static String gender(String s) {
		return "01".equals(s.toUpperCase()) ? "여자" : "남자";
	}
	
	// 전화번호 
	public static String tel(String s) {

		String s0 = "";
		String s1 = "";
		String s2 = "";
		String ss = "";
		
		if (s !=null && s.length() > 0){			
			int sLen = s.length();			
			if (10 == sLen) {
				s0 = s.substring(0, 2);
				s1 = s.substring(2, 6);
				s2 = s.substring(6);
				ss = s0 + "-" + s1 + "-" + s2;
			}		
			if (11 == sLen) {
				s0 = s.substring(0, 3);
				s1 = s.substring(3, 7);
				s2 = s.substring(7);
				ss = s0 + "-" + s1 + "-" + s2;
			}
		}
		return ss;
	}
	
	// 핸드폰 
	public static String hp(String s) {

		String s0 = "";
		String s1 = "";
		String s2 = "";
		String ss = "";
		
		if (s !=null && s.length() > 0){			
			int sLen = s.length();			
			if (11 == sLen) {
				s0 = s.substring(0, 3);
				s1 = s.substring(3, 7);
				s2 = s.substring(7);
				ss = s0 + "-" + s1 + "-" + s2;
			}
		}		
		return ss;
	}

	// 취미들 
	public static String hobbys(String s){
		System.out.println(s);
		String h = "";
		String ss[] = s.split(",");
		for (int i=0; i < ss.length; i++){			
			System.out.println(hobby(ss[i]));
			h += hobby(ss[i]) + " ";
		}		
		return h;
	}
	
	// 취미
	public static String hobby(String s) {
		
		String h = "";				
		if (s !=null && s.length() > 0){							
			for (int i=1; i < hobby_lavel.length; i++) {	
				if (("0" + i).equals(s)) {
					h = CodeUtil.hobby_lavel[i-1];
				}
			}			
		}		
		return h;
	}
	
	// 취미 value(코드) 세팅
	public static String setHobby(String s) {
		
		String h = "";						
		for (int i=0; i < CodeUtil.hobby_lavel.length; i++) {			
			if (CodeUtil.hobby_lavel[i].equals(s)) {
				h = CodeUtil.hobby_value[i];
			}			
		}		
		return h;
	}
	
	// 취미, 직업 value(코드) 세팅
	public static int getComboIndex(String s) {		
		int c = 0;			
		if ("01".equals(s)) { c = 0; }		
		if ("02".equals(s)) { c = 1; }		
		if ("03".equals(s)) { c = 2; }
		if ("04".equals(s)) { c = 3; }		
		if ("05".equals(s)) { c = 4; }		
		if ("06".equals(s)) { c = 5; }
		return c;
	}	
		
	public static void main(String args[]) {
		
		// 생년월일
		String b = CodeUtil.birth("20210801");		
		System.out.println("b >>> : " + b);
		
		// 전화번호
		String t = CodeUtil.tel("03212341234");		
		System.out.println("t >>> : " + t);
		
		// 핸드폰
		String hp = CodeUtil.tel("01012341234");		
		System.out.println("hp >>> : " + hp);		
		
		// 성별
		String g = CodeUtil.gender("02");
		System.out.println("g >>> : " + g);
		// 취미
		String h = CodeUtil.hobby("02");
		System.out.println("h >>> : " + h);
		// 취미들
		String hs = CodeUtil.hobbys("01,02,03,");
		System.out.println("hs >>> : " + hs);
	}	
}

4교시 (12:30-13:20)

회원 만들기

  • KosmoMemberDAO.java
package a.b.c.com.kosmo.mem.dao;

import java.util.List;

import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

public interface KosmoMemberDAO {
	
	public int kosmoMemberInsert(KosmoMemberVO kmvo);
	public List<KosmoMemberVO> kosmoMemberSelectAll(KosmoMemberVO kmvo);
	public List<KosmoMemberVO> kosmoMemberSelect(KosmoMemberVO kmvo);
	public List<KosmoMemberVO> kosmoIdCheck(KosmoMemberVO kmvo);
	
}
  • KosmoMemberDAOImpl.java
package a.b.c.com.kosmo.mem.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

@Repository
public class KosmoMemberDAOImpl implements KosmoMemberDAO {
	Logger logger = LogManager.getLogger(KosmoMemberDAOImpl.class);
	
	@Autowired(required=false)
	private SqlSession sqlSession;

	@Override
	public int kosmoMemberInsert(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoMemberDAOImpl kosmoMemberInsert 함수 진입 >>> : ");			
		return (Integer)sqlSession.insert("kosmoMemberInsert", kmvo);
	}

	@Override
	public List<KosmoMemberVO> kosmoMemberSelectAll(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoMemberDAOImpl kosmoMemberSelectAll 함수 진입 >>> : ");
		return sqlSession.selectList("kosmoMemberSelectAll", kmvo);
	}

	@Override
	public List<KosmoMemberVO> kosmoMemberSelect(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoMemberDAOImpl kosmoMemberSelect 함수 진입 >>> : ");
		return sqlSession.selectList("kosmoMemberSelect", kmvo);
	}

	@Override
	public List<KosmoMemberVO> kosmoIdCheck(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoMemberDAOImpl kosmoIdCheck 함수 진입 >>> : ");
		return sqlSession.selectList("kosmoIdCheck", kmvo);
	}
}
  • KosmoMemberService.java
package a.b.c.com.kosmo.mem.service;

import java.util.List;

import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

public interface KosmoMemberService {

	public int kosmoMemberInsert(KosmoMemberVO kmvo);
	public List<KosmoMemberVO> kosmoMemberSelectAll(KosmoMemberVO kmvo);
	public List<KosmoMemberVO> kosmoMemberSelect(KosmoMemberVO kmvo);
	public List<KosmoMemberVO> kosmoIdCheck(KosmoMemberVO kmvo);

}
  • KosmoMemberServiceImpl.java
package a.b.c.com.kosmo.mem.service;

import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import a.b.c.com.kosmo.mem.dao.KosmoMemberDAO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

@Service
@Transactional
public class KosmoMemberServiceImpl implements KosmoMemberService {
	Logger logger = LogManager.getLogger(KosmoMemberServiceImpl.class);
	
	// 서비스에서 DAO 연결하기 
	// 필드 @Autowired 어노테이션으로  DI (의존성 주입하기)
	@Autowired(required=false)
	private KosmoMemberDAO kosmoMemberDAO;

	@Override
	public int kosmoMemberInsert(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoMemberServiceImpl kosmoMemberInsert 함수 진입 >>> : ");			
		return kosmoMemberDAO.kosmoMemberInsert(kmvo);
	}

	@Override
	public List<KosmoMemberVO> kosmoMemberSelectAll(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoMemberServiceImpl kosmoMemberSelectAll 함수 진입 >>> : ");			
		return kosmoMemberDAO.kosmoMemberSelectAll(kmvo);
	}

	@Override
	public List<KosmoMemberVO> kosmoMemberSelect(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoMemberServiceImpl kosmoMemberSelect 함수 진입 >>> : ");			
		return kosmoMemberDAO.kosmoMemberSelect(kmvo);
	}

	@Override
	public List<KosmoMemberVO> kosmoIdCheck(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoMemberServiceImpl kosmoIdCheck 함수 진입 >>> : ");			
		return kosmoMemberDAO.kosmoIdCheck(kmvo);
	}

}
  • KosmoMemberController.java
package a.b.c.com.kosmo.mem.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import a.b.c.com.kosmo.common.ChabunUtil;
import a.b.c.com.kosmo.common.CommonUtils;
import a.b.c.com.kosmo.common.FileUploadUtil;
import a.b.c.com.kosmo.common.service.SpringChabunService;
import a.b.c.com.kosmo.mem.service.KosmoMemberService;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;
import a.b.c.com.kosmo.product.vo.KosmoProductVO;

@Controller("mem.Controller")
public class KosmoMemberController {
	Logger logger = LogManager.getLogger(KosmoMemberController.class);
	
	// 필드 오토와이어드 
	@Autowired(required=false)	
	private SpringChabunService springChabunService;
	
	// 필드 오토와이어드 
	@Autowired(required=false)
	private KosmoMemberService kosmoMemberService;
	
	// 회원 입력 폼
	@RequestMapping(value="kosmoMemberInsertForm", method=RequestMethod.GET)
	public String kosmoMemberInsertForm() {
		logger.info("KosmoMemberController kosmoMemberInsertForm 함수 진입 >>> : ");	
		return "mem/kosmoMemberInsertForm";
	}
	
	// 회원 등록
	@RequestMapping(value="kosmoMemberInsert", method=RequestMethod.POST)
	public String kosmoMemberInsert(HttpServletRequest req) {
		logger.info("KosmoMemberController kosmoMemberInsert 함수 진입 >>> : ");	
		
		// 채번 구하기
		String kmnum = ChabunUtil.getMemberChabun("D", springChabunService.getMemberChabun().getKmnum());
		logger.info("KosmoMemberController kosmoMemberInsert kmnum >>> : " + kmnum);
		
		
		// 이미지 업로드 
		FileUploadUtil fu = new FileUploadUtil(	 CommonUtils.MEMBER_IMG_UPLOAD_PATH
								                ,CommonUtils.MEMBER_IMG_FILE_SIZE
								                ,CommonUtils.MEMBER_EN_CODE);
		
		// 이미지 파일 원본 사이즈 
		boolean bool = fu.imgfileUpload(req);
			// 이미지 파일 원본 사이즈 크기 조절 하기 
			// boolean bool = fu.imgfileUploadSize(req);
		logger.info("KosmoMemberController kosmoMemberInsert bool >>> : " + bool);
		
		KosmoMemberVO _kmvo = null;
		_kmvo = new KosmoMemberVO();
			
		_kmvo.setKmnum(kmnum);
		_kmvo.setKmid(fu.getParameter("kmid"));
		_kmvo.setKmpw(fu.getParameter("kmpw"));
		_kmvo.setKmname(fu.getParameter("kmname"));
		String kmhp = fu.getParameter("kmhp");
		kmhp = kmhp.concat(fu.getParameter("kmhp1")).concat(fu.getParameter("kmhp2"));
		_kmvo.setKmhp(kmhp);
		String kmemail = fu.getParameter("kmemail");
		kmemail = kmemail.concat("@").concat(fu.getParameter("kmemail1"));
		_kmvo.setKmemail(kmemail);
		_kmvo.setKmzone(fu.getParameter("kmzone"));
		_kmvo.setKmroad(fu.getParameter("kmroad"));
		_kmvo.setKmroad2(fu.getParameter("kmroad2"));
		_kmvo.setKmjibun(fu.getParameter("kmjibun"));		
		_kmvo.setKmimage(fu.getFileName("kmimage"));
		
		// 서비스 호출
		int nCnt = kosmoMemberService.kosmoMemberInsert(_kmvo);
		logger.info("KosmoMemberController kosmoMemberInsert nCnt >>> : " + nCnt);
		
		if (nCnt > 0) { return "mem/kosmoMemberInsert";}
		return "mem/kosmoMemberInsertForm";
	}
	
	// 회원 목록 페이징 조회
	@RequestMapping(value="kosmoMemberSelectAll", method=RequestMethod.GET)
	public String kosmoMemberSelectAll(KosmoMemberVO kmvo, Model model) {
		logger.info("KosmoMemberController kosmoMemberSelectAll 함수 진입 >>> : ");
		
		// 서비스 호출
		List<KosmoMemberVO> listAll = kosmoMemberService.kosmoMemberSelectAll(kmvo);		
		if (listAll.size() > 0) { 
			logger.info("KosmoMemberController kosmoMemberSelectAll listAll.size() >>> : " + listAll.size());
					
			model.addAttribute("listAll", listAll);
			return "mem/kosmoMemberSelectAll";
		}		
		return "mem/kosmoMemberInsertForm";
	}
	
	// 회원 조회 
	@RequestMapping(value="kosmoMemberSelect", method=RequestMethod.GET)
	public String kosmoMemberSelect(KosmoMemberVO kmvo, Model model) {
		logger.info("KosmoMemberController kosmoMemberSelect 함수 진입 >>> : ");
		
		// 상품번호 확인해보기
		logger.info("KosmoMemberController kosmoMemberSelect 함수 진입::: kpvo.getKmnum() >>> : " + kmvo.getKmnum());
		
		// 서비스 호출
		List<KosmoMemberVO> listS = kosmoMemberService.kosmoMemberSelect(kmvo);		
		if (listS.size() > 0) { 
			logger.info("KosmoMemberController kosmoMemberSelect listS.size() >>> : " + listS.size());
					
			model.addAttribute("listS", listS);
			return "mem/kosmoMemberSelect";
		}		
		return "mem/kosmoMemberSelectAll";
	}
	
	// 아이디 중복 체크하기
	@RequestMapping(value="kosmoIdCheck", method=RequestMethod.POST)
	@ResponseBody
	public Object kosmoIdCheck(KosmoMemberVO kmvo) {
		logger.info("KosmoMemberController memIdCheck 함수 진입 >>> :");		
		logger.info("KosmoMemberController memIdCheck kmvo.getKmid()() >>> : " + kmvo.getKmid());			
		
		List<KosmoMemberVO> list = kosmoMemberService.kosmoIdCheck(kmvo);			
		logger.info("KosmoMemberController kosmoMemberService list.size() >>> : " + list.size());
		
		String msg = "";		
		if (list.size() == 0) {msg = "ID_YES";}  
		else { msg = "ID_NO";}  
		
		return msg;		
	}

}

5교시 (14:30-15:20)

회원 만들기

  • kosmoMemberInsert.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>kosmoMemberInsert.jsp</h3>
<hr>
<script>
	location.href="/kosmoSpring/kosmoMemberSelectAll.k";
</script>
</body>
</html>
  • kosmoMemberInsertForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
<script type="text/javascript">

	$(document).ready(function(){
		
		// 아이디 중복체크 시작  ================================================= 		
		$("#midbtn").click(function(){				
			console.log("idCheck >>> : ");
			
			let midVal = $("#kmid").val();
			if (midVal == '') {
				alert("중복 체크할 아이디를 입력하세요 >>> : ");
				$("#kmid").focus();
				return false;
			}
		});
				
		// 아이디 중복체크 Ajax 비동기 방식		
		$(document).on("click", "#kmidbtn", function(){
			alert("kmidbtn >>> : ");

			let idCheckURL = "kosmoIdCheck.k";
			let reqType = "POST";
			let dataParam = { kmid: $("#kmid").val(), };
			
			$.ajax({
				url: idCheckURL,
				type: reqType,								
				data: dataParam,	            
				success: whenSuccess,
				error: whenError
			});
			
			function whenSuccess(resData){	
				if ("ID_YES" == resData){
					alert("아이디 사용가능 : ID_YES.");														
					$("#kmid").css('background-color','yellow');	
					$("#kmid").attr("readonly", true);
					$("#kmpw").focus();	
				}else if ("ID_NO" == resData){
					alert("이미 아이디 사용중 : ID_NO.");
					$("#kmid").val('');
					$("#kmid").focus();
				};				
			}
			function whenError(e){
				alert("e >>> : " + e.responseText);
			}
		});
		
		
		// 비밀번호 체크 
		$("#pwCheck").click(function(){
			console.log(" pwCheck 함수 진입");
			var pw = $("#kmpw").val();
			var pw_r = $("#kmpw_r").val();	
			if(pw == pw_r) {
				alert("비밀번호가 같습니다.");
				 pw_r.val('');				
				$("#kmname").focus();						
				return true;
			} else {
				alert("비밀번호가 다릅니다.");
				pw.val('');
				pw_r.val('');			
				pw.focus();							
				return false;
			}
		});		
		
		// 핸드폰 
		
		// 이메일 
		$('#kmemail2').change(function(){	
			$("#kmemail2 option:selected").each(function () {
				if($(this).val()== '1'){ //직접입력일 경우 
						var aa = $("#kmemail1").val();						
						$("#kmemail1").val(''); //값 초기화 
						$("#kmemail1").attr("readonly",false); //활성화 				
				}else{ //직접입력이 아닐경우 
						$("#kmemail1").val($(this).text()); //선택값 입력 
						$("#kmemail1").attr("readonly",true); //비활성화 
				}
			}); 
		}); 	
		
		// 우편번호	
		$("#zoneBtn").click(function(){
			console.log("zonecode >>> : ");
			new daum.Postcode({
				oncomplete: function(data) {
				    $("#kmzone").val(data.zonecode); //5자리 새우편번호 사용
				    $("#kmroad").val(data.roadAddress); //도로명 주소
				    $("#kmjibun").val(data.jibunAddress); //지번주소			
				}
			}).open();
		});
		
		
		$(document).on('click', '#insertBtn', function(){
			
			$("#memForm").attr({"action":"kosmoMemberInsert.k","method":"POST","enctype":"multipart/form-data"}).submit();	
		});
	});
	
</script>
</head>
<body>
<h3 align="center">회원가입</h3>
<hr>
<form name="memForm" id="memForm">
<table border="1" align="center">
<tr>
	<td colspan="2" align="center">					
		<font size="4" style="color:blue;">KOSMO 108기</font> 
		<img src="/kosmoSpring/img/img_mandu/ase.gif" width="25" height="25" alt="image">
	</td>
</tr>
<tr>
	<td>회원번호</td>
	<td><input type="text" name="kmnum" id="kmnum" readonly/></td>
 </tr>
<tr>
	<td>아이디</td>
	<td>		
		<input type="text" name="kmid" id="kmid" placeholder="아이디 체크" />
		<input type="button" name="kmidbtn" id="kmidbtn" value="아이디중복확인"  />
	</td>
</tr>
</div>
<tr>
	<td>패스워드</td>
	<td>
		<input type="text" name="kmpw" id="kmpw" /><br/>	
		<input type="text" name="kmpw_r" id="kmpw_r" placeholder="비밀번호확인" />
		<input type="button" value="비밀번호확인" id="pwCheck"/><br/>
	</td>
</tr>
<tr>
	<td>이름</td>
	<td><input type="text" name="kmname" id="kmname"/></td>
</tr>
<tr>
	<td>핸드폰</td>
	<td>
		<select name="kmhp" id="kmhp">
        	<option value="010">010</option>
        	<option value="011">011</option>
        	<option value="016">016</option>
        	<option value="017">017</option>		        	
         </select>
         - <input type="text" name="kmhp1" id="kmhp1" size="2" maxlength="4" />
         - <input type="text" name="kmhp2" id="kmhp2" size="2" maxlength="4" />
	</td>
</tr>
<tr>
	<td>이메일</td>
	<td>		
		<input type="text" name="kmemail"  id="kmemail" style="width:100px"/>
		@ <input type="text" name="kmemail1" id="kmemail1" style="width:100px" placeholder="직접입력" />
		<select name="kmemail2" id="kmemail2">
        	 <option value="1" selected>직접입력</option>
       		 <option value="naver.com">naver.com</option>	       	   
      		 <option value="gmail.com">gmail.com</option>
      		 <option value="daum.net">daum.net</option>	       	   
         </select>
	</td>
</tr>
<tr>
 	<td>주소</td>
 	<td>
 		<input type="text" name="kmzone" id="kmzone" placeholder="우편번호" style="width:50px" maxlength="6" >
 		<input type="button" name="zoneBtn" id="zoneBtn" value="우편번호 찾기"><br>	 	
 		<input type="text" name="kmroad" id="kmroad" placeholder="도로명주소" style="width:250px"><br>	 	
 		<input type="text" name="kmroad2" id="kmroad2" placeholder="도로명주소 상세주소" style="width:250px"><br>	 	
 		<input type="text" name="kmjibun" id="kmjibun" placeholder="지번주소" style="width:250px">
 	</td>
</tr>	 
 <tr>
	<td>사진</td>
	<td> 
		<input type="file" name="kmimage"  /><br>
    </td>
</tr>
<tr>
	<td colspan="2"> 			
		<button type="button" id="insertBtn">보내기</button>
		<button type="reset">다시 </button>	
	</td>				
</tr>
</table>				 		        		     
</form>	

</body>
</html>
  • kosmoMemberSelect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="a.b.c.com.kosmo.mem.vo.KosmoMemberVO" %> 
<%@ page import="a.b.c.com.kosmo.common.CodeUtil" %> 
<%@ page import="java.util.List" %>

 <% request.setCharacterEncoding("UTF-8");%> 
<%	
	Object obj = request.getAttribute("listS");
	if (obj == null) return;

	List<KosmoMemberVO> list = (List<KosmoMemberVO>)obj;	
	int nCnt = list.size();
	
	String kmhp = "";
	String kmhp0 = "";
	String kmhp1 = "";
	String kmhp2 = "";
	String kmemail = "";	
	String kmemails[] = null;
	KosmoMemberVO _kmvo = null;
	if (nCnt == 1){
		_kmvo = list.get(0);

		// 핸드폰
		kmhp = CodeUtil.hp(_kmvo.getKmhp());
		String hp[] = kmhp.split("-");
		kmhp0 = hp[0];
		kmhp1 = hp[1];
		kmhp2 = hp[2];
		// 이메일
		kmemail = _kmvo.getKmemail();
		kmemails = kmemail.split("@");		
	}	
%> 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
<script type="text/javascript">

	$(document).ready(function(){	
		
		// 이메일 
		$('#kmemail2').change(function(){	
			$("#kmemail2 option:selected").each(function () {
				if($(this).val()== '1'){ //직접입력일 경우 
						var aa = $("#kmemail1").val();						
						$("#kmemail1").val(''); //값 초기화 
						$("#kmemail1").attr("readonly",false); //활성화 				
				}else{ //직접입력이 아닐경우 
						$("#kmemail1").val($(this).text()); //선택값 입력 
						$("#kmemail1").attr("readonly",true); //비활성화 
				}
			}); 
		}); 	
		
		// 우편번호	
		$("#zoneBtn").click(function(){
			console.log("zoneBtn >>> : ");
			new daum.Postcode({
				oncomplete: function(data) {
				    $("#kmzone").val(data.zonecode); 		//5자리 새우편번호 사용
				    $("#kmroad").val(data.roadAddress); 	//도로명 주소
				    $("#kmroad2").val(''); 					// 도로명 상세주소
				    $("#kmjibun").val(data.jibunAddress); 	//지번주소			
				}
			}).open();
		});
	});

	//  updateBtn
	$(document).on("click", "#updateBtn", function(){
		//alert("U >>> : ");		
		$("#memUpdateForm").attr({ "method":"GET"
			                      ,"action":"#kosmoMemberUpdate.k"}).submit();
	});
	//  deleteBtn
	$(document).on("click", "#deleteBtn", function(){
		//alert("D >>> : ");
		$("#memUpdateForm").attr({ "method":"GET"
			                      ,"action":"#kosmoMemberDelete.k"}).submit();
	});
	
	//  insertBtn
	$(document).on("click", "#insertBtn", function(){
		location.href="kosmoMemberInsertForm.k";
	});
	
	// selectBtn
	$(document).on("click", "#selectBtn", function(){		
		$("#memUpdateForm").attr({"method":"GET", "action":"kosmoMemberSelect.k"}).submit();		
	});
</script>
<style type="text/css">
	
	
	div {		 
		margin: 0 auto; 		
		border:1px solid #6d82f3;
		display:table;
	}			

	td, th {
		 padding: 5px;
	}

	h3 {
		text-align: center;
	}

	.tt {
		text-align: center;
	}
	
	.photo {
		border:1px solid red;
		width: 160px;
		height: 180px;
		display: block;
		margin-reft: auto;
		margin-rigth; auto;
	}
</style>
</head>
<body onload="compCheck()">  
<script>
function compCheck(){
	console.log("compCheck >>> 진입 >>> : ");
	
	// 핸드폰 
	var hp0 = "<%= kmhp0 %>";
	if ('010' == hp0){		
		document.memSelectForm.mhp.options[0].selected = true;
	}
	if ('011' == hp0){		
		document.memSelectForm.mhp.options[1].selected = true;
	}
	if ('016' == hp0){		
		document.memSelectForm.mhp.options[2].selected = true;
	}
	if ('017' == hp0){		
		document.memSelectForm.mhp.options[3].selected = true;
	}	
}

</script>
<h3>회원정보</h3>
<hr>
<div>
<form name="memUpdateForm" id="memUpdateForm">
<table border="1">
<tr>	
	<td colspan="3" align="center">						
		<font size="4" style="color:blue;">수정 && 삭제</font> 
		<img src="/kosmoSpring/img/img_mandu/ase.gif" width="25" height="25" alt="image">		
	</td>				
</tr>
<tr>
	<td>회원번호</td>
	<td>
		<input type="text" name="kmnum" id="kmnum"  value="<%= _kmvo.getKmnum() %>" readonly />
	</td>
	<td rowspan="5">
		<img class="photo" src="/kosmoSpring/fileupload/mem/<%= _kmvo.getKmimage() %>" alt="image">
	</td>	
</tr>
<tr>
	<td>이름</td>
	<td><input type="text" name="kmname" id="kmname" value="<%= _kmvo.getKmname() %>" readonly /></td>
</tr>
<tr>
	<td>아이디</td>
	<td>
		<input type="text" name="kmid" id="kmid" style="width:100px" value="<%= _kmvo.getKmid() %>" readonly />	
	</td>
</tr>
<tr>
	<td>패스워드</td>
	<td>
		<input type="text" name="kmpw" id="kmpw" style="width:100px" value="<%= _kmvo.getKmpw() %>" readonly /><br/>		
	</td>
</tr>
<tr>
	<td>핸드폰</td>
	<td>
		<select name="kmhp" id="kmhp" style="width:50px;">
        	<option value="010">010</option>
        	<option value="011">011</option>
        	<option value="016">016</option>
        	<option value="017">017</option>		        	
         </select>
         - <input type="text" name="kmhp1" id="kmhp1" value="<%= kmhp1 %>" maxlength="4" style="width:50px;"/>
         - <input type="text" name="kmhp2" id="kmhp2" value="<%= kmhp2 %>" maxlength="4" style="width:50px;"/>
	</td>
</tr>
<tr>
	<td>이메일</td>
	<td  colspan="2">		
		<input type="text" name="kmemail"  id="kmemail"  value="<%= kmemails[0] %>" style="width:100px"  />
		@ <input type="text" name="kmemail1" id="kmemail1"  value="<%= kmemails[0] %>" style="width:100px" 
			placeholder="직접입력" />
		<select name="kmemail2" id="kmemail2">
        	 <option value="1" selected>직접입력</option>
       		 <option value="naver.com">naver.com</option>	       	   
      		 <option value="gmail.com">gmail.com</option>
      		 <option value="daum.net">daum.net</option>	       	   
         </select>
	</td>
</tr>
<tr>
 	<td>주소</td>
 	<td   colspan="2">
 		<input type="text" name="kmzone" id="kmzone" 
 			placeholder="우편번호" style="width:50px" value="<%= _kmvo.getKmzone() %>" >
 		<input type="button" name="zoneBtn" id="zoneBtn" value="우편번호 찾기"><br>	 	
 		<input type="text" name="kmroad" id="kmroad" 
 			placeholder="도로명주소" style="width:250px" value="<%= _kmvo.getKmroad() %>" ><br>	 	
 		<input type="text" name="kmroad2" id="kmroad2" 
 			placeholder="도로명주소 상세주소" style="width:250px" value="<%= _kmvo.getKmroad2() %>" ><br>	 	
 		<input type="text" name="mjibun" id="mjibun"
 			 placeholder="지번주소" style="width:250px" value="<%= _kmvo.getKmjibun() %>">
 	</td>
</tr>	 
<tr>
	<td colspan="3" align="center">		
	<input type="button" value="수정" id='updateBtn' />
	<input type="button" value="삭제"  id='deleteBtn' />
    <input type="reset" value="취소" />
    &nbsp;&nbsp;&nbsp;&nbsp;
    <input type="button" value="입력"  id='insertBtn' />
	<input type="button" value="목록"  id='selectBtn' />
</td>	
<tr>			
</table>
</form>
</div>
</body>
</html>
  • kosmoMemberSelectAll.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="a.b.c.com.kosmo.mem.vo.KosmoMemberVO" %> 
<%@ page import="a.b.c.com.kosmo.common.CodeUtil" %> 
<%@ page import="java.util.List" %> 

<% request.setCharacterEncoding("UTF-8");%> 
<%	
	Object obj = request.getAttribute("listAll");
	List<KosmoMemberVO> list = (List<KosmoMemberVO>)obj;
	
	int nCnt = list.size();
	String nCntS = ":::: 전체 조회 건수  " + nCnt + " 건";	
%> 
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="/kosmoSpring/js/common.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script type="text/javascript">

	$(document).ready(function(){
		
		// kmnum 체크박스 체크 확인하기
		$(document).on("click", "#kmnum", function(){				
			if($(this).prop('checked')){			 			
				$('.kmnum').prop('checked',false);
				$(this).prop('checked',true);
			}
		});
		
		//  I
		$(document).on("click", "#insertBtn", function(){
			location.href="kosmoMemberInsertForm.h";
		});
		
		// SALL
		$(document).on("click", "#selectBtn", function(){		
			$("#memSelectAllForm").attr({"method":"GET", "action":"kosmoMemberSelectAll.k"}).submit();		
		});
				
		//  U
		$(document).on("click", "#updateBtn", function(){	
			if ($('.kmnum:checked').length == 0){
				alert("수정할 글번호 하나를 선택하세요!!");
				return;
			}
			$("#memberList").attr({ "method":"GET","action":"kosmoMemberSelect.k"}).submit();
		});
		//  D
		$(document).on("click", "#deleteBtn", function(){	
			if ($('.kmnum:checked').length == 0){
				alert("삭제할 글번호 하나를 선택하세요!!");
				return;
			}
			$("#memberList").attr({ "method":"GET", "action":"kosmoMemberSelect.k"}).submit();
		});
		
	});	

</script>
<style type="text/css">

	td, th {
		 padding: 5px;
	}

	h3, th {
		text-align: center;
	}
	.tt {
		text-align: center;
	}

</style>
</head>
<body>
<h3>회원목록</h3>
<hr>

<form name="memberList" id="memberList">
<table border="1" align="center">
<thead>
<tr>
<td colspan="9" ><%= nCntS %></td>
</tr>
<tr>
	<th><input type="checkbox" name="chkAll" id="chkAll"></td>
	<th>순번</td>
	<th>회원번호</td>
	<th>아이디</td>
	<th>이름</td>
	<th>핸드폰</td>
	<th>이메일</td>
	<th>주소</td>	
	<th>사진</td>		
</tr>
</thead>
<%
String hp = "";
String addr = "";
for(int i=0; i<nCnt; i++){		
	KosmoMemberVO _kmvo = list.get(i);	
	hp = CodeUtil.hp(_kmvo.getKmhp());
	addr = _kmvo.getKmzone().concat(" " + _kmvo.getKmroad()).concat(" " + _kmvo.getKmroad2());
%>
<tbody>
<tr>
	<td class="tt">
		<input type="checkbox" id="kmnum" name="kmnum" class="kmnum" value=<%= _kmvo.getKmnum() %> >
	</td>		
	<td class="tt"><%= i + 1 %></td>
	<td class="tt"><%= _kmvo.getKmnum() %> </td>
	<td class="tt"><%= _kmvo.getKmid() %> </td>
	<td class="tt"><%= _kmvo.getKmname() %> </td>
	<td class="tt"><%= hp %> </td>	
	<td class="tt"><%= _kmvo.getKmemail() %> </td>
	<td class="tt"><%= addr %> </td>
	<td class="tt"><img src="/kosmoSpring/fileupload/mem/<%= _kmvo.getKmimage() %> " border="1" width="25" height="25" alt="image"></td>				
</tr>	
<%
}//end of for
%>	
<tr>
	<td colspan="9" align="right">				
		<input type="button" value="등록" id="insertBtn">
		<input type="button" value="조회" id="selectBtn">
		<input type="button" value="수정" id="updateBtn">
		<input type="button" value="삭제" id="deleteBtn">									
	</td>
</tr>	
</tbody>	
</table>
</form>	
</body>
</html>
  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>index.jsp</h3>
	<hr>
	<a href="kosmoProductInsertForm.k">코스모 상품 입력</a><br>
	<a href="kosmoProductSelectAll.k">코스모 상품 전체 조회</a><br>
	<p>
	<a href="kosmoMemberInsertForm.k">코스모 회원 입력</a><br>
	<a href="kosmoMemberSelectAll.k">코스모 회원 전체조회</a><br>
</body>
</html>

6교시 (15:30-16:20)

로그인

  • spring_login.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="a.b.c.com.kosmo.login.dao.KosmoLoginDAO">

<select id="kosmoLoginCheck" parameterType="kosmomembervo" resultType="kosmomembervo">		
	SELECT 	
	        A.KMID 		KMID
	       ,A.KMPW 		KMPW
	FROM 	KOSMO_MEMBER A
	WHERE 	A.DELETEYN = 'Y' 	
	AND    A.KMID = #{kmid} 
	AND    A.KMPW = #{kmpw}
</select>

</mapper>
  • K_Session.java
package a.b.c.com.kosmo.common;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class K_Session {

	private static final String K_SESSION_ID = "KID";
	
	// 싱글톤 패턴 : Singleton pattern
	private static class LazyHolder {
		public static final K_Session SESSIONLISTENER_INSTANCE = new K_Session();
	}
	
	public static K_Session getInstance() {
		return LazyHolder.SESSIONLISTENER_INSTANCE;
	}
	
	public K_Session() {
		
	}
	
	public void killSession(final HttpServletRequest hReq) {
		
		HttpSession hSession = hReq.getSession(false);
		if (hSession != null) {
			hSession.removeAttribute(K_SESSION_ID);
			hSession.invalidate();
		}
	}
	
	public boolean setSession(final HttpServletRequest hReq, final String userID) {
		
		HttpSession hSession = hReq.getSession();
		String k_session_val = (String)hSession.getAttribute(K_SESSION_ID);
		int nCnt = 0;
		
		if (k_session_val != null) {
			boolean b1 = k_session_val.contentEquals(userID);
			
			if (b1) {
				nCnt++;
			} else {
				System.out.println("세션 없음 >>> : ");
			}
		} else {
			System.out.println("세션 없음 >>> : ");
		}
		
		if (nCnt == 0) {
			hSession.setAttribute(K_SESSION_ID, userID);
			hSession.setMaxInactiveInterval(60*60); // 9시간
			
			return false;
		}
		
		return true;
	}
	
	public String getSession(final HttpServletRequest hReq) {
		
		String strSession = "";
		HttpSession hSession = hReq.getSession(false);
		if (hSession != null) {
			strSession = (String)hSession.getAttribute(K_SESSION_ID);
		}
		return strSession;
	}
}
  • KosmoLoginDAO.java
package a.b.c.com.kosmo.login.dao;

import java.util.List;

import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

public interface KosmoLoginDAO {

	public List<KosmoMemberVO> kosmoLoginCheck(KosmoMemberVO kmvo);
}
  • KosmoLoginDAOImpl.java
package a.b.c.com.kosmo.login.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

@Repository
public class KosmoLoginDAOImpl implements KosmoLoginDAO {
	Logger logger = LogManager.getLogger(KosmoLoginDAOImpl.class);
	
	@Autowired(required=false)
	private SqlSession sqlSession;

	@Override
	public List<KosmoMemberVO> kosmoLoginCheck(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoLoginDAOImpl kosmoLoginCheck 함수 진입 >>> : ");
		return sqlSession.selectList("kosmoLoginCheck", kmvo);
	}

}
  • KosmoLoginService.java
package a.b.c.com.kosmo.login.service;

import java.util.List;

import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

public interface KosmoLoginService {

	public List<KosmoMemberVO> kosmoLoginCheck(KosmoMemberVO kmvo);
}
  • KosmoLoginServiceImpl.java
package a.b.c.com.kosmo.login.service;

import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import a.b.c.com.kosmo.login.dao.KosmoLoginDAO;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

@Service
@Transactional
public class KosmoLoginServiceImpl implements KosmoLoginService {
	Logger logger = LogManager.getLogger(KosmoLoginServiceImpl.class);
	
	// 서비스에서 DAO 연결하기 
	// 필드 @Autowired 어노테이션으로  DI (의존성 주입하기)
	@Autowired(required=false)
	private KosmoLoginDAO kosmoLoginDAO;

	@Override
	public List<KosmoMemberVO> kosmoLoginCheck(KosmoMemberVO kmvo) {
		// TODO Auto-generated method stub
		logger.info("KosmoLoginServiceImpl kosmoLoginCheck 함수 진입 >>> : ");
		return kosmoLoginDAO.kosmoLoginCheck(kmvo);
	}

}
  • KosmoLoginController.java
package a.b.c.com.kosmo.login.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import a.b.c.com.kosmo.common.K_Session;
import a.b.c.com.kosmo.login.service.KosmoLoginService;
import a.b.c.com.kosmo.mem.vo.KosmoMemberVO;

@Controller
public class KosmoLoginController {
	Logger logger = LogManager.getLogger(KosmoLoginController.class);
	
	// 필드 오토와이어드 
	@Autowired(required=false)
	private KosmoLoginService kosmoLoginService;
	
	// 로긴 폼
	@RequestMapping(value="kosmoLoginForm", method=RequestMethod.GET)
	public String kosmoLoginForm() {
		logger.info("KosmoLoginController kosmoLoginForm 함수 진입 >>> : ");	
		return "login/kosmoLoginForm";
	}
	
	@RequestMapping(value="kosmoLoginCheck", method=RequestMethod.GET)
	public String kosmoLoginCheck(HttpServletRequest req, KosmoMemberVO kmvo, Model model) {
		logger.info("KosmoLoginController kosmoLoginCheck 함수 진입 >>> : ");	
		
		// 서비스 호출
		List<KosmoMemberVO> listLogin = kosmoLoginService.kosmoLoginCheck(kmvo);
				
		if (listLogin.size() == 1) { 
			logger.info("KosmoLoginController loginCheck listLogin.size() >>> : " + listLogin.size());
			
			K_Session ks = K_Session.getInstance();			
			String kID = ks.getSession(req);
			
			if (kID !=null && kID.equals(listLogin.get(0).getKmid())){				
				logger.info("KosmoLoginController login >>> : 로그인 중 >>> : 다른 페이지로 이동 하기 >>> : " + kID);
				model.addAttribute("listLogin", listLogin);
				return "main/kosmoMainPage";
			}else {
				ks.setSession(req, kmvo.getKmid());
				logger.info("KosmoLoginController login >>> : 세션부여 하기  >>> : " + kmvo.getKmid());
				
				model.addAttribute("listLogin", listLogin);
				return "main/kosmoMainPage";
			}
		}		
		return "login/kosmoLoginForm";
	}
	
	@RequestMapping(value="kosmoLogout", method=RequestMethod.GET)
	public String kosmoLogout(HttpServletRequest req, KosmoMemberVO mvo, Model model) {	
		logger.info("KosmoLoginController kosmoLogout() 함수 진입 >>> : ");		
								
		K_Session ks = K_Session.getInstance();			
		ks.killSession(req);
		return "login/kosmoLogout";
	}
}

7교시 (16:30-17:20)

회원 만들기, 로그인

  • kosmoLogin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@page import="a.b.c.com.kosmo.mem.vo.KosmoMemberVO"%>  
<%@page import="java.util.List"%> 
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Login Session Testing :: LOGIN SUCCESS</h3>
<hr>
<% request.setCharacterEncoding("UTF-8"); %>
<%
	Object obj = request.getAttribute("listLogin");
	if (obj == null) return;
	
	List<KosmoMemberVO> list = (List<KosmoMemberVO>)obj;
	int nCnt = list.size();
	
	if (nCnt == 1){
		String kmid = list.get(0).getKmid();
%>
		<script>
			alert("<%= kmid %> 님 로그인 성공");
		</script>
		<div>
  			<a href="logout.k?kmid=<%= kmid %>">로그아웃 하기</a>
		</div>
<% 		
	}
%>
</body>
</html>
  • kosmoLoginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>LOGIN FORM</title>
<script  src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">

	$(document).ready(function(){
		$("#kmid").attr('placeholder', '아이디 ');
		$("#kmpw").attr('placeholder', '비밀번호 ');
		
		$("#loginBtn").click(function(){
			console.log("loginBtn >>> : ");
			
			$('#loginForm').attr({
				'action':"kosmoLoginCheck.k",
				'method':'GET',
				'enctype':'application/x-www-form-urlencoded'
			}).submit();
		});
	});
	
</script>
<style type="text/css">
	
	.div1{
		background: cyan;
		border: 1px solid red;
		width: 300px;
		height: 300px;
		margin: 100px auto;	
	}
		
</style>
</head>
<body>
<div class="div1">
<h1 align="center">Login Test</h1>
<hr>
<form name="loginForm" id="loginForm">
<table border="1" align="center">
<tr>
<td><input type="text" name="kmid" id="kmid" style="width:200px;"></td>
</tr>
<tr>
<td><input type="password" name="kmpw" id="kmpw" style="width:200px;"></td>
</tr>
<tr>
<td>
<button type="button" id="loginBtn" style="width:208px; background-color: yellow;">로그인</button>
</td>
</tr>
<tr>
<td align="right">
<a href="#idFindForm.k"><font size="2">아이디찾기</font></a> | 
<a href="#pwFindForm.k"><font size="2">비밀번호찾기<font></a>
</td>
</tr>
</table> 
</form>
</div>
</body>
</html>
  • kosmoLogout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>LOGOUT</title>
<style type="text/css">
	h3 {
		 text-align: center;
	}	
</style>
</head>
<body>
<h3>Login Session Testing :: LOGOUT SUCCESS</h3>
<hr>
</body>
</html>

8교시 (17:30-18:30)

회원 만들기, 로그인

  • index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>index.jsp</h3>
	<hr>
	<a href="kosmoProductInsertForm.k">코스모 상품 입력</a><br>
	<a href="kosmoProductSelectAll.k">코스모 상품  전체조회</a><br>
	<p>
	<a href="kosmoMemberInsertForm.k">코스모 회원 입력</a><br>
	<a href="kosmoMemberSelectAll.k">코스모 회원 전체조회</a><br>
	<p>
	<a href="kosmoLoginForm.k">코스모 로그인</a><br>
</body>
</html>


Notes


728x90