Jam's story
[JSP] MVC2패턴으로 회원가입 구현 본문
- Member 테이블에 담기는 주소는 주소가 아닌 주소코드이기 때문에 MemAdr 테이블을 이용하여 메인주소와 상세주소를 담아주어야 합니다. 그렇기 때문에 MemberDTO에 추가로 MemAdrDTO 객체를 만들었습니다.
- 주소코드는 회원정보의 외래키로 속하기 때문에, 주소테이블의 데이터를 먼저 처리해야 합니다.
- (SQL) Insert문에서 여러 값을 넣을때는 (Member와 MemAdr 테이블을 조인한 ) 서브쿼리를 사용할 수 없기 때문에 (값 1개만 넣을때는 편법으로 가능하다고 합니다.) 먼저 주소테이블에 데이터를 넣어주는 메소드를 실행시키고, 그 후에 멤버테이블에 고객정보를 넣어주는 메소드를 실행 시켰습니다.
MemberDTO
package domain;
public class MemberDTO {
private String mem_code;
private String mem_id;
private String mem_pw;
private String mem_gender;
private String mem_name;
private String mem_tel;
private String mem_lan;
private String adr_code;
private int check;
public MemberDTO() {
super();
}
public MemberDTO(String mem_code, String mem_id, String mem_pw, String mem_gender, String mem_name, String mem_tel,
String mem_lan, String adr_code, int check) {
super();
this.mem_code = mem_code;
this.mem_id = mem_id;
this.mem_pw = mem_pw;
this.mem_gender = mem_gender;
this.mem_name = mem_name;
this.mem_tel = mem_tel;
this.mem_lan = mem_lan;
this.adr_code = adr_code;
this.check = check;
}
//회원가입을 위한
public MemberDTO(String mem_id, String mem_pw, String mem_gender, String mem_name, String mem_tel) {
super();
this.mem_id = mem_id;
this.mem_pw = mem_pw;
this.mem_gender = mem_gender;
this.mem_name = mem_name;
this.mem_tel = mem_tel;
}
public int getCheck() {
return check;
}
public void setCheck(int check) {
this.check = check;
}
public String getMem_code() {
return mem_code;
}
public void setMem_code(String mem_code) {
this.mem_code = mem_code;
}
public String getMem_id() {
return mem_id;
}
public void setMem_id(String mem_id) {
this.mem_id = mem_id;
}
public String getMem_pw() {
return mem_pw;
}
public void setMem_pw(String mem_pw) {
this.mem_pw = mem_pw;
}
public String getMem_gender() {
return mem_gender;
}
public void setMem_gender(String mem_gender) {
this.mem_gender = mem_gender;
}
public String getMem_name() {
return mem_name;
}
public void setMem_name(String mem_name) {
this.mem_name = mem_name;
}
public String getMem_tel() {
return mem_tel;
}
public void setMem_tel(String mem_tel) {
this.mem_tel = mem_tel;
}
public String getMem_lan() {
return mem_lan;
}
public void setMem_lan(String mem_lan) {
this.mem_lan = mem_lan;
}
public String getAdr_code() {
return adr_code;
}
public void setAdr_code(String adr_code) {
this.adr_code = adr_code;
}
@Override
public String toString() {
return "MemberDTO [mem_code=" + mem_code + ", mem_id=" + mem_id + ", mem_pw=" + mem_pw + ", mem_gender="
+ mem_gender + ", mem_name=" + mem_name + ", mem_tel=" + mem_tel + ", mem_lan=" + mem_lan + ", adr_code="
+ adr_code + ", check=" + check + "]";
}
}
MemAdrDTO
package domain;
public class MemAdrDTO {
private String adr_code;
private String adr_main;
private String adr_sub;
private String adr_other;
public MemAdrDTO() {
super();
// TODO Auto-generated constructor stub
}
public MemAdrDTO(String adr_main, String adr_sub) {
super();
this.adr_main = adr_main;
this.adr_sub = adr_sub;
}
public MemAdrDTO(String adr_code, String adr_main, String adr_sub) {
super();
this.adr_code = adr_code;
this.adr_main = adr_main;
this.adr_sub = adr_sub;
}
public MemAdrDTO(String adr_code, String adr_main, String adr_sub, String adr_other) {
super();
this.adr_code = adr_code;
this.adr_main = adr_main;
this.adr_sub = adr_sub;
this.adr_other = adr_other;
}
public String getAdr_code() {
return adr_code;
}
public void setAdr_code(String adr_code) {
this.adr_code = adr_code;
}
public String getAdr_main() {
return adr_main;
}
public void setAdr_main(String adr_main) {
this.adr_main = adr_main;
}
public String getAdr_sub() {
return adr_sub;
}
public void setAdr_sub(String adr_sub) {
this.adr_sub = adr_sub;
}
public String getAdr_other() {
return adr_other;
}
public void setAdr_other(String adr_other) {
this.adr_other = adr_other;
}
@Override
public String toString() {
return "MemAdrDTO [adr_code=" + adr_code + ", adr_main=" + adr_main + ", adr_sub=" + adr_sub + ", adr_other="
+ adr_other + "]";
}
}
주소적는 폼이 있는 뷰 -guest.jsp
<!--시작:지번주소 입력-->
<form id="jibunSform" name="jibunSform" method="post" action="">
<div id="p_inbox gibun_add" style="margin-left:40px;">
<p class="tip01"> </p>
<table border="0">
<tbody><tr>
<th>지역명</th>
<td class="area"><span class="add_01">
<input type="text" id="admin_cty_nm" name="admin_cty_nm" class="input_add" placeholder="지번,도로명,건물명으로 검색해주세요" onkeypress="doIfEnter(event, getBuildList)">
</span><span class="add_02">
<button type="button" onclick="getBuildList();" class="btn">검색</button>
</span>
<!--시작:주소선택-->
<div id="admin_cty_build" class="area_select" style="width: 560px; display: none;">
<ul>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="만리동1가" donggovname="중림동" jibunaddress="서울특별시 중구 만리동1가 62-7 서울역 디오빌 (중림동)" streetaddress="서울특별시 중구 만리재로 193 (만리동1가)" dongaddress="서울특별시 중구 만리동1가(중림동)" fulladdress="서울특별시 중구 만리재로 193 (만리동1가,중림동,서울역 디오빌) 지번: 62-7" location="37.55495010313553,126.96719338217979" updatedate="2022-07-08" legaldongandleename="만리동1가" jibunmainandsub="62-7" streetname="만리재로" bdmainandsub="193" bdname="서울역 디오빌" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="만리동1가" admin_cty_cd="" street_no="62-7" build_nm="서울역 디오빌" href="javascript:;">
서울특별시 중구 만리재로 193 (만리동1가,중림동,서울역 디오빌) 지번: 62-7
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="만리동1가" donggovname="중림동" jibunaddress="서울특별시 중구 만리동1가 62-7 서울역 디오빌 (중림동)" streetaddress="서울특별시 중구 만리재로 193 (만리동1가)" dongaddress="서울특별시 중구 만리동1가(중림동)" fulladdress="서울특별시 중구 만리재로 193 (만리동1가,중림동,서울역 디오빌) 지번: 62-7" location="37.55495010313553,126.96719338217979" updatedate="2022-07-08" legaldongandleename="만리동1가" jibunmainandsub="62-7" streetname="만리재로" bdmainandsub="193" bdname="서울역 디오빌" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="만리동1가" admin_cty_cd="" street_no="62-7" build_nm="서울역 디오빌" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="봉래동2가" donggovname="회현동" jibunaddress="서울특별시 중구 봉래동2가 123 서울역앞우체국 (회현동)" streetaddress="서울특별시 중구 통일로 21 (봉래동2가)" dongaddress="서울특별시 중구 봉래동2가(회현동)" fulladdress="서울특별시 중구 통일로 21 (봉래동2가,회현동,서울역앞우체국) 지번: 123" location="37.55753890576452,126.97144409996395" updatedate="2022-07-08" legaldongandleename="봉래동2가" jibunmainandsub="123" streetname="통일로" bdmainandsub="21" bdname="서울역앞우체국" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="봉래동2가" admin_cty_cd="" street_no="123" build_nm="서울역앞우체국" href="javascript:;">
서울특별시 중구 통일로 21 (봉래동2가,회현동,서울역앞우체국) 지번: 123
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="봉래동2가" donggovname="회현동" jibunaddress="서울특별시 중구 봉래동2가 123 서울역앞우체국 (회현동)" streetaddress="서울특별시 중구 통일로 21 (봉래동2가)" dongaddress="서울특별시 중구 봉래동2가(회현동)" fulladdress="서울특별시 중구 통일로 21 (봉래동2가,회현동,서울역앞우체국) 지번: 123" location="37.55753890576452,126.97144409996395" updatedate="2022-07-08" legaldongandleename="봉래동2가" jibunmainandsub="123" streetname="통일로" bdmainandsub="21" bdname="서울역앞우체국" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="봉래동2가" admin_cty_cd="" street_no="123" build_nm="서울역앞우체국" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="남대문로5가" donggovname="회현동" jibunaddress="서울특별시 중구 남대문로5가 73-6 서울역 1호선 (회현동)" streetaddress="서울특별시 중구 세종대로 지하 2 (남대문로5가)" dongaddress="서울특별시 중구 남대문로5가(회현동)" fulladdress="서울특별시 중구 세종대로 지하 2 (남대문로5가,회현동,서울역 1호선) 지번: 73-6" location="37.55692795477362,126.97255639854666" updatedate="2022-07-08" legaldongandleename="남대문로5가" jibunmainandsub="73-6" streetname="세종대로" bdmainandsub="2" bdname="서울역 1호선" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="남대문로5가" admin_cty_cd="" street_no="73-6" build_nm="서울역 1호선" href="javascript:;">
서울특별시 중구 세종대로 지하 2 (남대문로5가,회현동,서울역 1호선) 지번: 73-6
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="남대문로5가" donggovname="회현동" jibunaddress="서울특별시 중구 남대문로5가 73-6 서울역 1호선 (회현동)" streetaddress="서울특별시 중구 세종대로 지하 2 (남대문로5가)" dongaddress="서울특별시 중구 남대문로5가(회현동)" fulladdress="서울특별시 중구 세종대로 지하 2 (남대문로5가,회현동,서울역 1호선) 지번: 73-6" location="37.55692795477362,126.97255639854666" updatedate="2022-07-08" legaldongandleename="남대문로5가" jibunmainandsub="73-6" streetname="세종대로" bdmainandsub="2" bdname="서울역 1호선" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="남대문로5가" admin_cty_cd="" street_no="73-6" build_nm="서울역 1호선" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="용산구" dongname="서계동" donggovname="청파동" jibunaddress="서울특별시 용산구 서계동 219-17 서울역풍림아이원플러스 (청파동)" streetaddress="서울특별시 용산구 만리재로 202 (서계동)" dongaddress="서울특별시 용산구 서계동(청파동)" fulladdress="서울특별시 용산구 만리재로 202 (서계동,청파동,서울역풍림아이원플러스) 지번: 219-17" location="37.555067730026316,126.96846575335744" updatedate="2022-07-08" legaldongandleename="서계동" jibunmainandsub="219-17" streetname="만리재로" bdmainandsub="202" bdname="서울역풍림아이원플러스" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="용산구" admin_cty_nm="서계동" admin_cty_cd="" street_no="219-17" build_nm="서울역풍림아이원플러스" href="javascript:;">
서울특별시 용산구 만리재로 202 (서계동,청파동,서울역풍림아이원플러스) 지번: 219-17
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="용산구" dongname="서계동" donggovname="청파동" jibunaddress="서울특별시 용산구 서계동 219-17 서울역풍림아이원플러스 (청파동)" streetaddress="서울특별시 용산구 만리재로 202 (서계동)" dongaddress="서울특별시 용산구 서계동(청파동)" fulladdress="서울특별시 용산구 만리재로 202 (서계동,청파동,서울역풍림아이원플러스) 지번: 219-17" location="37.555067730026316,126.96846575335744" updatedate="2022-07-08" legaldongandleename="서계동" jibunmainandsub="219-17" streetname="만리재로" bdmainandsub="202" bdname="서울역풍림아이원플러스" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="용산구" admin_cty_nm="서계동" admin_cty_cd="" street_no="219-17" build_nm="서울역풍림아이원플러스" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="만리동2가" donggovname="중림동" jibunaddress="서울특별시 중구 만리동2가 288 서울역한라비발디센트럴 (중림동)" streetaddress="서울특별시 중구 만리재로 177 (만리동2가, 서울역한라비발디센트럴)" dongaddress="서울특별시 중구 만리동2가(중림동)" fulladdress="서울특별시 중구 만리재로 177 (만리동2가,중림동,서울역한라비발디센트럴) 지번: 288" location="37.554536898328166,126.9654615504536" updatedate="2022-07-08" legaldongandleename="만리동2가" jibunmainandsub="288" streetname="만리재로" bdmainandsub="177" bdname="서울역한라비발디센트럴" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="만리동2가" admin_cty_cd="" street_no="288" build_nm="서울역한라비발디센트럴" href="javascript:;">
서울특별시 중구 만리재로 177 (만리동2가,중림동,서울역한라비발디센트럴) 지번: 288
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="만리동2가" donggovname="중림동" jibunaddress="서울특별시 중구 만리동2가 288 서울역한라비발디센트럴 (중림동)" streetaddress="서울특별시 중구 만리재로 177 (만리동2가, 서울역한라비발디센트럴)" dongaddress="서울특별시 중구 만리동2가(중림동)" fulladdress="서울특별시 중구 만리재로 177 (만리동2가,중림동,서울역한라비발디센트럴) 지번: 288" location="37.554536898328166,126.9654615504536" updatedate="2022-07-08" legaldongandleename="만리동2가" jibunmainandsub="288" streetname="만리재로" bdmainandsub="177" bdname="서울역한라비발디센트럴" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="만리동2가" admin_cty_cd="" street_no="288" build_nm="서울역한라비발디센트럴" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="은평구" dongname="역촌동" donggovname="역촌동" jibunaddress="서울특별시 은평구 역촌동 29-24 서울역촌유치원" streetaddress="서울특별시 은평구 진흥로7길 25 (역촌동)" dongaddress="서울특별시 은평구 역촌동" fulladdress="서울특별시 은평구 진흥로7길 25 (역촌동,서울역촌유치원) 지번: 29-24" location="37.60434976874782,126.91892128631066" updatedate="2022-07-08" legaldongandleename="역촌동" jibunmainandsub="29-24" streetname="진흥로7길" bdmainandsub="25" bdname="서울역촌유치원" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="은평구" admin_cty_nm="역촌동" admin_cty_cd="" street_no="29-24" build_nm="서울역촌유치원" href="javascript:;">
서울특별시 은평구 진흥로7길 25 (역촌동,서울역촌유치원) 지번: 29-24
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="은평구" dongname="역촌동" donggovname="역촌동" jibunaddress="서울특별시 은평구 역촌동 29-24 서울역촌유치원" streetaddress="서울특별시 은평구 진흥로7길 25 (역촌동)" dongaddress="서울특별시 은평구 역촌동" fulladdress="서울특별시 은평구 진흥로7길 25 (역촌동,서울역촌유치원) 지번: 29-24" location="37.60434976874782,126.91892128631066" updatedate="2022-07-08" legaldongandleename="역촌동" jibunmainandsub="29-24" streetname="진흥로7길" bdmainandsub="25" bdname="서울역촌유치원" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="은평구" admin_cty_nm="역촌동" admin_cty_cd="" street_no="29-24" build_nm="서울역촌유치원" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="용산구" dongname="동자동" donggovname="남영동" jibunaddress="서울특별시 용산구 동자동 43-205 서울역(철도역) (남영동)" streetaddress="서울특별시 용산구 한강대로 405 (동자동)" dongaddress="서울특별시 용산구 동자동(남영동)" fulladdress="서울특별시 용산구 한강대로 405 (동자동,남영동,서울역(철도역)) 지번: 43-205" location="37.55483771349384,126.9718120082412" updatedate="2022-07-08" legaldongandleename="동자동" jibunmainandsub="43-205" streetname="한강대로" bdmainandsub="405" bdname="서울역(철도역)" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="용산구" admin_cty_nm="동자동" admin_cty_cd="" street_no="43-205" build_nm="서울역(철도역)" href="javascript:;">
서울특별시 용산구 한강대로 405 (동자동,남영동,서울역(철도역)) 지번: 43-205
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="용산구" dongname="동자동" donggovname="남영동" jibunaddress="서울특별시 용산구 동자동 43-205 서울역(철도역) (남영동)" streetaddress="서울특별시 용산구 한강대로 405 (동자동)" dongaddress="서울특별시 용산구 동자동(남영동)" fulladdress="서울특별시 용산구 한강대로 405 (동자동,남영동,서울역(철도역)) 지번: 43-205" location="37.55483771349384,126.9718120082412" updatedate="2022-07-08" legaldongandleename="동자동" jibunmainandsub="43-205" streetname="한강대로" bdmainandsub="405" bdname="서울역(철도역)" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="용산구" admin_cty_nm="동자동" admin_cty_cd="" street_no="43-205" build_nm="서울역(철도역)" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="만리동1가" donggovname="중림동" jibunaddress="서울특별시 중구 만리동1가 231 LIG 서울역 리가 (중림동)" streetaddress="서울특별시 중구 만리재로33길 21 (만리동1가, LIG 서울역 리가)" dongaddress="서울특별시 중구 만리동1가(중림동)" fulladdress="서울특별시 중구 만리재로33길 21 (만리동1가,중림동,LIG 서울역 리가) 지번: 231" location="37.55559404897448,126.96707115682004" updatedate="2022-07-08" legaldongandleename="만리동1가" jibunmainandsub="231" streetname="만리재로33길" bdmainandsub="21" bdname="LIG 서울역 리가" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="만리동1가" admin_cty_cd="" street_no="231" build_nm="LIG 서울역 리가" href="javascript:;">
서울특별시 중구 만리재로33길 21 (만리동1가,중림동,LIG 서울역 리가) 지번: 231
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="만리동1가" donggovname="중림동" jibunaddress="서울특별시 중구 만리동1가 231 LIG 서울역 리가 (중림동)" streetaddress="서울특별시 중구 만리재로33길 21 (만리동1가, LIG 서울역 리가)" dongaddress="서울특별시 중구 만리동1가(중림동)" fulladdress="서울특별시 중구 만리재로33길 21 (만리동1가,중림동,LIG 서울역 리가) 지번: 231" location="37.55559404897448,126.96707115682004" updatedate="2022-07-08" legaldongandleename="만리동1가" jibunmainandsub="231" streetname="만리재로33길" bdmainandsub="21" bdname="LIG 서울역 리가" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="만리동1가" admin_cty_cd="" street_no="231" build_nm="LIG 서울역 리가" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="용산구" dongname="동자동" donggovname="남영동" jibunaddress="서울특별시 용산구 동자동 14-151 4호선 서울역 (남영동)" streetaddress="서울특별시 용산구 한강대로 지하 392 (동자동)" dongaddress="서울특별시 용산구 동자동(남영동)" fulladdress="서울특별시 용산구 한강대로 지하 392 (동자동,남영동,4호선 서울역) 지번: 14-151" location="37.55320347710953,126.97275360634195" updatedate="2022-07-08" legaldongandleename="동자동" jibunmainandsub="14-151" streetname="한강대로" bdmainandsub="392" bdname="4호선 서울역" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="용산구" admin_cty_nm="동자동" admin_cty_cd="" street_no="14-151" build_nm="4호선 서울역" href="javascript:;">
서울특별시 용산구 한강대로 지하 392 (동자동,남영동,4호선 서울역) 지번: 14-151
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="용산구" dongname="동자동" donggovname="남영동" jibunaddress="서울특별시 용산구 동자동 14-151 4호선 서울역 (남영동)" streetaddress="서울특별시 용산구 한강대로 지하 392 (동자동)" dongaddress="서울특별시 용산구 동자동(남영동)" fulladdress="서울특별시 용산구 한강대로 지하 392 (동자동,남영동,4호선 서울역) 지번: 14-151" location="37.55320347710953,126.97275360634195" updatedate="2022-07-08" legaldongandleename="동자동" jibunmainandsub="14-151" streetname="한강대로" bdmainandsub="392" bdname="4호선 서울역" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="용산구" admin_cty_nm="동자동" admin_cty_cd="" street_no="14-151" build_nm="4호선 서울역" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="종로구" dongname="신문로2가" donggovname="사직동" jibunaddress="서울특별시 종로구 신문로2가 2-1 서울역사박물관 (사직동)" streetaddress="서울특별시 종로구 새문안로 55 (신문로2가)" dongaddress="서울특별시 종로구 신문로2가(사직동)" fulladdress="서울특별시 종로구 새문안로 55 (신문로2가,사직동,서울역사박물관) 지번: 2-1" location="37.56984406751715,126.97076185585868" updatedate="2022-07-08" legaldongandleename="신문로2가" jibunmainandsub="2-1" streetname="새문안로" bdmainandsub="55" bdname="서울역사박물관" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="종로구" admin_cty_nm="신문로2가" admin_cty_cd="" street_no="2-1" build_nm="서울역사박물관" href="javascript:;">
서울특별시 종로구 새문안로 55 (신문로2가,사직동,서울역사박물관) 지번: 2-1
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="종로구" dongname="신문로2가" donggovname="사직동" jibunaddress="서울특별시 종로구 신문로2가 2-1 서울역사박물관 (사직동)" streetaddress="서울특별시 종로구 새문안로 55 (신문로2가)" dongaddress="서울특별시 종로구 신문로2가(사직동)" fulladdress="서울특별시 종로구 새문안로 55 (신문로2가,사직동,서울역사박물관) 지번: 2-1" location="37.56984406751715,126.97076185585868" updatedate="2022-07-08" legaldongandleename="신문로2가" jibunmainandsub="2-1" streetname="새문안로" bdmainandsub="55" bdname="서울역사박물관" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="종로구" admin_cty_nm="신문로2가" admin_cty_cd="" street_no="2-1" build_nm="서울역사박물관" href="javascript:;">
선택
</a>
</span>
</li>
<li>
<span class="select_address">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="봉래동2가" donggovname="회현동" jibunaddress="서울특별시 중구 봉래동2가 122-28 서울역(본옥) (회현동)" streetaddress="서울특별시 중구 통일로 1 (봉래동2가)" dongaddress="서울특별시 중구 봉래동2가(회현동)" fulladdress="서울특별시 중구 통일로 1 (봉래동2가,회현동,서울역(본옥)) 지번: 122-28" location="37.555865059770774,126.97181674982701" updatedate="2022-07-08" legaldongandleename="봉래동2가" jibunmainandsub="122-28" streetname="통일로" bdmainandsub="1" bdname="서울역(본옥)" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="봉래동2가" admin_cty_cd="" street_no="122-28" build_nm="서울역(본옥)" href="javascript:;">
서울특별시 중구 통일로 1 (봉래동2가,회현동,서울역(본옥)) 지번: 122-28
</a>
</span>
<span class="select_btn">
<a id="dong_build_sel" sidoname="서울특별시" gunguname="중구" dongname="봉래동2가" donggovname="회현동" jibunaddress="서울특별시 중구 봉래동2가 122-28 서울역(본옥) (회현동)" streetaddress="서울특별시 중구 통일로 1 (봉래동2가)" dongaddress="서울특별시 중구 봉래동2가(회현동)" fulladdress="서울특별시 중구 통일로 1 (봉래동2가,회현동,서울역(본옥)) 지번: 122-28" location="37.555865059770774,126.97181674982701" updatedate="2022-07-08" legaldongandleename="봉래동2가" jibunmainandsub="122-28" streetname="통일로" bdmainandsub="1" bdname="서울역(본옥)" sidonameorder="0" mega_cty_nm="서울특별시" cty_rgn_nm="중구" admin_cty_nm="봉래동2가" admin_cty_cd="" street_no="122-28" build_nm="서울역(본옥)" href="javascript:;">
선택
</a>
</span>
</li>
</ul>
</div></td>
</tr>
</tbody></table>
<table border="0" id="detail_addr_el" style="display: block;">
<tbody><tr>
<th>상세주소</th>
<td><ul>
<!--시작:상세주소-->
<li class="address"> <div id="dis_addr_build" name="dis_addr_build">서울특별시 중구 통일로 21 (봉래동2가,회현동,서울역앞우체국) 지번: 123</div></li>
<li><span class="add_01">
<input type="text" id="address" name="address" class="input_add" placeholder="나머지 주소를 입력해 주세요" onkeypress="doIfEnter(event, codeAddress)">
</span><span class="add_02">
<button type="button" onclick="codeAddress();" class="btn">확인</button>
</span></li>
<li class="tip">신속한 배달을 위해 동-호수를 정확히 입력해 주세요</li>
</ul></td>
</tr>
</tbody></table>
</div>
</form>
<!--시작:도로명주소-->
<form id="roadSform" name="roadSform" method="post" action="">
<div id="p_inbox dolo_add" style="display:none">
<p class="tip01"> 찾으시려는 도로명주소의 건물번호 또는 건물명까지 상세히 입력 후 검색해 주세요. (<span class="tip02">도로명 주소 확인 : </span><a href="http://www.juso.go.kr" target="open"> www.juso.go.kr</a>) </p>
<table border="0">
<tbody><tr>
<th rowspan="2">지역명</th>
<td class="road" style="padding-top:20px;">
<span class="fl ad1">
<select id="mega_cty_cd" name="mega_cty_cd" tabindex="1" sb="61383327" style="display: none;">
<option value="" selected="">광역시도</option>
<option value="42">강원도</option>
<option value="41">경기도</option>
<option value="48">경상남도</option>
<option value="47">경상북도</option>
<option value="29">광주광역시</option>
<option value="27">대구광역시</option>
<option value="30">대전광역시</option>
<option value="26">부산광역시</option>
<option value="11">서울특별시</option>
<option value="36">세종특별자치시</option>
<option value="31">울산광역시</option>
<option value="28">인천광역시</option>
<option value="46">전라남도</option>
<option value="45">전라북도</option>
<option value="50">제주특별자치도</option>
<option value="44">충청남도</option>
<option value="43">충청북도</option>
</select><div id="sbHolder_61383327" class="sbHolder" tabindex="1"><a id="sbToggle_61383327" href="#" class="sbToggle"></a><a id="sbSelector_61383327" href="#" class="sbSelector">광역시도</a><ul id="sbOptions_61383327" class="sbOptions" style="display: none;"><li><a href="#" rel="" class="sbFocus">광역시도</a></li><li><a href="#42" rel="42">강원도</a></li><li><a href="#41" rel="41">경기도</a></li><li><a href="#48" rel="48">경상남도</a></li><li><a href="#47" rel="47">경상북도</a></li><li><a href="#29" rel="29">광주광역시</a></li><li><a href="#27" rel="27">대구광역시</a></li><li><a href="#30" rel="30">대전광역시</a></li><li><a href="#26" rel="26">부산광역시</a></li><li><a href="#11" rel="11">서울특별시</a></li><li><a href="#36" rel="36">세종특별자치시</a></li><li><a href="#31" rel="31">울산광역시</a></li><li><a href="#28" rel="28">인천광역시</a></li><li><a href="#46" rel="46">전라남도</a></li><li><a href="#45" rel="45">전라북도</a></li><li><a href="#50" rel="50">제주특별자치도</a></li><li><a href="#44" rel="44">충청남도</a></li><li><a href="#43" rel="43">충청북도</a></li></ul></div>
</span>
<span id="left_content_sec" class="fl ad2 ml7">
<select id="cty_rgn_cd" name="cty_rgn_cd" style="width: 200px; display: none;" sb="3710006">
<option value="" selected="">시구군</option>
</select><div id="sbHolder_3710006" class="sbHolder" tabindex="0"><a id="sbToggle_3710006" href="#" class="sbToggle"></a><a id="sbSelector_3710006" href="#" class="sbSelector">시구군</a><ul id="sbOptions_3710006" class="sbOptions" style="display: none;"><li class="last"><a href="#" rel="" class="sbFocus">시구군</a></li></ul></div>
</span>
</td>
</tr>
<tr>
<td style="padding:5px 5px 20px;"><span class="add_01">
<input type="text" id="admin_cty_cd_road" name="admin_cty_cd_road" class="input_add" placeholder="도로명 입력" style="width:315px;">
<input type="text" id="address1" name="address1" class="input_add" placeholder="건물번호" style="width:95px;">
<span style="padding:0 6px;">-</span>
<input type="text" id="address2" name="address2" class="input_add" placeholder="건물번호" style="width:95px;">
</span><span class="add_02">
<button type="button" id="BTN_NewAddrBuildSearch" class="btn">검색</button>
</span></td>
</tr>
<tr>
<th>상세주소</th>
<td><ul>
<!--시작:상세주소-->
<li class="address"> <div id="dis_addr_build_road" name="dis_addr_build_road"></div></li>
<li><span class="add_01">
<input type="text" id="address" name="address" class="input_add" placeholder="나머지 주소를 입력해주세요">
</span><span class="add_02">
<button type="button" onclick="codeAddress();" class="btn">확인</button>
</span></li>
<li class="tip">신속한 배달을 위해 동-호수를 정확히 입력해 주세요</li>
</ul></td>
</tr>
</tbody></table>
</div>
</form>
<!--시작:최종배달주소 및 특이사항-->
<form id="korResultForm" name="korResultForm" method="post" action="">
<input type="hidden" id="mega_cty_nm" name="mega_cty_nm" value="서울특별시">
<input type="hidden" id="cty_rgn_nm" name="cty_rgn_nm" value="중구">
<input type="hidden" id="admin_cty_nm" name="admin_cty_nm" value="봉래동2가">
<input type="hidden" id="admin_cty_cd" name="admin_cty_cd" value="">
<input type="hidden" id="address_bld" name="address_bld" value="서울역앞우체국">
<input type="hidden" id="delivery_sel_addr" name="delivery_sel_addr" value="">
<input type="hidden" id="addr_build" name="addr_build" value="서울특별시 중구 통일로 21 (봉래동2가,회현동,서울역앞우체국) 지번: 123">
<input type="hidden" id="address" name="address" value="">
<input type="hidden" id="echo_sidoName" name="echo_sidoName" value="서울특별시">
<input type="hidden" id="echo_gunguName" name="echo_gunguName" value="중구">
<input type="hidden" id="echo_dongName" name="echo_dongName" value="봉래동2가">
<input type="hidden" id="echo_dongGovName" name="echo_dongGovName" value="회현동">
<input type="hidden" id="echo_jibunAddress" name="echo_jibunAddress" value="서울특별시 중구 봉래동2가 123 서울역앞우체국 (회현동)">
<input type="hidden" id="echo_streetAddress" name="echo_streetAddress" value="서울특별시 중구 통일로 21 (봉래동2가)">
<input type="hidden" id="echo_dongAddress" name="echo_dongAddress" value="서울특별시 중구 봉래동2가(회현동)">
<input type="hidden" id="echo_fullAddress" name="echo_fullAddress" value="서울특별시 중구 통일로 21 (봉래동2가,회현동,서울역앞우체국) 지번: 123">
<input type="hidden" id="echo_location" name="echo_location" value="37.55753890576452,126.97144409996395">
<input type="hidden" id="echo_updateDate" name="echo_updateDate" value="2022-07-08">
<input type="hidden" id="echo_legalDongAndLeeName" name="echo_legalDongAndLeeName" value="봉래동2가">
<input type="hidden" id="echo_jibunMainAndSub" name="echo_jibunMainAndSub" value="123">
<input type="hidden" id="echo_streetName" name="echo_streetName" value="통일로">
<input type="hidden" id="echo_bdMainAndSub" name="echo_bdMainAndSub" value="21">
<input type="hidden" id="echo_bdName" name="echo_bdName" value="서울역앞우체국">
<input type="hidden" id="echo_sidoNameOrder" name="echo_sidoNameOrder" value="0">
<div id="last_addr_el" style="display:none; width: 100%; margin-left:40px;">
<table>
<tbody><tr>
<th>최종 배달주소</th>
<td><div id="delivery_addr" name="delivery_addr" class=" cnfm_input"></div></td>
</tr>
<tr>
<th>배달 특이사항</th>
<td><textarea id="remark" name="remark" class="apply_text" placeholder="예) 아이가 있으니 노크해 주세요"></textarea></td>
</tr>
</tbody></table>
</div>
</form>
</div>
회원가입폼 register.jsp
<form action="<%=contextPath %>/md/enterJoin.do" method="post" >
<div class="row1" style="display:none;">
<div class="col-xs-12">
<div class="form-group">
<label class="field-label" for="form_register_firstname"><span class="required-symbol">*</span>주소:</label>
<input type="text" class="form-control input-lg required no-special-characters"
id="form_register_firstname" name="address1" value="<%= request.getParameter("wosStreet") %>" aria-required="true">
<input type="text" class="form-control input-lg required no-special-characters"
id="form_register_firstname" name="address2" value="<%= request.getParameter("wosBlock")+request.getParameter("wosUnit") %>" aria-required="true">
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="form-group">
<label class="field-label" for="form_register_firstname"><span class="required-symbol">*</span>성함:</label>
<input type="text" class="form-control input-lg required no-special-characters" id="form_register_firstname" name="firstName" value="김아아" aria-required="true">
</div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="field-label" for="form_register_gender">성별:</label>
<select name="gender" id="form_register_gender" class="select-lg" tabindex="0" style="display: none;" aria-disabled="false">
<option selected="selected" value=""></option>
<option value="Male" selected="selected">남</option>
<option value="Female">여</option>
<option value="Do Not Specify">선택 안함</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="form-group">
<label class="field-label" for="form_register_contactno"><span class="required-symbol">*</span>휴대전화 번호:</label>
<input type="text" class="form-control input-lg required number digit-only" maxlength="11" id="form_register_contactno" name="contactNo" placeholder="숫자만 입력" value="01012345679" aria-required="true">
</div>
</div>
</div>
</fieldset>
<fieldset class="fieldset">
<div class="fieldset-heading">
<h2 class="fieldset-title">계정 정보</h2>
</div>
<div class="form-group">
<label class="field-label" for="form_register_email"><span class="required-symbol">*</span>이메일:</label>
<input type="email" class="form-control input-lg required" id="form_register_email" name="email" placeholder="name@mail.com" value="kimjm33@naver.com" aria-required="true">
<label class="control-hint" for="form_register_email">이메일 주소는 고객님의 안전한 거래와 회원정보 보호를 위해 정확하게 입력해 주세요.</label>
</div>
<div class="form-group">
<label class="field-label" for="form_register_email_comfirm"><span class="required-symbol">*</span>이메일 확인:</label>
<input type="email" class="form-control input-lg required" id="form_register_email_comfirm" name="confirmEmail" placeholder="name@mail.com" value="kimjm33@naver.com"aria-required="true">
</div>
<div class="form-group">
<label class="field-label" for="form_register_password"><span class="required-symbol">*</span>비밀번호:</label>
<input type="password" class="form-control input-lg required" id="form_register_password" name="password" autocomplete="off" value="kk123456789" data-rule-required="true" data-rule-rangelength="${passLengthMin},${passLengthMax}" data-rule-verifypassword="true" data-msg-verifypassword="비밀번호는 문자, 숫자를 조합한 최소 8 글자 이상이어야 합니다." data-msg-required="비밀번호를 입력해 주십시오." data-msg-rangelength="비밀번호는 8에서 20글자이어야 됩니다." maxlength="20" value="" aria-required="true">
<label for="form_register_password" class="control-hint">비밀번호는 문자, 숫자를 조합한 최소 8 글자 이상이어야 합니다.</label>
</div>
<div class="form-group">
<label class="field-label" for="form_register_password_confirm"><span class="required-symbol">*</span>비밀번호 확인:</label>
<input type="password" class="form-control input-lg required" id="form_register_password_confirm" name="comfirmPassword"value="kk123456789" autocomplete="off" maxlength="20" value="" aria-required="true">
</div>
</fieldset>
<div class="fieldset-heading">
<h2 class="fieldset-title">인증방법</h2>
<select name="preferredNotification" id="">
<option value="1">이메일</option>
<option value="2">휴대폰</option>
</select>
<br>
<br>
<br>
<br>
<input type="submit" id="jjinjja" value="계정 생성"></input>
</form>
컨트롤러
package controller;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import command.CommandHandler;
public class DispatcherServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public DispatcherServlet() {
super();
}
private Map<String, CommandHandler>commandHandlerMap =new HashMap<String, CommandHandler>();
@Override
public void init() throws ServletException {
//이 함수는 DispatcherServlet 서블릿 객체로 생성될 때 초기화 작업 -init() 메서드
//즉 xml에서 loadon 1이니까 여기서 먼저 1번 호출
//web-INF/ commandHandler.properties 파일을 읽어서 어떤 요청 URL = commandhandler가 일하는지 가져와서 위 map에추가
//web.xm에서 init-param 만들고
String path= this.getInitParameter("path"); //web-INF/ commandHandler.properties를 가져온다
String realPath=this.getServletContext().getRealPath(path); //****
Properties prop = new Properties();
try(FileReader fr= new FileReader(realPath)) {
prop.load(fr);
} catch (Exception e) {
throw new ServletException();
}
//여기까지는 파properties에서 파일 찾아옴
//key: /board/list.do
//value: days08.mvc.command.ListHandler 실제 객체 생성해서
//commandHandlerMap에 추가
Iterator<Object> ir = prop.keySet().iterator();
while (ir.hasNext()) {
String url = (String) ir.next(); //key: /board/list.do
String commandHandlerFullName= prop.getProperty(url);////value: days08.mvc.command.~~Handler n개 가져오기
try {
Class<?> handlerClass= Class.forName(commandHandlerFullName);
CommandHandler commandHandler = (CommandHandler) handlerClass.newInstance();
this.commandHandlerMap.put(url,commandHandler);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (InstantiationException e) {
e.printStackTrace();
}catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}//
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("서블릿호출");
//1. 요청 url분석 (모든 요청들을 분석) list.do 요청이 왔다면 -> Command~.properties로 가서 ListHandler가 일을 한다고 하고 -> new ListHandler() 객체 생성 로직처리
String requestURI = request.getRequestURI(); // /jspPro/board/list.do
//request.getRequestURL(); //경로 절대경로 다
//requestURI 컨텍스트 패스 제거
String contextPath= request.getContextPath();
if(requestURI.indexOf(contextPath)==0) {
requestURI=requestURI.substring(contextPath.length()); // /board/list.do만 가져옴 (key)
}
///board/list.do는 키값으로 사용
//2. 요청 url -> 로직을 처리하는 모델객체 (커맨드 핸들러)를 찾는 작업 + 처리해라 + 처리결과를 받고 request.setAttribute()로 또는 세션에 저장한다면
CommandHandler modelHandler = this.commandHandlerMap.get(requestURI ); //get에 key값을 주면 value를 구할 수 있음
//value=get(key) -> 인터페이스 upcasting 해서 list,edit등등 핸들러를 받아옴다.
String viewPage=null;
try {
viewPage = modelHandler.process(request, response); //ex) 리스트 핸들러의 프로세스를 받아와서 실행시킨다
} catch (Exception e) {
e.printStackTrace();
}
//3. 어떤 view가 응답해야하는지 찾아서 리다이렉트 또는 포워딩 시키기 (이건 로직 처리한 후 결과를 받아서 return받아서)
if(viewPage!=null) {
RequestDispatcher dispatcher =request.getRequestDispatcher(viewPage);
dispatcher.forward(request, response);
}
}//doget
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("post서블릿호출");
//1. 요청 url분석 (모든 요청들을 분석) list.do 요청이 왔다면 -> Command~.properties로 가서 ListHandler가 일을 한다고 하고 -> new ListHandler() 객체 생성 로직처리
String requestURI = request.getRequestURI(); // /jspPro/board/list.do
//request.getRequestURL(); //경로 절대경로 다
//requestURI 컨텍스트 패스 제거
String contextPath= request.getContextPath();
if(requestURI.indexOf(contextPath)==0) {
requestURI=requestURI.substring(contextPath.length()); // /board/list.do만 가져옴 (key)
}
///board/list.do는 키값으로 사용
//2. 요청 url -> 로직을 처리하는 모델객체 (커맨드 핸들러)를 찾는 작업 + 처리해라 + 처리결과를 받고 request.setAttribute()로 또는 세션에 저장한다면
CommandHandler modelHandler = this.commandHandlerMap.get(requestURI ); //get에 key값을 주면 value를 구할 수 있음
//value=get(key) -> 인터페이스 upcasting 해서 list,edit등등 핸들러를 받아옴다.
String viewPage=null;
try {
viewPage = modelHandler.process(request, response); //ex) 리스트 핸들러의 프로세스를 받아와서 실행시킨다
} catch (Exception e) {
e.printStackTrace();
}
//3. 뷰페이지 받아서 리다이렉트 시키는 경우
if(viewPage!=null) {
response.sendRedirect(viewPage);
}
}//dopost
}
properties
/md/mdmain.do= command.MdMainHandler
/md/logon.do = command.MdMainLogonHandler
/md/guest.do = command.GuestHandler
/md/register.do = command.RegisterHandler
/md/enterJoin.do=command.JoinMemberHandler
회원가입처리를 위한 Handler
- register.jsp 폼태그에 <form action="<%=contextPath %>/md/enterJoin.do" method="post" > 회원정보이므로 url에 표시되지 않도록 post방식으로 지정하였습니다. enterJoin.do요청으로 컨트롤러에 의해 JoinMemberHandler가 실행됩니다.
- request.getParameter("name")으로 태그들의 값들을 받아옵니다.
- MemberDTO와 MemAdrDTO에 해당 값들로 객체를 생성합니다.
- service클래스로 객체 두개를 모두 전달합니다.
- 회원가입이 완료되면 1을 반환하는데, 그 중에서도 인증방식을 선택하는 select태그 값의 value를 받아와 , 이메일이라면 , 즉 value값이 1 이라면 이메일로 전송되었다는 문구를 띄운 페이지를 리턴합니다. 반대로 휴대폰번호를 선택하였다면 (value ==2) 문자메세지로 전송되었다는 문구를 띄운 페이지를 리턴합니다.
- select 태그의 값을 불러올대는 request.getParameterValues()를 사용하고, 선택된 한개의 값만 리턴됩니다.(배열로 받아야합니다. )
package command;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import domain.MemAdrDTO;
import domain.MemberDTO;
import service.MemberService;
public class JoinMemberHandler implements CommandHandler{
@Override
public String process(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("호출 JoinMemberHandler");
request.setCharacterEncoding("UTF-8");
String address1=request.getParameter("address1"); //기본주소
String address2=request.getParameter("address2"); //상세주소
String userName = request.getParameter("firstName"); //성함
String gender = request.getParameter("gender"); //성별
String phone = request.getParameter("contactNo"); //휴대전화 번호
String userId = request.getParameter("email"); //이메일
//String confirmUserId = request.getParameter("confirmEmail"); //이메일확인
String userPwd = request.getParameter("password"); //비밀번호
//String comfirmPassword = request.getParameter("comfirmPassword"); //비밀번호 확인
System.out.println("username:"+userName);
String[] authen=request.getParameterValues("preferredNotification"); //인증방법
System.out.println("authen:"+authen[0]);
for (int i = 0; i < authen.length; i++) {
System.out.println("authen:["+i+"]:"+authen[i]);
}
/*
* 이용약관없앰
String[] terms=request.getParameterValues("agreeChk"); //체크박스이용약관동의
//int형으로바꿔야함
int[] agree=new int[terms.length]; //이용약관 int형으로
for (int i = 0; i < terms.length; i++) {
agree[i] = Integer.parseInt(terms[i]);
}
*/
System.out.println(userId);
//String mem_code
MemberDTO memberDTO =new MemberDTO(userId, userPwd, gender, userName, phone);
MemAdrDTO memAdrDTO =new MemAdrDTO (address1, address2);
MemberService memberService = MemberService.getInstance();
int result = memberService.insertOneMember(memberDTO, memAdrDTO );
System.out.println(result);
if(result==1){
System.out.println("회원가입 성공");
if(authen[0].equals("1")) {//이메일
return "/mcNew/md/enterJoin.jsp";
}
else {//휴대폰
return "/mcNew/md/enterJoinPhone.jsp"; }
}else {
System.out.println("회원가입실패 ");
return "/mcNew/md/mdmain.do"; //jsp로하면 이미지안뿌려짐
}
}
}
Service
- 주소를 입력하는 메소드에는 MemAdrDTO가 매개변수입니다. 주소정보를 입력하고 해당하는 주소코드를 리턴합니다.
- 회원정보를 입력하는 메소드에는 MemberDTO객체와 리턴받은 주소코드가 매개변수입니다.
public int insertOneMember(MemberDTO memberDTO , MemAdrDTO memAdrDTO) {
Connection con = null;
try {
con = ConnectionProvider.getConnection();
MemberDAOImpl dao =MemberDAOImpl.getInstance();
//insert문에서는 서브쿼리를 쓸 수 없기때문에, 주소입력따로 회원정보입력따로
String adrCode=dao.insertAddress(con, memAdrDTO);
int result= dao.insertOneMember(con, memberDTO, adrCode);
return result;
} catch (NamingException | SQLException e) {
//e.printStackTrace();
throw new RuntimeException(e);
} finally {
JdbcUtil.close(con);
}
}
MemberDAO 인터페이스
package persistence;
import java.sql.Connection;
import java.sql.SQLException;
import domain.MemAdrDTO;
import domain.MemberDTO;
public interface MemberDAO {
//로그인
MemberDTO login(Connection conn, String userId, String userPwd) throws SQLException;
//로그인 맴버 있는지 확인
MemberDTO loginCheck(Connection conn, String userId, String userPwd) throws SQLException;
//회원가입-주소넣기 (주소코드를 반환 )
String insertAddress(Connection con, MemAdrDTO memAdrDTO) throws SQLException;
//회원가입
int insertOneMember(Connection con, MemberDTO memberDTO,String adrCode) throws SQLException;
}
MemberDAOImpl
- 멤버가 추가될때마다 자동으로 순번이 붇도록 시퀀스를 생성해주었습니다. 회원코드는'm'+숫자 형식으로 되어있기 때문에 문자열 m을 이어주었습니다.
- adrCode를 가져오기 위해서 select문의 sql을 한번 더 실행시켜주었습니다.
public int insertOneMember(Connection con, MemberDTO memberDTO, String adrCode) throws SQLException{
System.out.println(" lnsert회원가입()- lmpl시작");
int result=0;
String lan="한국어";
/* MEM_CODE ,MEM_ID ,MEM_PW ,MEM_GENDER ,MEM_NAME ,MEM_TEL ,MEM_LAN ,ADR_CODE */
String sql = "insert into member values ('m'||member_seq.nextval,?,?, ?,?,?,?,?)";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, memberDTO.getMem_id());
pstmt.setString(2, memberDTO.getMem_pw());
pstmt.setString(3, memberDTO.getMem_gender());
pstmt.setString(4, memberDTO.getMem_name());
pstmt.setString(5, memberDTO.getMem_tel());
pstmt.setString(6,lan);
pstmt.setString(7, adrCode);
result=pstmt.executeUpdate();
} finally {
JdbcUtil.close(pstmt);
JdbcUtil.close(rs);
} // finally
System.out.println("result:"+result);
return result;
}//insertOneMember
public String insertAddress(Connection con, MemAdrDTO memAdrDTO) throws SQLException {
System.out.println(" impl - insertAddress() 시작");
System.out.println(memAdrDTO.getAdr_main());
System.out.println(memAdrDTO.getAdr_sub());
String adrCode="";
int result=0;
String sql = "insert into mem_adr(adr_code, adr_main, adr_sub) values ('a'||memAdr_seq.nextval,?,?)";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, memAdrDTO.getAdr_main());
pstmt.setString(2, memAdrDTO.getAdr_sub());
/* rs=pstmt.executeQuery(); */
result=pstmt.executeUpdate();
System.out.println("result: "+result);
if(result==1) {
System.out.println("이제 adr코드 가져올게");
//문제점!!!!!!!여기가 안나온다. - >select 하는 쿼리문 다시 써보기
sql="select adr_code from mem_adr where adr_main=? and adr_sub=?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, memAdrDTO.getAdr_main());
pstmt.setString(2, memAdrDTO.getAdr_sub());
rs=pstmt.executeQuery();
if(rs.next()){
adrCode=rs.getString("adr_code"); //회원가입의 외부키가 될 것
System.out.println("adrCode:"+adrCode);
}
}finally {
}
}
} finally {
JdbcUtil.close(pstmt);
JdbcUtil.close(rs);
} // finally
System.out.println("adrCode: "+adrCode);
return adrCode;
}
실행성공 캡쳐
'JSP' 카테고리의 다른 글
[JSP] MVC2모델을 이용한 로그인 구현 (0) | 2022.07.07 |
---|---|
[JSP] 구글 맵 api (0) | 2022.07.04 |
[JSP] JSON (0) | 2022.07.01 |
[JSP] AJAX (0) | 2022.06.30 |
[JSP] EmpDeptList를 MVC패턴으로 구현 (0) | 2022.06.29 |
Comments