[구디아카데미][IT국비지원]
package vo;
public class Member {
public String memberId;
public String memberPw;
public String createdate;
public String updatedate;
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>home</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div>
<%
// request.getRequestDispatcher("/inc/mainmenu.jsp").include(request, response);
// 위 코드를 액션태그로 변경
%>
<div class="container">
<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<div class="container">
<!-- home 내용 : 로그인 폼/ 카테고리별 게시글 5개씩 -->
<!-- 로그인 폼 -->
<%
if(session.getAttribute("loginMemberId") == null) { // 로그인 정보가 없다면 로그인 폼 표시
%>
<form action="<%=request.getContextPath() %>/member/loginAction.jsp" method="post">
<table class="table table-bordered">
<tr>
<td class="table-dark">아이디</td>
<td><input type="text" name="memberId"></td>
</tr>
<tr>
<td class="table-dark">패스워드</td>
<td><input type="password" name="memberPw"></td>
</tr>
</table>
<button type="submit">로그인</button>
</form>
<%
}
%>
<!-- 카테고리별 게시글 5개씩 -->
</div>
<div class="container">
<!-- include 페이지 : Copyright © 구디아카데미 -->
<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.util.*" %>
<%@ page import="vo.*" %>
<%
// 세션 유효성 검사
if(request.getAttribute("loginMemberId") != null) {
response.sendRedirect(request.getContextPath()+"/home.jsp");
return;
}
// 요청값 유효성 검사
String memberId = request.getParameter("memberId");
String memberPw = request.getParameter("memberPw");
// 요청값 디버깅
System.out.println(memberId + " <-- loginAction parameter memberId");
System.out.println(memberPw + " <-- loginAction parameter memberPw");
// 요청값 객체에 묶어서 저장
Member paramMember = new Member();
paramMember.memberId = memberId;
paramMember.memberPw = memberPw;
// 객체 디버깅
System.out.println(paramMember.memberId + " <-- loginAction paramMember memberId");
System.out.println(paramMember.memberPw + " <-- loginAction paramMember memberPw");
// db 접속
String driver = "org.mariadb.jdbc.Driver";
String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
String dbuser = "root";
String dbpw = "java1234";
Class.forName(driver);
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
conn = DriverManager.getConnection(dburl, dbuser, dbpw);
// sql 전송
String sql = "SELECT member_id memberId FROM member WHERE member_id=? AND member_pw=PASSWORD(?)";
stmt = conn.prepareStatement(sql);
stmt.setString(1, paramMember.memberId);
stmt.setString(2, paramMember.memberPw);
// sql 디버깅
System.out.println(stmt + " <-- loginAction sql");
// 전송한 sql 실행값 반환
rs = stmt.executeQuery();
if(rs.next()){
// 세션에 로그인 정보 저장
session.setAttribute("loginMemberId", rs.getString("memberId"));
System.out.println("로그인 성공 세션정보 : " + session.getAttribute("loginMemberId"));
} else {
System.out.println("로그인 실패");
}
response.sendRedirect(request.getContextPath() + "/home.jsp?");
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 기존 세션을 지우고 갱신(초기화)
session.invalidate();
response.sendRedirect(request.getContextPath() + "/home.jsp");
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>insertMemberForm</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<%
// 세션 유효성 검사
if(session.getAttribute("loginMemberId") != null) {
response.sendRedirect(request.getContextPath()+"/home.jsp");
return;
}
%>
<div class="container">
<h1>회원가입</h1>
<form action="<%=request.getContextPath() %>/member/insertMemberAction.jsp" method="post">
<table class="table table-bordered">
<tr>
<td class="table-dark">아이디</td>
<td><input type="text" name="memberId"></td>
</tr>
<tr>
<td class="table-dark">패스워드</td>
<td><input type="password" name="memberPw"></td>
</tr>
</table>
<button type="submit">회원가입</button>
</form>
</div>
<div class="container">
<!-- include 페이지 : Copyright © 구디아카데미 -->
<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
<%@ page import="vo.*" %>
<%
//세션 유효성 검사
if(session.getAttribute("loginMemberId") != null) {
response.sendRedirect(request.getContextPath()+"/home.jsp");
return;
}
//요청값 유효성 검사
if(request.getParameter("memberId").equals("") // 아이디나 패스워드가 공백일때 회원가입 폼으로 가라
||request.getParameter("memberPw").equals("")) {
response.sendRedirect(request.getContextPath()+"/member/insertMemberForm.jsp");
return;
}
String memberId = request.getParameter("memberId");
String memberPw = request.getParameter("memberPw");
// 요청값 디버깅
System.out.println(memberId + " <-- insertMemberAction parameter memberId");
System.out.println(memberId + " <-- insertMemberAction parameter memberPw");
// 요청값 객체에 묶어서 저장
Member paramMember = new Member();
paramMember.memberId = memberId;
paramMember.memberPw = memberPw;
// 객체 디버깅
System.out.println(paramMember.memberId + " <-- insertMemberAction paramMember memberId");
System.out.println(paramMember.memberPw + " <-- insertMemberAction paramMember memberPw");
// db 접속
String driver = "org.mariadb.jdbc.Driver";
String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
String dbuser = "root";
String dbpw = "java1234";
Class.forName(driver);
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
conn = DriverManager.getConnection(dburl, dbuser, dbpw);
// sql 전송
String sql = "INSERT INTO member(member_id, member_pw, createdate, updatedate) VALUES (?, PASSWORD(?), NOW(), NOW())";
stmt = conn.prepareStatement(sql);
stmt.setString(1, paramMember.memberId);
stmt.setString(2, paramMember.memberPw);
// sql 디버깅
System.out.println(stmt + " <-- insertMemberAction sql");
// sql 실행 시 영향받는 행의 수 반환
int row = stmt.executeUpdate();
if(row == 1){ // 회원가입 성공
System.out.println("회원가입 성공");
} else { // 회원가입 실패
// 1. row == 0 -> 아이디 중복
// 2. row > 1 -> sql 오류? rollback
System.out.println("회원가입 실패");
}
response.sendRedirect(request.getContextPath() + "/home.jsp?");
%>