본문 바로가기
강의

Spring Lec06

by IT새내기IM 2023. 5. 3.

create table tbl_member (

userid varchar(50) not null,

userpw varchar(50) not null,

username varchar(50) not null,

email varchar(100) default '',

regdate varchar(20) default '',

primary key(userid)

);

 


● 회원가입 1 - 냉무

MemberVO.java

package org.zerock.domain;

 

import lombok.Data;

 

@Data

public class MemberVO {

 

private String userid;

private String userpw;

private String username;

private String email;

private String regdate;

 

}

MemberDAO.java ( interface )

package org.zerock.persistence;

import org.zerock.domain.MemberVO;

public interface MemberDAO {
public void create(MemberVO vo) throws Exception; //회원가입
}

MemberDAOImpl.java

package org.zerock.persistence;

 

import javax.inject.Inject;

 

import org.apache.ibatis.session.SqlSession;

import org.springframework.stereotype.Repository;

import org.zerock.domain.MemberVO;

 

@Repository //MemberDAO를 스프링 구조에 인식 시키겠다고 선언

public class MemberDAOImpl implements MemberDAO {

 

@Inject

private SqlSession sqlSession;

 

private static final String namespace = "org.zerock.mapper.MemberMapper";

 

@Override

public void create(MemberVO vo) {

sqlSession.insert(namespace+".insertMember",vo);

}

 

}

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="org.zerock.mapper.MemberMapper">

 

<insert id="insertMember">

insert into tbl_member (userid, userpw, username, email, regdate) 

values (#{userid},#{userpw},#{username},#{email},#{regdate})

</insert>

 

</mapper>

-▶ MemberDAOTest.java

package org.zerock.controller;

 

import javax.inject.Inject;

 

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.zerock.domain.MemberVO;

import org.zerock.persistence.MemberDAO;

 

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spring/**/root-context.xml"})

public class MemberDAOTest {

 

@Inject

private MemberDAO dao;

 

@Test

public void testInsertMember() throws Exception{

MemberVO vo = new MemberVO();

 

vo.setUserid("1111");

vo.setUserpw("1111");

vo.setUsername("park");

vo.setEmail("1111@nate.com");

vo.setRegdate("2023-03-23 10:45:35");

 

dao.create(vo);

}

 

}

MemberService.java ( interface )

public interface MemberService {
public void regist(MemberVO member) throws Exception;
}

MemberServiceImpl.java

@Service //스프링 빈으로 인식되기 위해 선언

public class MemberServiceImpl implements MemberService{

 

@Inject

private MemberDAO dao;

 

@Override

public void regist(MemberVO member) throws Exception {

dao.create(member);

}

 

}

MemberController.java

@Controller

@RequestMapping("/member/*")

public class MemberController {

 

private static final Logger logger = LoggerFactory.getLogger(MemberController.class);

 

@Inject

private MemberService service;

 

@GetMapping("/join")

public void joinGET(MemberVO member) throws Exception {

logger.info("join get ...........");

}

 

@PostMapping("/join")

public String joinPOST(MemberVO member, RedirectAttributes rttr) throws Exception {

logger.info("join post ...........");

 

//오늘 날짜

java.util.Date today = new java.util.Date();

SimpleDateFormat cal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String signdate = cal.format(today);

 

member.setRegdate(signdate);

 

logger.info(member.toString());

 

service.regist(member);

return "redirect:/";

}

}

/member/join.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ include file="/WEB-INF/views/include/header.jsp" %>

<center>

<h3>JOIN PAGE</h3>

<form method="post">
<table>
<tr>
<td>아이디</td>
<td><input name="userid"></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input name="userpw"></td>
</tr>
<tr>
<td>이름</td>
<td><input name="username"></td>
</tr>
<tr>
<td>메일</td>
<td><input type="email" name="email"></td>
</tr>
<tr>
<td></td>
<td><button type="submit">회원가입</button></td>
</tr>
</table>
</form>

</center>

<%@ include file="/WEB-INF/views/include/footer.jsp" %>


● 로그인 - 냉무

LoginDTO.java

package org.zerock.dto;

 

import lombok.Data;

 

@Data

public class LoginDTO {

  private String userid;

  private String userpw;

}

MemberController

package org.zerock.controller;

import java.text.SimpleDateFormat;

import javax.inject.Inject;
import javax.servlet.http.HttpSession;

import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.zerock.domain.MemberVO;
import org.zerock.dto.LoginDTO;

@Controller
@RequestMapping("/member/*")
public class MemberController {

private static final Logger logger = LoggerFactory.getLogger(MemberController.class);

// @Inject
// private MemberService service;

// @Inject
// private MemberDAO dao;
@Inject
private SqlSession sqlSession;
private static final String namespace = "org.zerock.mapper.MemberMapper";
 
@GetMapping("/join")
public void joinGET(MemberVO member) throws Exception {
logger.info("join get ...........");
}

@PostMapping("/join")
public String joinPOST(MemberVO member, RedirectAttributes rttr) throws Exception {
logger.info("join post ...........");

//오늘 날짜
java.util.Date today = new java.util.Date();
SimpleDateFormat cal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String signdate = cal.format(today);

member.setRegdate(signdate);
logger.info(member.toString());
// service.regist(member);
// dao.create(member);
sqlSession.insert(namespace+".insertMember",member);

return "redirect:/";
}

@GetMapping("/login") 
public void loginGET() throws Exception {
logger.info("login get ...........");
}

@PostMapping("/login")
public String loginPOST(LoginDTO dto, HttpSession session) throws Exception {
logger.info("login post ...........");
logger.info(dto.toString());

MemberVO vo = sqlSession.selectOne(namespace+".login",dto);

if(vo != null) {
session.setAttribute("id", vo.getUserid());
session.setAttribute("name", vo.getUsername());
}
return "redirect:/";
}
}

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="org.zerock.mapper.MemberMapper">

 

<insert id="insertMember">

insert into tbl_member (userid, userpw, username, email) values (#{userid},#{userpw},#{username},#{email})

</insert>

 

<select id="login" resultType="MemberVO">

select * from tbl_member where userid = #{userid} and userpw = #{userpw}

</select>

 

</mapper>

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/views/include/header.jsp" %>

<center>

<h3>LOGIN PAGE</h3>

<form method="post">
<table>
<tr>
<td>아이디</td>
<td><input name="userid"></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input name="userpw"></td>
</tr>
<tr>
<td></td>
<td><button type="submit">로그인</button></td>
</tr>
</table>
</form>

</center>

<%@ include file="/WEB-INF/views/include/footer.jsp" %>

 

/include/header.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Spring Framework</title>

<link rel="stylesheet" href="/css/basic.css">

</head>

<body>

id : ${sessionScope.id}<br>

name : ${sessionScope.name}<br>

<table width=100% height=50 border=0>

<tr>

<td><a href="/"><img src="/img/logo.jpg" width=90></a></td>

<td align=right>

<c:choose>

<c:when test="${sessionScope.id != null }">

<a href="/member/logout">[로그아웃]</a>

<a href="/member/joinup">[회원수정]</a>

</c:when>

<c:otherwise>

<a href="/member/login">[로그인]</a>

<a href="/member/join">[회원가입]</a>

</c:otherwise>

</c:choose>

</td>

</tr>

<tr>

<td colspan=2 align=center>

<a href="/sboard/list">[listSearch]</a> 

<a href="/board/listPage">[listPage]</a>

<a href="/board/listCri">[listCri]</a>

<a href="/board/listAll">[listAll]</a>

</td>

</tr>

</table>

<hr>


◆ 로그인시 틀린 로그인 정보일 경우 ( 추가 ) - 냉무

 

MemberController

@PostMapping("/login")

public String loginPOST(LoginDTO dto, HttpSession session, MemberVO vo, RedirectAttributes rttr) throws Exception {

logger.info("login post ...........");

logger.info(dto.toString());

 

vo = sqlSession.selectOne(namespace+".login",dto);

 

if(vo != null) {

session.setAttribute("id", vo.getUserid());

session.setAttribute("name", vo.getUsername());

 

return "redirect:/";

}else {

rttr.addFlashAttribute("msg", "잘못된 로그인 정보 입니다.");

 

return "redirect:login";

}

 

}

 

/member/login.jsp

sasd

● 로그아웃 - MemberController.java

sasd


● 회원수정 - 냉무

MemberController.java



@Controller
@RequestMapping("/member/*")
public class MemberController {

private static final Logger logger = LoggerFactory.getLogger(MemberController.class);

// @Inject
// private MemberService service;

// @Inject
// private MemberDAO dao;
@Inject
private SqlSession sqlSession;
private static final String namespace = "org.zerock.mapper.MemberMapper";
 
@GetMapping("/join")
public void joinGET(MemberVO member) throws Exception {
logger.info("join get ...........");
}

@PostMapping("/join")
public String joinPOST(MemberVO member, RedirectAttributes rttr) throws Exception {
logger.info("join post ...........");

//오늘 날짜
java.util.Date today = new java.util.Date();
SimpleDateFormat cal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String signdate = cal.format(today);

member.setRegdate(signdate);
logger.info(member.toString());
// service.regist(member);
// dao.create(member);
sqlSession.insert(namespace+".insertMember",member);

return "redirect:/";
}

@GetMapping("/login") 
public void loginGET() throws Exception {
logger.info("login get ...........");
}

@PostMapping("/login")
public String loginPOST(LoginDTO dto, HttpSession session,RedirectAttributes rttr,MemberVO vo) throws Exception {
// Redirect의 경우 RedirectAttributes rttr을 사용하여 변수전달
logger.info("login post ...........");
logger.info(dto.toString());

vo = sqlSession.selectOne(namespace+".login",dto);

if(vo != null) {
session.setAttribute("id", vo.getUserid());
session.setAttribute("name", vo.getUsername());
return "redirect:/";
}else {
rttr.addFlashAttribute("msg", "잘못된 로그인 정보 입니다.");
return "redirect:login";
}
}

@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(HttpSession session) throws Exception {

session.invalidate();
return "redirect:/";
}

@GetMapping("/joinup")
public void joinupGET(MemberVO member, HttpSession session, Model model) throws Exception {
logger.info("joinup get ...........");

String session_id = (String)session.getAttribute("id");

member = sqlSession.selectOne(namespace+".join",session_id);

model.addAttribute("modify", member);
}



@PostMapping("/joinup")
public String joinupPOST(MemberVO member, RedirectAttributes rttr) throws Exception {
//jsp에서 post로 던지면 member에 자동 set (해당 모델의 필드명과 같아야)됨 
logger.info("joinup post ...........");
logger.info(member.toString());
sqlSession.update(namespace+".updateMember",member);
rttr.addFlashAttribute("msg","modify");

return "redirect:joinup";

}
}

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="org.zerock.mapper.MemberMapper">

<insert id="insertMember">
insert into tbl_member (userid, userpw, username, email, regdate) 
values (#{userid},#{userpw},#{username},#{email},#{regdate})
</insert>
<select id="login" resultType="MemberVO">
select * from tbl_member where userid = #{userid} and userpw = #{userpw}
</select>

<select id="join" resultType="MemberVO">
select * from tbl_member where userid = #{session_id}
</select>
<update id="updateMember">
update tbl_member set userpw = #{userpw}, username = #{username}, email = #{email}  where userid = #{userid}
</update>


</mapper>

/member/joinup.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ include file="/WEB-INF/views/include/header.jsp" %>

<script>
var msg = "${msg}";
if(msg == "modify"){

alert("수정 되었습니다.");

}
</script>

<center>

<h3>JOINUP PAGE</h3>

<form method="post">
<table>
<tr>
<td>아이디</td>
<td><input name="userid" value="${modify.userid }" readonly></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input name="userpw" value="${modify.userpw }"></td>
</tr>

<tr>
<td>이름</td>
<td><input name="username" value="${modify.username }"></td>
</tr>
<tr>
<td>메일</td>
<td><input name="email" value="${modify.email }"></td>
</tr>
<tr>
<td></td>
<td><button type="submit">회원수정</button></td>
</tr>
</table>
</form>

</center>

<%@ include file="/WEB-INF/views/include/footer.jsp" %>


 

 

 

'강의' 카테고리의 다른 글

Spring Lec08  (0) 2023.05.04
Spring Lec07  (0) 2023.05.03
Spring Lec05  (0) 2023.05.03
Spring Lec04  (0) 2023.04.28
Spring Lec03  (0) 2023.04.28

댓글