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 |
댓글