DAO.Java
package com.smhrd.model;
import java.util.ArrayList;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.smhrd.database.SqlSessionManager;
public class DAO {
private SqlSessionFactory sqlSessionFactory = SqlSessionManager.getsqlSession();
private SqlSession sqlSession = null;
public int join(IotMember vo) {
int row = 0;
try {
//1.db 연결
// openSession(boolean) --> 안쪽에 true를 넣으면 auto commit 가능
// openSession() ---> insert,delet,update할때마다 commit을 직접 해줘야 함!
sqlSession = sqlSessionFactory.openSession(true);
//2. 실행
row = sqlSession.insert("com.smhrd.model.DAO.memberinsert", vo);
}catch (Exception e) {
e.printStackTrace();
}finally {
//3. 자원반납
sqlSession.close();
}
return row;
}
public int delete(IotMember vo) {
int row = 0;
try {
sqlSession = sqlSessionFactory.openSession(true);
//2. 실행
row = sqlSession.delete("com.smhrd.model.DAO.memberdelete",vo);
}catch (Exception e) {
e.printStackTrace();
}finally {
//3. 자원반납
sqlSession.close();
}
return row;
}
public IotMember login(IotMember vo) {
IotMember result = null;
try {
//1. DB 연결(SQL Session 연결)
sqlSession = sqlSessionFactory.openSession(true);
//2. 로그인(select 하나만)
result = sqlSession.selectOne("com.smhrd.model.DAO.memberlogin",vo);
}catch (Exception e) {
e.printStackTrace();
}finally {
sqlSession.close();
}
return result;
}
//컴파일 상 문제가 발생할 수 있는 코드를 경고형태(노란밑줄)로 나타내는데
//해당하는 걸 사용하지 않겠다고 명시해주는 annotaion
@SuppressWarnings({ "unchecked", "rawtypes" })
public ArrayList<IotMember> selectAll() {
ArrayList<IotMember> result = null;
try {
sqlSession =sqlSessionFactory.openSession(true);
// selectList : select 시 여러개의 값(행)들을 되돌려 받고 싶을 때 사용하는 메소드
result =(ArrayList) sqlSession.selectList("com.smhrd.model.DAO.selectall");
}catch (Exception e) {
e.printStackTrace();
}finally {
sqlSession.close();
}
return result;
}
}
JoinCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.smhrd.model.DAO;
import com.smhrd.model.IotMember;
@WebServlet("/JoinCon")
public class JoinCon extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 한글 인코딩
request.setCharacterEncoding("UTf-8");
//2. 데이터 전부 가져오기
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String nickname = request.getParameter("nickname");
int age = Integer.parseInt( request.getParameter("age"));
//3.하나로 묶기
IotMember vo = new IotMember(id, pw, age, nickname);
//4. DB에 데이터 보내기
DAO dao = new DAO();
int row = dao.join(vo);
if(row >0) {
response.sendRedirect("main.jsp");
}else {
response.sendRedirect("Join.jsp");
}
}
}
LoinCon.java
package com.smhrd.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.smhrd.model.DAO;
import com.smhrd.model.IotMember;
@WebServlet("/LoginCon")
public class LoginCon extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//한글 인코딩
request.setCharacterEncoding("UTF-8");
//데이터 가져오기
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//2. 데이터 하나로 묶기
IotMember vo = new IotMember(id, pw);
//3. DB안에 있는 데이터를 조회하기
DAO dao = new DAO();
//4. dao.login 메소드 생성
IotMember result= dao.login(vo);
//6.name값은 member, value는 result를 담는 session 생성
if(result != null){
HttpSession session = request.getSession();
session.setAttribute("member", result);
//7. LoginSuccess.jsp로 이동
response.sendRedirect("LoginSuccess.jsp");
}else{
//8. 로그인 실패했다면 Login.jsp로 이동
response.sendRedirect("Login.jsp");
}
}
}
DeleteCon.java
package com.smhrd.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.smhrd.model.DAO;
import com.smhrd.model.IotMember;
@WebServlet("/DeleteCon")
public class DeleteCon extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//인코딩 모음
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset = UTF-8");
//1. 데이터 전부 가져오기
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//2. 데이터 하나로 묶기
IotMember vo = new IotMember(id, pw);
//3. DB안에 있는 데이터를 삭제하기
DAO dao = new DAO();
int row = dao.delete(vo);
//4. 삭제 성공했다면 Main.jsp로 이동
//5. 실패했다면 회원탈퇴 실패라고 출력!
if(row >0) {
response.sendRedirect("main.jsp");
}else {
PrintWriter out =response.getWriter();
out.print("회원탈퇴 실패!");
}
}
}
SelectAllCon.java
package com.smhrd.controller;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.smhrd.model.DAO;
import com.smhrd.model.IotMember;
@WebServlet("/SelectAllCon")
public class SelectAllCon extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//아무런 조건 없이 데이터 모두 선택해서 가져올 예정
//1.DB 데이터 전부 가져오기
DAO dao = new DAO();
//2.selectAll 메소드 생성
ArrayList<IotMember> list = dao.selectAll();
//3.request 담아주기
// 2-1) 공유하고 싶은 데이터를 request 객체에 담기
request.setAttribute("list",list);
// 2-2) 전송할 수 있는 도구를 하나 꺼내오기
RequestDispatcher rd = request.getRequestDispatcher("select.jsp");
// 2-3) 도구를 사용해서 데이터를 보내주기
rd.forward(request, response);
//4.foward방식으로 select.jsp로 이동하기
}
}
Join.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
input {
display : block;
}
</style>
</head>
<body>
<form action ="JoinCon" method = "post">
ID : <input type ="text" name ="id">
PW : <input type = "password" name = "pw">
AGE : <input type = "text" name = "age">
NickName : <input type ="text" name ="nickname">
<input type ="submit" value = "회원가입">
</form>
</body>
</html>
Login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
input{
display : block;
}
</style>
</head>
<body>
<h1>로그인 페이지</h1>
<form action = "LoginCon" method = "post">
ID : <input type = "text" name = "id">
PW : <input type = "password" name = "pw">
<input type = "submit" value = "로그인">
</form>
</body>
</html>
LoginSuccess.jsp
<%@page import="com.smhrd.model.IotMember"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인 성공</h1>
<!-- session 안에 있는 데이터들 중 nickname값을 꺼내와서
oo님 환영합니다~ 출력
id : 실제 아이디
nickname : 실제 닉네임
age : 실제 나이
-->
<%
//1. session안에 있는 데잍 가져오기
IotMember member = (IotMember) session.getAttribute("member");
%>
<b><%=member.getNickname()%>님 환영합니다!</b>
<br>
<ul>
<li>ID : <%=member.getId() %></li>
<li>NickName : <%=member.getNickname() %> </li>
<li>Age : <%=member.getAge() %> </li>
</ul>
</body>
</html>
Main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>메인페이지</h1>
<a href = "Join.jsp">회원가입</a>
<br>
<a href = "Login.jsp">로그인</a>
<br>
<a href = "SelectAllCon" >전체 회원 확인하기</a>
<br>
<a href = "Delete.jsp">회원탈퇴</a>
</body>
</html>
select.jsp
<%@page import="com.smhrd.model.IotMember"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//1. request안에 들어있는 list 데이터 꺼내오기
ArrayList<IotMember> list = (ArrayList <IotMember>)request.getAttribute("list");
//2. table에 ID, NickName, Age순으로 출력
%>
<table border = "1px solid black">
<tr>
<td>아이디</td>
<td>닉네임</td>
<td>나이</td>
</tr>
<%
for (int i = 0; i < list.size(); i++) {
out.print("<tr>");
out.print("<td>" + list.get(i).getId() + "</td>");
out.print("<td>" + list.get(i).getAge() + "</td>");
out.print("<td>" + list.get(i).getNickname() + "</td>");
out.print("</tr>");
}
%>
</table>
</body>
</html>
Delete.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
input{
display : block;
}
</style>
</head>
<body>
<form action ="DeleteCon" method = "post">
ID : <input type = "text" name ="id">
PW : <input type = "password" name ="pw">
<input type = "submit" value = "회원탈퇴">
</form>
</body>
</html>