[ 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 |