본문 바로가기

웹 개발/JSP

[Web_JSP] 14

실습(MVC)

- [Web_JSP] 13 이어서

 

 

1. MemberVO.java

package com.board.app.domain.vo;

public class MemberVO {
	private int memberNumber;
	private String memberId;
	private String memberPw;
	private String memberName;
	private int memberAge;
	private String memberGender;
	private String memberEmail;
	private String memberZipcode;
	private String memberAddress;
	private String memberAddressDetail;
	
	public MemberVO() {;}

	public int getMemberNumber() {
		return memberNumber;
	}

	public void setMemberNumber(int memberNumber) {
		this.memberNumber = memberNumber;
	}
 
	public String getMemberId() {
		return memberId;
	}

	public void setMemberId(String memberId) {
		this.memberId = memberId;
	}

	public String getMemberPw() {
		return memberPw;
	}

	public void setMemberPw(String memberPw) {
		this.memberPw = memberPw;
	}

	public String getMemberName() {
		return memberName;
	}

	public void setMemberName(String memberName) {
		this.memberName = memberName;
	}

	public int getMemberAge() {
		return memberAge;
	}

	public void setMemberAge(int memberAge) {
		this.memberAge = memberAge;
	}

	public String getMemberGender() {
		return memberGender;
	}

	public void setMemberGender(String memberGender) {
		this.memberGender = memberGender;
	}

	public String getMemberEmail() {
		return memberEmail;
	}

	public void setMemberEmail(String memberEmail) {
		this.memberEmail = memberEmail;
	}

	public String getMemberZipcode() {
		return memberZipcode;
	}

	public void setMemberZipcode(String memberZipcode) {
		this.memberZipcode = memberZipcode;
	}

	public String getMemberAddress() {
		return memberAddress;
	}

	public void setMemberAddress(String memberAddress) {
		this.memberAddress = memberAddress;
	}

	public String getMemberAddressDetail() {
		return memberAddressDetail;
	}

	public void setMemberAddressDetail(String memberAddressDetail) {
		this.memberAddressDetail = memberAddressDetail;
	}
	
	@Override
	public String toString() {
		String str = "memberNumber : " + memberNumber + "\n";
		str += "memberId : " + memberId + "\n";
		str += "memberPw : " + memberPw + "\n";
		str += "memberName : " + memberName + "\n";
		str += "memberAge : " + memberAge + "\n";
		str += "memberGender : " + memberGender + "\n";
		str += "memberEmail : " + memberEmail + "\n";
		str += "memberZipcode : " + memberZipcode + "\n";
		str += "memberAddress : " + memberAddress + "\n";
		str += "memberAddressDetail : " + memberAddressDetail;
		return str;
	}
}

 

 

 

2. MemberDAO.java

package com.board.app.domain.dao;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.board.app.domain.vo.MemberVO;
import com.mybatis.config.MyBatisConfig;

public class MemberDAO {
	SqlSessionFactory sqlSessionFactory = MyBatisConfig.getSqlSessionFactory();
	SqlSession sqlSession; 
	
	public MemberDAO() {
		sqlSession = sqlSessionFactory.openSession(true);
	}
	
	//아이디 중복검사
	public boolean checkId(String memberId) {
		return (Integer)sqlSession.selectOne("Member.checkId", memberId) == 1;
	}
	
	//회원가입
	public void insert(MemberVO memberVO) {
		sqlSession.insert("Member.insert", memberVO);
	}
}

 

 

 

3. MemberMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http//mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Member">
	<select id="checkId" parameterType="string" resultType="_int">
		select count(member_number) from tbl_member where member_id = #{memberId}
	</select>	
	
	<insert id="insert" parameterType="memberVO">
		insert into tbl_member
		(member_id, member_pw, member_name, member_age, member_gender, member_email, member_zipcode, member_address, member_address_detail)
		values(#{memberId}, #{memberPw}, #{memberName}, #{memberAge}, #{memberGender}, #{memberEmail}, #{memberZipcode}, #{memberAddress}, #{memberAddressDetail});
	</insert>
</mapper>

 

 

 

4. config.xml

<?xml version="1.0" encoding="UTF-8"?>
http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>
	
	<typeAliases>
		<typeAlias type="com.board.app.domain.vo.MemberVO" alias="memberVO"/>
	</typeAliases> 

	<environments default="mysql">
		<environment id="mysql">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/board"/>
				<property name="username" value="root"/>
				<property name="password" value="1234"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/mybatis/mapper/MemberMapper.xml"/>
	</mappers>
	
</configuration>

 

 

 

5. MyBatisConfig.java

package com.mybatis.config;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisConfig {
	
	private static SqlSessionFactory sqlSessionFactory;
	
	static {
		try { 
			String resource = "./com/mybatis/config/config.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static SqlSessionFactory getSqlSessionFactory() {
		return sqlSessionFactory;
	}
}

 

 

 

6. MemberCheckIdOk.java

package com.board.app.member;

import java.io.IOException;
import java.io.PrintWriter;

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

import org.json.simple.JSONObject;
 
import com.board.app.action.Action;
import com.board.app.action.ActionInfo;
import com.board.app.domain.dao.MemberDAO;

public class MemberCheckIdOk implements Action {

	@Override
	public ActionInfo execute(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		req.setCharacterEncoding("UTF-8");
		MemberDAO memberDAO = new MemberDAO();
		PrintWriter out = resp.getWriter();
		String memberId = req.getParameter("memberId");
		JSONObject json = new JSONObject();
		
		
		if(memberDAO.checkId(memberId)) {
			json.put("result", "fail");
		}else {
			json.put("result", "success");
		}
		
		out.print(json.toJSONString());
		out.close();
		
		return null;
	}
	
}

 

 

 

7. join.js

/**
 * 
 */

// 주소 찾기(Daum API)
function find() {
    new daum.Postcode({
        oncomplete: function(data) {
            var addr = ''; // 주소 변수
            if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
                addr = data.roadAddress;
            } else { // 사용자가 지번 주소를 선택했을 경우(J)
                addr = data.jibunAddress;
            }

            // 우편번호와 주소 정보를 해당 필드에 넣는다.
            document.getElementById('zipcode').value = data.zonecode;
            document.getElementById("address").value = addr;
            // 커서를 상세주소 필드로 이동한다.
            document.getElementById("addressDetail").focus();
        }
    }).open();
} 

//이용 약관
const $all = $("#term");
const $inputs = $(".terms");

$all.on('click', function(){
    if($(this).is(":checked")){
        $inputs.prop('checked', true);
    }else{
        $inputs.prop('checked', false);
    }
});

$inputs.on('click', function(){
    var check = true;
    if(!$(this).is(":checked")){
        $all.prop('checked', false);
    }

    if($inputs.filter(":checked").length == 2){
        $all.prop('checked', true);
    }
});

//약관 펼쳐보기
const aTags = $("a.showTerm");
const textAreas = $("textArea.term-content");
let checkTerm1 = -1;
let checkTerm2 = -1;
aTags.on('click', function(e){
	e.preventDefault();
	
	if($(this).attr("href") == "term1-content"){
		$("#term1-content").slideToggle(function(){
			//토글이 끝나고 나서 실행될 기능 작성
			checkTerm1 *= -1;
			$(aTags[0]).text(checkTerm1 > 0 ? "닫기 X" : "펼쳐보기");
		});
		
	}else if($(this).attr("href") == "term2-content"){
		$("#term2-content").slideToggle(function(){
			checkTerm2 *= -1;
			$(aTags[1]).text(checkTerm2 > 0 ? "닫기 X" : "펼쳐보기");
		});
	}
});

//아이디 중복검사
let check = false;

function checkId(memberId){
	console.log(memberId);
	$.ajax({
		url: contextPath + "/member/MemberCheckIdOk.me?memberId=" + memberId,
		type: "get",
		dataType: "json",
		success: function(result){
			const $result = $("span#result");
			if(result.result == "success"){
				$result.text("사용가능한 아이디입니다.");
				$result.css("color", "blue");
				check = true;
			}else{
				$result.text("중복된 아이디입니다.");
				$result.css("color", "red");
				check = false;
			}
		}
	});
}


$("input#memberId").keyup(function(){
	checkId($(this).val());
})


function send(){
	
	if(!check){
		alert("아이디를 다시 확인해주세요.");
		return;
	}

	if(!$all.is(":checked")){
		alert("약관 동의가 필요합니다.");
		return;
	}
	
	joinForm.submit();
}
 

 

 

 

8. login.js

function send(){
	loginForm.submit();
}

 

 

 

 

 

'웹 개발 > JSP' 카테고리의 다른 글

[Web_JSP] 16  (0) 2022.06.04
[Web_JSP] 15  (0) 2022.06.03
[Web_JSP] 13  (0) 2022.06.01
[Web_JSP] 12  (0) 2022.05.31
[Web_JSP] 11  (0) 2022.05.30