▶ 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 = "SelectAl.jsp">전체 회원 확인하기</a>
<br>
<a href = "Delete.jsp">회원탈퇴</a>
</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>
▶Logincon.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 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 {
// 1. 데이터 가져오기
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
// 2. 하나로 묶기
IotMember vo = new IotMember(id, pw);
// 3. DAO 생성
DAO dao = new DAO();
// 4. dao.login 메소드 생성 --> 매개변수로 하나로 묶은 vo 전송
IotMember result = dao.login(vo);
// 5. 로그인 성공했다면
if(result != null) {
// 6. name 값은 member, value는 result를 담는 session 생성
HttpSession session = request.getSession();
session.setAttribute("member", result);
// 7. LoginSuccess.jsp로 이동
response.sendRedirect("LoginSuccess.jsp");
}else {
// 8. 로그인 실패했다면 Login.jsp로 이동
response.sendRedirect("Login.jsp");
}
// LoginSuccess.jsp 만들어서 이동하는지까지 확인하기!!!!
}
}
▶DAO.java
package com.smhrd.model;
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, delete, 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 {
// 1. 연결
sqlSession= sqlSessionFactory.openSession(true);
row = sqlSession.delete("com.smhrd.model.DAO.memberdelete", vo);
}catch (Exception e) {
e.printStackTrace();
}finally {
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;
}
}
▶ 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">
<!-- namespace : mapper 식별자(고유의 이름) -->
<!-- 절대 중복되면 안된다. 중복되는 순간 mapper를 찾지 못한다. -->
<mapper namespace="com.smhrd.model.DAO" >
<!-- Query문 작성해서 넣는 공간 -->
<!-- parameterType : mybais-config.xml 안에 alias로 정의해놨다! -->
<insert id="memberinsert" parameterType="IotMember">
insert into iotmember values(#{id},#{pw},#{age},#{nickname})
<!-- IotMember.java에 있는 필드명임 -->
</insert>
<delete id ="memberdelete" parameterType="IotMember">
delete from iotmember where id= #{id} and pw = #{pw}
</delete>
<!-- 로그인 쿼리 작성하기 -->
<!-- select구문 작성 시 결과값을 어떤 자료형으로 받아줄건지 resultType attribute로 작성해줘야한다. -->
<select id="memberlogin" parameterType="IotMember" resultType="IotMember">
select * from iotmember where id = #{id} and pw = #{pw}
</select>
</mapper>
▶ Iotmember.java
package com.smhrd.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@Data
@AllArgsConstructor
@RequiredArgsConstructor
public class IotMember {
// mybatis select 구문 사용 시 가져오는 컬럼의 순서와 맞춰서 작성하자
@NonNull private String id;
@NonNull private String pw;
private int age;
private String nickname;
}
▶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>
<!-- session안에 있는 데이터들 중 nickname값을 꺼내와서 OO님 환영합니다~ 출력
id : 실제아이디
nickname : 실제 닉네임
age : 실제나이
-->
<%
// 1. session안에 있는 데이터 꺼내오기
IotMember member = (IotMember)session.getAttribute("member");
String name = member.getNickname();
String id = member.getId();
int age = member.getAge();
%>
<h1>로그인 성공!</h1>
<h2><%=name %>님 환영합니다~~</h2>
<ul>
<li>ID : <%=id %></li>
<li>NickName : <%= name %></li>
<li>Age : <%=age %></li>
</ul>
</body>
</html>
'Maven Project' 카테고리의 다른 글
회원가입 실습 (0) | 2022.05.18 |
---|---|
전체회원 확인하기 (0) | 2022.05.17 |
회원 탈퇴 (0) | 2022.05.16 |
회원가입 (0) | 2022.05.16 |
Maven Project (0) | 2022.05.13 |