상세 컨텐츠

본문 제목

Member 관련 sts 코드

JAVA/Spring

by 영공쁘이 2021. 8. 9. 17:28

본문

mybatis-config.xml

 여기서는 alias라는 곳에 별칭을 적고 이것의 데이터 타입을 결정한다(*type으로)

   또한, mapper라는 태그를 이용하여 mybatis를 이용한 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 alias="member77" type="co.kr.Hello.dto.MemberDTO"/>
	  <typeAlias alias="Board77" type="co.kr.Hello.dto.BoardDTO"/>
	</typeAliases>

	<mappers>
		<mapper resource="/mybatis/member.xml"/>
		<mapper resource="/mybatis/board.xml"/>
	</mappers>
	
</configuration>

memberController.java

package co.kr.Hello;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.ibatis.session.SqlSession;//Mybatis
import java.util.*;//HashMap
import co.kr.Hello.dto.MemberDTO;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import javax.naming.NamingException;

import org.springframework.ui.Model;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.bind.annotation.ModelAttribute;

@Controller
public class MemberController {

	@Autowired
	private SqlSession sqlSession;//변수 *MyBatis를 쓰기위해 가져온 것!
	
	
	@RequestMapping("main.do")
	public String mm() {
		return "main";//뷰 리턴  //views/main.jsp
	}
	
	//회원가입폼
	@RequestMapping("insertForm.do")
	public String insertForm() {
		return "/member/insertForm";//views/member/insertForm.jsp 
	}
	
	//id중복체크
	@RequestMapping(value="confirmID", method=RequestMethod.POST)
	public String idCheck(String id,Model model) {
		int check=-1;
		MemberDTO memberDTO=sqlSession.selectOne("member.selectOne",id); //namespace.id
		if(memberDTO==null) {
			check=1;//사용가능한 id
		}else {
			check=-1;//사용 중인 id
		}
		
		model.addAttribute("check",check);
		return "member/confirmID";//뷰 리턴  confirmID.jsp
	}
	
	//회원가입
	@RequestMapping(value="insertPro.do",method=RequestMethod.POST)
	public String insertPro(@ModelAttribute("memberDTO") MemberDTO memberDTO,
			HttpServletRequest request) throws IOException,NamingException{
		
		String email1=request.getParameter("email1");
		String email2=request.getParameter("email2");
		String email=email1+email2;
		memberDTO.setEmail(email);
		
		String tel1=request.getParameter("tel1");
		String tel2=request.getParameter("tel2");
		String tel3=request.getParameter("tel3");
		String tel=tel1+tel2+tel3;
		memberDTO.setTel(tel);
		
		sqlSession.insert("member.insertMember",memberDTO);
 		return "main";//뷰 리턴
	}
	
	//로그인 폼
	@RequestMapping("loginForm.do")
	public String loginForm() {
		return "member/loginForm";//views/member/loginForm.jsp  뷰를 리턴 
	}
	
	//로그인 처리 로직
	@RequestMapping(value="loginPro.do",method=RequestMethod.POST)
	public String loginPro(String id,String pw,Model model) {
		//Map, HashMap
		HashMap<String, String> map=new HashMap<String,String>();//객체생성
		map.put("id", id);
		map.put("pw", pw);
		
		MemberDTO mdto=sqlSession.selectOne("member.selectLogin",map);
		
		if(mdto==null) {//로그인 실패
			model.addAttribute("msg","로그인실패");
			return "/member/loginForm";//뷰 리턴 loginForm.jsp
		}//if-end
		
		//로그인 성공
		model.addAttribute("mdto",mdto);
		return "member/loginSuccess";//loginSucess.jsp 뷰리턴
	}
	
	//로그아웃
	@RequestMapping("logOut.do")
	public String logOut() {
		return "/member/logOut";//뷰 리턴 logOut.jsp
	}
	
	//내 정보 수정 폼*******
	@RequestMapping(value="memUpdateForm.do",method=RequestMethod.POST)
	public String updateForm(String id,Model model) {
		
		MemberDTO mdto=sqlSession.selectOne("member.selectOne",id);
		
		//ppp@daum.net
		String email=mdto.getEmail();
		int idx=email.indexOf("@");    //@이 있는 자리를 구한다.
		String email1=email.substring(0,idx);//ppp
		String email2=email.substring(idx);//@daum.net
		
		model.addAttribute("email1",email1);
		model.addAttribute("email2",email2);
		
		//01023236767
		//0123456789012 : index
		String tel=mdto.getTel();
		String tel1=tel.substring(0,3);//010
		String tel2=tel.substring(3,7);//2323 3부터 7직전까지
		String tel3=tel.substring(7);//6767
		
		model.addAttribute("tel1",tel1);
		model.addAttribute("tel2",tel2);
		model.addAttribute("tel3",tel3);
		
		model.addAttribute("mdto",mdto);
		
		return "/member/updateForm";//뷰리턴     updateForm.jsp
	}
	
	//내 정보 수정 DB처리 
	@RequestMapping(value="memUpdatePro.do",method=RequestMethod.POST)
	public String memIpdatePro(@ModelAttribute("memberDTO") MemberDTO memberDTO,
			HttpServletRequest request) throws IOException,NamingException{
		
		String email1=request.getParameter("email1");
		String email2=request.getParameter("email2");
		String email=email1+email2;
		memberDTO.setEmail(email);
		
		String tel1=request.getParameter("tel1");
		String tel2=request.getParameter("tel2");
		String tel3=request.getParameter("tel3");
		String tel=tel1+tel2+tel3;
		memberDTO.setTel(tel);
		
		sqlSession.update("member.memberUpdate",memberDTO);
		
		return "main";//뷰 리턴
				 
	}
	
	//회원 탈퇴
	@RequestMapping("deleteMember.do")
	public String deleteMember(String id) {
		sqlSession.delete("member.memberDelete",id);
		return "main";//뷰 리턴
	}
}//class-end

memberDTO.java

package co.kr.Hello.dto;
import java.util.Date;
//모델빈
public class MemberDTO {
	//전역변수=필드=프로퍼티=property
	
	private String id;
	private String pw;
	private String name;
	
	private String email;
	private String tel;
	
	private String zipcode;
	private String addr;
	private String addr2;
	private Date regdate;
	
	public MemberDTO() {}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPw() {
		return pw;
	}

	public void setPw(String pw) {
		this.pw = pw;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getTel() {
		return tel;
	}

	public void setTel(String tel) {
		this.tel = tel;
	}

	public String getZipcode() {
		return zipcode;
	}

	public void setZipcode(String zipcode) {
		this.zipcode = zipcode;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getAddr2() {
		return addr2;
	}

	public void setAddr2(String addr2) {
		this.addr2 = addr2;
	}

	public Date getRegdate() {
		return regdate;
	}

	public void setRegdate(Date regdate) {
		this.regdate = regdate;
	}

	
}

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="member">

  <!-- id중복체크, 내정보 수정  -->
  <select id="selectOne" parameterType="String" resultType="member77"> 
   select * from member
   where id=#{id}
  </select>
  
  <!-- 회원가입 -->
  <insert id="insertMember" parameterType="co.kr.Hello.dto.MemberDTO">         
    insert into member(id,pw,name, email,tel, zipcode,addr,addr2,regdate)
    values(#{id},#{pw},#{name},#{email},#{tel},#{zipcode},#{addr},#{addr2},NOW())
  </insert>
  
  <!-- 로그인,map사용 -->
  <select id="selectLogin" parameterType="map" resultType="co.kr.Hello.dto.MemberDTO">
    select * from member
    where id=#{id} and pw=#{pw}
  </select>
  
  <!-- 내 정보 수정  -->
  <update id="memberUpdate" parameterType="co.kr.Hello.dto.MemberDTO">
   update member
   set pw=#{pw},name=#{name},email=#{email},tel=#{tel},zipcode=#{zipcode},
   addr=#{addr},addr2=#{addr2}
   where id=#{id}
  </update>
  
  <!-- 탈퇴 -->
  <delete id="memberDelete" parameterType="String">
   delete from member
   where id=#{id}
  </delete>
</mapper>



<!-- 정리: resultType, parameterType: 별칭으로, 컨트롤러에서 사용할 수가 있다. -->

+ 개념

위와 같이 함으로써, 현재 jsp상에서는 해당 id를 쓰지 못하더라도 위에 한 줄을 통해서 데이터를 가져올 수가 있다.

다른 곳에서 데이터를 가져와 쓸 경우를 말함(html단!!)

 

관련글 더보기