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단!!)
sts를 이용한 member의 뷰 파일들 (0) | 2021.08.09 |
---|---|
Board관련 sts 코드 (0) | 2021.08.09 |
AJAX, ERROR415, Qualifier, Input/button tag(에러 처리하기) (0) | 2021.08.07 |
웹소켓 기반으로 하는 채팅2 (0) | 2021.08.07 |
웹 소켓 기반 채팅 만들기 1 (0) | 2021.08.07 |