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="취소" />
<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