데일리로그C:
Published 2023. 5. 9. 15:30
member_fullcode JAVA/spring

[ service, daoimpl,  controller - full 과정 ]

 

<model>

1. MemberVO.java

package org.zerock.model;

import lombok.Data;

@Data
public class MemberVO {

	private String userid;
	private String userpw;
	private String username;
	private String email;
	private String signdate;
}

 

<dto>

2. LoginDTO.java

package org.zerock.dto;

import lombok.Data;

@Data
public class LoginDTO {

	private String userid;
	private String userpw;
}

 

 

<dao>

3. MemberDAO.java

package org.zerock.dao;

import org.zerock.dto.LoginDTO;
import org.zerock.model.MemberVO;

public interface MemberDAO {

	public void create(MemberVO m) throws Exception; // 회원가입 insert

	public MemberVO login(LoginDTO dto) throws Exception; // 로그인 회원 한명
	
	public MemberVO joinup(String m) throws Exception; // 회원 수정 회원 한명
	
	public void update(MemberVO m) throws Exception; // 회원수정
	
}

 

 

4. MemberDAOImpl.java

package org.zerock.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import org.zerock.dto.LoginDTO;
import org.zerock.model.MemberVO;

@Repository
public class MemberDAOImpl implements MemberDAO{

	@Inject
	private SqlSession sqlSession;
	
	private static final String namespace = "org.zerock.mapper.MemberMapper";

	@Override
	public void create(MemberVO m) throws Exception {
		sqlSession.insert(namespace+".insertMember", m);
	}

	@Override
	public MemberVO login(LoginDTO dto) throws Exception {
		return sqlSession.selectOne(namespace+".login", dto);
	}

	@Override
	public MemberVO joinup(String m) throws Exception {
		return sqlSession.selectOne(namespace+".join", m);
	}

	@Override
	public void update(MemberVO m) throws Exception {
		sqlSession.update(namespace+".updateMember", m);
	}
	
	
	
	
}

 

 

5. MemberDAOTest.java

package org.zerock.controller;

import javax.inject.Inject;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.zerock.dao.MemberDAO;
import org.zerock.dto.LoginDTO;
import org.zerock.model.MemberVO;

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

	@Inject
	private MemberDAO dao;
	
	private static Logger logger = LoggerFactory.getLogger(MemberDAOTest.class);
	
	//@Test
	public void testInsertMember() throws Exception {
		MemberVO m = new MemberVO();
		
		m.setUserid("2222");
		m.setUserpw("2222");
		m.setUsername("이돌이");
		m.setEmail("2222@naver.com");
		m.setSigndate("2023-05-03 10:05:30");
		//logger.info(m.toString());
		//logger.info("join_ok====");
		
		//dao.create(m);
	}
	
	//@Test
	public void testlogin() throws Exception {
		
		LoginDTO dto = new LoginDTO();
		
		dto.setUserid("1111");
		dto.setUserpw("1111");
		
		logger.info(dao.login(dto).toString());
	}
	
	@Test
	public void testjoinup() throws Exception {
		MemberVO m = new MemberVO();
		
		m.setUserid("1111");
		m.setUserpw("1111");
		m.setUsername("일순이22");
		m.setEmail("1111@naver.com");
		
		dao.update(m);
		logger.info("수정완료==");
	}
	
}

 

<mapper>

5. 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 member (userid, userpw, username, email, signdate) values (#{userid}, #{userpw}, #{username}, #{email}, #{signdate})
	</insert>
	
	<select id="login" resultType="MemberVO">
    	select * from member where userid = #{userid} and userpw = #{userpw}
	</select>
	
	<select id="join" resultType="MemberVO">
		select * from member where userid = #{session_id}
	</select>
	
	<update id="updateMember">
		update member set userpw = #{userpw}, username = #{username}, email = #{email}  where userid = #{userid}
	</update>
</mapper>

 

<service>

6. MemberService.java

package org.zerock.service;

import org.zerock.dto.LoginDTO;
import org.zerock.model.MemberVO;

public interface MemberService {

	public void create(MemberVO m) throws Exception;
	
	public MemberVO login(LoginDTO dto) throws Exception; // 회원 한명(select)
	
	public MemberVO joinup(String m) throws Exception; // 회원 수정 회원 한명
	
	public void update(MemberVO m) throws Exception; // 회원수정
}

 

7. MemberServiceImpl.java

package org.zerock.service;

import javax.inject.Inject;

import org.springframework.stereotype.Service;
import org.zerock.dao.MemberDAO;
import org.zerock.dto.LoginDTO;
import org.zerock.model.MemberVO;

@Service
public class MemberServiceImpl implements MemberService{

	@Inject
	private MemberDAO dao;

	@Override
	public void create(MemberVO m) throws Exception {
		dao.create(m);
		
	}

	@Override
	public MemberVO login(LoginDTO dto) throws Exception {
		return dao.login(dto);
	}

	@Override
	public MemberVO joinup(String m) throws Exception {
		return dao.joinup(m);
	}

	@Override
	public void update(MemberVO m) throws Exception {
		dao.update(m);
	}
	
	
	
	
}

 

 

<controller>

8. MemberController.java

package org.zerock.controller;

import java.text.SimpleDateFormat;

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

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.zerock.dto.LoginDTO;
import org.zerock.model.MemberVO;
import org.zerock.service.MemberService;

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

	private Logger logger = LoggerFactory.getLogger(MemberController.class);
	
	@Inject
	private MemberService service;
	
	@GetMapping("/join")
	public void joinGET(MemberVO m) throws Exception {
		//logger.info("join get=====");
	}
	
	@PostMapping("/join")
	public String joinPOST(MemberVO m, RedirectAttributes rttr) throws Exception {
		//logger.info("join post=====");
		
		// 오늘날짜
		java.util.Date today = new java.util.Date();
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String signdate = sf.format(today);
		
		m.setSigndate(signdate);
		
		//logger.info(m.toString());
		
		service.create(m);
		
		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 m = service.login(dto);
		
		if(m != null) {
			session.setAttribute("id", m.getUserid());
			session.setAttribute("name", m.getUsername());
		}
		return "redirect:/";
		
	}
	
	@RequestMapping(value = "/logout", method = RequestMethod.GET)
	public String logout(HttpSession session) throws Exception {

	    session.invalidate();

	    return "redirect:/";
	}
	
	@GetMapping("/joinup")
	public void joinupGET(MemberVO m, HttpSession session, Model model) throws Exception {
		//logger.info("joinup get====");
		
		String session_id = (String)session.getAttribute("id");
		//logger.info(session_id);
		
		m = service.joinup(session_id); // m이라는 객체에 다시 담기(리턴 단계에서)
		
		model.addAttribute("modify", m); // 객체로 전달(jsp에서 modify.~~~ 로 사용)
	}
	
	@PostMapping("/joinup")
	public String joinupPOST(MemberVO m, RedirectAttributes rttr) throws Exception {
		//logger.info("joinup post======");
		//logger.info(m.toString());
		
		service.update(m);
		
		rttr.addFlashAttribute("msg", "modify"); // 수정 성공했다면 modify 전달
		
		return "redirect:joinup";
	}
	
	
}

 

 

 

[ controller 하나만으로 구현 ]

1. MemberController2.java

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.ui.Model;
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.dto.LoginDTO;
import org.zerock.model.MemberVO;

@Controller
@RequestMapping("/member2/*")
public class MemberController2 {

	private Logger logger = LoggerFactory.getLogger(MemberController2.class);
	
	@Inject
	private SqlSession sqlSession;
	
	private static final String namespace ="org.zerock.mapper.MemberMapper";
	
	@GetMapping("/join")
	public void joinGET(MemberVO m) throws Exception {
		//logger.info("join get=====");
	}
	
	@PostMapping("/join")
	public String joinPOST(MemberVO m, RedirectAttributes rttr) throws Exception {
		//logger.info("join post=====");
		
		// 오늘날짜
		java.util.Date today = new java.util.Date();
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String signdate = sf.format(today);
		
		m.setSigndate(signdate);
		
		//logger.info(m.toString());
		
		sqlSession.insert(namespace+".insertMember", m);
		
		return "redirect:/";
	}
	
	@GetMapping("/login")
	public void loginGET(MemberVO m) 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 m = sqlSession.selectOne(namespace+".login", dto);
		
		if(m != null) {
			session.setAttribute("id", m.getUserid());
			session.setAttribute("name", m.getUsername());
		}
		return "redirect:/";
	}
	
	@GetMapping("/joinup")
	public void joinupGET(MemberVO m, HttpSession session, Model model) throws Exception {
		//logger.info("joinup get ====");
		
		String session_id = (String)session.getAttribute("id");
		
		m = sqlSession.selectOne(namespace+".join",session_id);
		
		model.addAttribute("modify",m);
	}
	
	@PostMapping("/joinup")
	public String joinupPOST(MemberVO m, RedirectAttributes rttr) throws Exception {
		//logger.info("joinup post====");
		//logger.info(m.toString());
		
		sqlSession.update(namespace+".updateMember",m);
		
		rttr.addFlashAttribute("msg", "modify");
		
		return "redirect:joinup";
	}


	
}

 

2. 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 member (userid, userpw, username, email, signdate) values (#{userid}, #{userpw}, #{username}, #{email}, #{signdate})
	</insert>
	
	<select id="login" resultType="MemberVO">
    	select * from member where userid = #{userid} and userpw = #{userpw}
	</select>
	
	<select id="join" resultType="MemberVO">
		select * from member where userid = #{session_id}
	</select>
	
	<update id="updateMember">
		update member set userpw = #{userpw}, username = #{username}, email = #{email}  where userid = #{userid}
	</update>
</mapper>

 

 


<jsp>

1. login.jsp

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

<center>
<h3>로그인</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" %>

 

2. join.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/WEB-INF/views/include/header.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>

<style>
	span {
		text-align: left;
	}
</style>

</head>
<body>

<center>
<h3>회원가입</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 name="email"></td>
	</tr>
	
	<tr>
		<td colspan=2 ><button style="align-items: center;">회원가입</button></td>
	</tr>
</table>

</form>
</center>





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

 

 

3. 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" %>

'JAVA > spring' 카테고리의 다른 글

총정리  (0) 2023.05.10
Board_fullcode  (0) 2023.05.09
이클립스에 spring 연동시키는 법  (0) 2023.05.08
스프링 첨부파일 구현  (0) 2023.05.08
스프링 댓글 구현  (0) 2023.05.04
profile

데일리로그C:

@망밍

포스팅이 도움됐다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...