728x90
반응형
■ springController
□ com.quiz.mvc - HomeController.java (홈컨트롤러)
package com.quiz.mvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String home() {
return "member/index";
}
@RequestMapping("header")
public String header() {
return "default/header";
}
@RequestMapping("main")
public String main() {
return "default/main";
}
@RequestMapping("footer")
public String footer() {
return "default/footer";
}
}
□ com.quiz.mvc.controller - MemberController.java (컨트롤러)
package com.quiz.mvc.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
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 com.quiz.mvc.dto.MemberDTO;
import com.quiz.mvc.service.MemberService;
@Controller
public class MemberController {
@Autowired
private MemberService service;
@GetMapping("register")
public String register() {
return "member/register";
}
@PostMapping("register")
public String register(MemberDTO member, Model model) {
String msg = service.register(member);
model.addAttribute("msg", msg);
if (msg.equals(member.getId() + "님 가입 완료"))
return "member/index";
return "member/register";
}
@GetMapping("login")
public String login() {
return "member/login";
}
@PostMapping("login")
public String login(String id, String pw, Model model) {
String msg = service.login(id, pw);
model.addAttribute("msg", msg);
if (msg.equals("로그인 성공"))
return "member/index";
return "member/login";
}
@GetMapping("memberInfo")
public String memberInfo(Model model) {
model.addAttribute("members", service.memberInfo());
return "member/memberInfo";
}
@RequestMapping("userInfo")
public String userInfo(HttpServletRequest request, Model model) {
String id = request.getParameter("id");
MemberDTO member = service.userInfo(id);
if (member != null) {
model.addAttribute("member", member);
return "member/userInfo";
}
return "forward:memberInfo";
}
@Autowired
private HttpSession session;
@RequestMapping("logout")
public String logout() {
session.invalidate();
return "member/index";
}
@GetMapping("update")
public String update(String id) {
return "member/update";
}
@PostMapping("update")
public String update(MemberDTO member) {
String msg = service.update(member);
if(msg.equals("회원 수정 완료")) {
session.invalidate();
return "redirect:memberInfo";
}
return "member/update";
}
@GetMapping("delete")
public String delete(String id) {
String sessionId = (String)session.getAttribute("id");
if(id == null || id == "" || sessionId == null || sessionId == "")
return "redirect:memberInfo";
if(id.equals(sessionId) == false)
return "redirect:memberInfo";
return "member/delete";
}
@PostMapping("delete")
public String delete(MemberDTO member, Model model) {
String msg = service.delete(member);
if(msg.equals("회원 삭제 완료")) {
session.invalidate();
return "redirec:/";
}
model.addAttribute("msg", msg);
return "member/delete";
}
}
□ com.quiz.mvc.dto - MemberDTO.java (DTO)
package com.quiz.mvc.dto;
/*
* 아래의 필드 정보와 동일한
* mvc_quiz 테이블을 만들어주세요
* 각 컬럼의 사이즈는 자유롭게 구성해주세요
*/
public class MemberDTO {
private String id;
private String pw;
private String confirm;
private String username;
private String address;
private String mobile;
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 getConfirm() {
return confirm;
}
public void setConfirm(String confirm) {
this.confirm = confirm;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
□ com.quiz.mvc.repository - MemberDAO.java (DAO)
package com.quiz.mvc.repository;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import org.springframework.stereotype.Repository;
import com.quiz.mvc.dto.MemberDTO;
@Repository
public class MemberDAO {
private Connection con;
public MemberDAO() {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "spring1212";
String password = "oracle";
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
public void register(MemberDTO member) {
PreparedStatement ps = null;
String sql = "INSERT INTO mvc_quiz VALUES(?,?,?,?,?)";
try {
ps = con.prepareStatement(sql);
ps.setString(1, member.getId());
ps.setString(2, member.getPw());
ps.setString(3, member.getUsername());
ps.setString(4, member.getAddress());
ps.setString(5, member.getMobile());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(ps != null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public MemberDTO login(String id) {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SELECT * FROM mvc_quiz WHERE id=?";
try {
ps = con.prepareStatement(sql);
ps.setString(1, id);
rs = ps.executeQuery();
if(rs.next()) {
MemberDTO member = new MemberDTO();
member.setId(rs.getString("id"));
member.setPw(rs.getString("pw"));
member.setUsername(rs.getString("username"));
member.setAddress(rs.getString("address"));
member.setMobile(rs.getString("mobile"));
return member;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(rs != null) rs.close();
if(ps != null) ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
public ArrayList<MemberDTO> memberInfo() {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SELECT * FROM mvc_quiz";
ArrayList<MemberDTO> members = new ArrayList<MemberDTO>();
try {
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
MemberDTO member = new MemberDTO();
member.setId(rs.getString("id"));
member.setPw(rs.getString("pw"));
member.setUsername(rs.getString("username"));
member.setAddress(rs.getString("address"));
member.setMobile(rs.getString("mobile"));
members.add(member);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(rs != null) rs.close();
if(ps != null) ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return members;
}
public MemberDTO userInfo(String id) {
return login(id);
}
public void update(MemberDTO member) {
PreparedStatement ps = null;
String sql = "UPDATE mvc_quiz SET pw=?, username=?, address=?, mobile=? WHERE id=?";
try {
ps = con.prepareStatement(sql);
ps.setString(1, member.getPw());
ps.setString(2, member.getUsername());
ps.setString(3, member.getAddress());
ps.setString(4, member.getMobile());
ps.setString(5, member.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(ps != null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void delete(String id) {
PreparedStatement ps = null;
String sql = "DELETE FROM mvc_quiz WHERE id=?";
try {
ps = con.prepareStatement(sql);
ps.setString(1, id);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(ps != null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
□ com.quiz.mvc.service
package com.quiz.mvc.service;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.quiz.mvc.dto.MemberDTO;
import com.quiz.mvc.repository.MemberDAO;
@Service
public class MemberService {
@Autowired private MemberDAO memberDao;
public String register(MemberDTO member) {
if(member.getId().isEmpty() || member.getPw().isEmpty()) {
return "필수 정보입니다.";
}
if( member.getPw().equals(member.getConfirm()) == false) {
return "두 비밀번호는 일치하지 않습니다.";
}
MemberDTO result = memberDao.login(member.getId());
if(result != null) {
return "중복 아이디 입니다.";
}else {
memberDao.register(member);
return member.getId() + "님 가입 완료";
}
}
@Autowired private HttpSession session;
public String login(String id, String pw) {
if(id == null || id.isEmpty() || pw == null || pw.isEmpty())
return "필수 정보입니다.";
MemberDTO result = memberDao.login(id);
if(result == null)
return "아이디 또는 비밀번호가 일치하지 않습니다.";
if(result.getPw().equals(pw) == false)
return "아이디 또는 비밀번호가 일치하지 않습니다.";
session.setAttribute("id", result.getId());
session.setAttribute("username", result.getUsername());
session.setAttribute("address", result.getAddress());
session.setAttribute("mobile", result.getMobile());
return "로그인 성공";
}
public ArrayList<MemberDTO> memberInfo() {
return memberDao.memberInfo();
}
public MemberDTO userInfo(String id) {
if(id == null || id.isEmpty())
return null;
String sessionId = (String) session.getAttribute("id");
if(id.equals(sessionId) == false)
return null;
MemberDTO member = memberDao.userInfo(id);
return member;
}
public String update(MemberDTO member) {
if(member.getPw().isEmpty()) {
return "필수 정보입니다.";
}
if(member.getPw().equals(member.getConfirm()) == false) {
return "두 비밀번호는 일치하지 않습니다.";
}
String id = (String)session.getAttribute("id");
MemberDTO result = memberDao.login(id);
if(result != null) {
member.setId(id);
memberDao.update(member);
return "회원 수정 완료";
}else {
return "확인 후 다시 시도하세요.";
}
}
public String delete(MemberDTO member) {
if(member.getPw() == null || member.getPw().isEmpty()) {
return "비밀번호를 입력하세요.";
}
if(member.getPw().equals(member.getConfirm()) == false) {
return "두 비밀번호를 확인하세요.";
}
String id = (String)session.getAttribute("id");
MemberDTO check = memberDao.login(id);
if(check.getPw().equals(member.getPw())) {
memberDao.delete(id);
return "회원 삭제 완료";
}
return "비밀번호가 틀립니다.";
}
}
■ view 관련 jsp 파일들
□ views/default 파일들
header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>header</title>
<style type="text/css">
a {text-decoration: none; color:black;}
ul {padding: 20px;}
ul li {display: inline; padding: 15px;}
.main_div{height:150px;}
.font{text-align: center; width:100%; margin-bottom: 50px}
</style>
</head>
<body>
<div align="center">
<h1>CARE LAB</h1>
</div>
<c:url var="contextRoot" value="/" />
<div align="right">
<hr>
<ul>
<li><a href="${contextRoot }">HOME</a></li>
<c:choose>
<c:when test="${empty sessionScope.id }">
<li><a href="register">Register</a></li>
<li><a href="login">Login</a></li>
</c:when>
<c:otherwise>
<li><a href="memberInfo">memberInfo</a></li>
<li><a href="logout">Logout</a></li>
</c:otherwise>
</c:choose>
</ul>
<hr>
<div class="font"><font color="red">${msg }</font></div>
</div>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div align="center" class="main_div">더할 나위 없다.</div>
footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div align="center">
<hr>
Copyright CARE Lab. ALL rights reversed.
</div>
</body>
</html>
□ views/member 파일들
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:import url="/header" />
<c:import url="/main" />
<c:import url="/footer" />
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:import url="/header" />
<div align="center">
<h1>회원 등록</h1>
<table>
<tr><td>
<form action="register" method="post" id="f">
<input type="text" name="id" placeholder="아이디" id="id"> (*필수 항목) <br>
<input type="password" name="pw" placeholder="비밀번호" id="pw"><br>
<input type="password" name="confirm" placeholder="비밀번호 확인 " id="confirm">
<label id="label">(*필수 체크)</label><br>
<input type="text" name="username" id="username" placeholder="이름" ><br>
<input type="text" name="address" placeholder="주소" ><br>
<input type="text" name="mobile" placeholder="전화번호" ><br>
<input type="submit" value="회원가입" ><br>
</form>
</td></tr>
</table>
</div>
<c:import url="/footer" />
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:import url="/header" />
<div align="center">
<h1>로그인</h1>
<table>
<tr><td>
<form action="login" id="f" method="post">
<input type="text" name="id" placeholder="아이디" id="id"> <br>
<input type="password" name="pw" placeholder="비밀번호" id="pw"><br>
<input type="submit" value="로그인" ><br>
</form>
</td></tr>
</table>
</div>
<c:import url="/footer" />
mamberInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:import url="/header"/>
<div align="center">
<h1>회원 목록</h1>
<c:choose>
<c:when test="${members.isEmpty() == true }">
<h1> 등록된 데이터가 존재하지 않습니다. </h1>
</c:when>
<c:otherwise>
<table border=1>
<thead>
<tr>
<th>아이디</th>
<th>이름</th>
<th>전화번호</th>
</tr>
</thead>
<tbody>
<c:forEach var="member" items="${members }">
<tr>
<td onclick="location.href='userInfo?id=${member.id}'">
${member.id }
</td>
<td>${member.username }</td>
<td>${member.mobile }</td>
</tr>
</c:forEach>
</tbody>
</table>
</c:otherwise>
</c:choose>
</div>
<c:import url="/footer"/>
userInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:import url="/header" />
<div align="center">
<h1>개인 정보</h1>
아이디 : ${member.id } <br>
비밀번호 : ${member.pw }<br>
이름 : ${member.username } <br>
주소 : ${member.address } <br>
전화번호 : ${member.mobile } <br><br>
<button type="button" onclick="location.href='update?id=${member.id }'">회원 수정</button>
<button type="button" onclick="location.href='delete?id=${member.id }'">회원 삭제</button>
</div>
<c:import url="/footer" />
update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:import url="/header"/>
<div align="center">
<h1>회원 수정</h1>
<table>
<tr><td>
<form action="update" method="post" id="f">
<input type="text" id="id" value="${sessionScope.id }" readonly="readonly"><br>
<input type="password" name="pw" placeholder="비밀번호" id="pw"><br>
<input type="password" name="confirm" placeholder="비밀번호 확인 " id="confirm" >
<label id="label">(*필수 체크)</label><br>
<input type="text" name="username" id="username" value="${sessionScope.username }"><br>
<input type="text" name="address" value="${sessionScope.address }"><br>
<input type="text" name="mobile" value="${sessionScope.mobile }"><br>
<input type="submit" value="회원 수정"><br>
</form>
</td></tr>
</table>
</div>
<c:import url="/footer"/>
delete.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:import url="/header"/>
<div align="center">
<h1>회원 탈퇴</h1>
<table>
<tr><td>
<form action="delete" method="post" id="f">
<input type="text" value="${sessionScope.id }" readonly="readonly"> <br>
<input type="password" name="pw" placeholder="비밀번호"><br>
<input type="password" name="confirm" placeholder="비밀번호 확인" ><br>
<input type="submit" value="탈퇴"><br>
</form>
</td></tr>
</table>
</div>
<c:import url="/footer"/>
728x90
반응형
'IT&코딩 > Spring' 카테고리의 다른 글
Spring - 8일차 (dbQuiz) (0) | 2022.12.20 |
---|---|
Spring - 7일차 (dbConfig) (0) | 2022.12.20 |
Spring - 5일차 (MVC2 모델 실습) (0) | 2022.12.15 |
Spring - 4일차 (MVC2 모델 이론) (0) | 2022.12.15 |
Spring - 3일차 (MVC_2) (0) | 2022.12.12 |