Spring/연습코드
20210613 홈페이지 기능만들기 연습(스프링 mvc)
김판다
2021. 6. 13. 23:57
[구성]
![]() |
![]() |
MemberController.java
@Controller
public class MemberController {
@Autowired
MemberService ms;
@GetMapping("index")
public String index() {
return "member/index";
}
@GetMapping("insert")
public String getInsert() {
return "member/insert";
}
@PostMapping("insert")
public String postInsert(MemberDTO dto) {
ms.insert(dto);
return "member/index";
}
@GetMapping("list")
public String list(Model model) {
ms.list(model);
return "member/list";
}
@GetMapping("login")
public String getLogin() {
return "member/login";
}
@PostMapping("login")
public String postLogin(HttpSession session, MemberDTO dto) {
ms.login(session, dto);
return "member/index";
}
@GetMapping("logout")
public String getLogout(HttpSession session) {
session.invalidate();
return "member/logout";
}
@GetMapping("delete")
public String getDelete() {
return "member/delete";
}
@PostMapping("delete")
public String postDelete(HttpSession session,
@RequestParam(value = "pw")String pw,
@RequestParam(value = "confirmPw")String confirmPw) {
boolean check = ms.delete((String)session.getAttribute("id"), pw, confirmPw);
if (check) {
return "redirect:logout";
} else {
return "redirect:delete";
}
}
@GetMapping("update")
public String getUpdate() {
return "member/update";
}
@PostMapping("update")
public String postUpdate(HttpSession session,
@RequestParam(value="pw")String pw,
@RequestParam(value="name")String name) {
ms.update((String)session.getAttribute("id"),pw, name);
return "redirect:logout";
}
}
MemberService.java
@Service
public class MemberService {
@Autowired MemberDAO dao;
public void insert(MemberDTO dto) {
dao.insert(dto);
}
public void list(Model model) {
model.addAttribute("list", dao.list());
}
public void login(HttpSession session, MemberDTO dto) {
MemberDTO memberdto = dao.login(dto);
if(memberdto != null) {
session.setAttribute("id", memberdto.getId());
session.setAttribute("pw", memberdto.getPw());
session.setAttribute("name", memberdto.getName());
}
}
public boolean delete(String id, String pw, String confirmPw) {
if(pw != null && pw.equals(confirmPw)) {
return dao.delete(id,pw);
}
return false;
}
public void update(String id, String pw, String name) {
dao.update(id, pw, name);
}
}
MemberDAO.java
@Repository
public class MemberDAO {
private ArrayList<MemberDTO> list;
public MemberDAO() {
list = new ArrayList<MemberDTO>();
}
public void insert(MemberDTO dto) {
list.add(dto);
}
public ArrayList<MemberDTO> list() {
return list;
}
public MemberDTO selectId(String id) {
for(MemberDTO tmp: list) {
if(tmp.getId().equals(id)) {
return tmp;
}
}return null;
}
public MemberDTO login(MemberDTO dto) {
MemberDTO memberdto = selectId(dto.getId());
if(memberdto != null && memberdto.getPw().equals(dto.getPw())) {
return memberdto;
}
return null;
}
public boolean delete(String id, String pw) {
MemberDTO dto = selectId(id);
if(dto.getPw().equals(pw)) {
return list.remove(dto);
}
return false;
}
public void update(String id, String pw, String name) {
MemberDTO dto = selectId(id);
int index = list.indexOf(dto);
dto.setPw(pw);
dto.setName(name);
list.set(index,dto);
}
}
MemberDTO.java
public class MemberDTO {
private String id;
private String pw;
private String name;
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 getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
View
lndex.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h2>20210613 연습</h2>
<a href="login">로그인</a>
<a href="logout">로그아웃</a>
<a href="insert">회원가입</a>
<a href="list">회원목록</a>
<a href="update">회원수정</a>
<a href="delete">회원탈퇴</a>
</body>
</html>
list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>list</title>
</head>
<body>
<h2>회원목록</h2>
<table border="1">
<tr>
<th>아이디</th>
<th>패스워드</th>
<th>이름</th>
</tr>
<c:choose>
<c:when test="${list.size() != 0}">
<c:forEach var="member" items="${list}">
<tr>
<td>${member.id }</td>
<td>${member.pw }</td>
<td>${member.name }</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr><td colspan="3">데이터 없음</td></tr>
</c:otherwise>
</c:choose>
<tr><td colspan="3"><a href="index">메인 페이지로 이동</a></td></tr>
</table>
</body>
</html>
jstl 조건문 <c:if> test : 조건 var: 결과를 저장할 변수 scope: 범위 <c:choose> <c:when> <c:otherwise> 자바로 치자면 when은 if, otherwise는 else if 라는 느낌이다. 설명 참조: https://intel199.tistory.com/35 |
insert.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>insert</title>
</head>
<body>
<h2>회원가입 </h2>
<form action="insert" method="post">
<input type="text" name = "id" placeholder="id"><br>
<input type="password" name = "pw" placeholder="password"><br>
<input type="text" name = "name" placeholder="name"><br>
<input type="submit" value = "확인">
<input type="button"value="취소" onclick="javascript:location.href='index';">
</form>
</body>
</html>
delete.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>delete</title>
</head>
<body>
<c:choose>
<c:when test="${empty id }">
<script>
alert('로그인 후 이용해주세요')
location.href="login";
</script>
</c:when>
</c:choose>
<h2>회원 탈퇴</h2>
<form action="delete" method="post">
아이디:${id }<br> 비밀번호: <input type="password" name="pw"
placeholder="password"><br> 비밀번호 확인: <input
type="password" name="confirmPw" placeholder="confirmPw"><br>
<input type="submit" value="확인"> <input type="button"
value="취소" onclick="javascript:location.href='index';">
</form>
</body>
</html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<h2>로그인</h2>
<c:choose>
<c:when test="${empty id }">
<form action="login" method="post">
<input type="text" name="id" placeholder="id"><br> <input
type="passwd" name=pw " placeholder="password"><br> <input
type="submit" value="로그인"> <input type="button" value="취소"
onclick="javascript:location.href='index';">
</form>
</c:when>
<c:otherwise>
${id }님은 로그인 되었습니다.<br>
<a href="index">메인 페이지로 이동하기</a>
</c:otherwise>
</c:choose>
</body>
</html>
logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<script>
alert('로그아웃');
location.href="index";
</script>
update.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>update</title>
</head>
<body>
<c:choose>
<c:when test="${empty id }">
<script>
alert('로그인 후 이용해주세요')
location.href="login";
</script>
</c:when>
</c:choose>
<h2>회원 탈퇴</h2>
<form action="update" method="post">
아이디:${id }<br>
비밀번호: <input type="password" name="pw" placeholder="password"><br>
이름: <input type="test" name="name" placeholder="name"><br>
<input type="submit" value="확인">
<input type="button"value="취소" onclick="javascript:location.href='index';">
</form>
</body>
</html>
후기
알고있는 방법이여도 또 다시 할때마다 아직 버퍼링이 걸린다.
익숙하지만 몇번 더 스스로 만들어보고 내것으로 만드는 과정이 필요하다.
앞으로 이렇게 연습해볼것이다.