728x90
※배포파일 가져오기/내보내기
내보내기 Project - 우클릭 - Export - 위치지정 및 파일명, Export Source files, Overwrite existing file 체크 - Finsh
가져오기 우클릭 - Import
웹 압축파일 war, 자바 압축파일 jar
MVC
package member;
import java.nio.file.attribute.AclEntry;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Timestamp;
public class MemberDAO {
//멤버 변수
//생성자 → 생략하면 자바가 알아서 자동으로 기본 생성자를 만듦
//멤버 함수(메소드)
//insertMember() 메소드 정의, 사용자가 만든 자료형
public void insertMember(MemberDTO memberDTO) {
System.out.println("memberDTO 주소(전달받은 그릇) : " + memberDTO);
System.out.println("전달 받은 아이디 : " + memberDTO.getId());
System.out.println("전달 받은 비밀번호 : " + memberDTO.getPw());
System.out.println("전달 받은 이름 : " + memberDTO.getName());
System.out.println("전달 받은 시간 : " + memberDTO.getDate());
}
try {
Class.forName("cohttp://m.mysql.cj.jdbc.Driver");
String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);
String sql = "insert into members(id,pw,name,date) value(?,?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, memberDTO.getId());
pstmt.setString(2, memberDTO.getPw());
pstmt.setString(3, memberDTO.getName());
pstmt.setTimestamp(4, memberDTO.getDate());
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
<%@page import="member.MemberDTO"%>
<%@page import="member.MemberDAO"%>
<%@page import="javax.websocket.SendResult"%>
<%@page import="java.sql.Timestamp"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="com.mysql.cj.xdevapi.PreparableStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/insertPro.jsp</title>
</head>
<body>
<h1>member/insertPro.jsp</h1>
<h1>회원가입완료</h1>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
//Timestamp 자바내장객체 : 자바에 날짜 시간 관련 정보를 저장하는 내장객체
//시스템 현 날짜 가져오기 → System.currentTimeMillis()
Timestamp date = new Timestamp(System.currentTimeMillis());
//여러 개의 데이터를 하나의 바구니(MemberDTO)에 담기
//패키지(폴더) member, 자바파일 MemberDTO 생성
//멤버 변수 setter getter 메서드 정의
//MemberDTO 객체 생성 → 기억장소 할당
//MemberDTO 객체 생성
MemberDTO memberDTO = new MemberDTO();
System.out.println("MemberDTO형(회원정보를 저장하는 그릇 주소)의 주소 : " + memberDTO);
//멤버변수에 request에 가져온 값을 set 메서드 호출해서 저장
memberDTO.setId(id);
memberDTO.setPw(pw);
memberDTO.setName(name);
memberDTO.setDate(date);
// 패키지(폴더) member, 자바파일 MemberDAO 생성
// insertMember() 메소드 정의
//MemberDAO 객체생성 → 기억장소를 할당/부여
//import="member.MemberDAO" 위치에서 가져오기
MemberDAO memberDAO = new MemberDAO();
System.out.println("MeberDAO형의 주소 : " + memberDAO);
memberDAO.insertMember(memberDTO);
//insertMember() 메소드 호출
//memberDAO.멤버변수
//memberDAO.메소드();
memberDAO.insertMember(memberDTO);
response.sendRedirect("02_login.jsp");
//login.jsp 이동
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp/login.jsp</title>
</head>
<body>
<h1>jsp4/login.jsp</h1>
<h1>로그인</h1>
<form action="02_loginPro.jsp" method="post">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pw"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
package member;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
public class MemberDAO {
//멤버 변수
//생성자 → 생략하면 자바가 알아서 자동으로 기본 생성자 만듦
//멤버 함수(메소드)
//insertMember() 메소드 정의, 내가 만든 자료형
/*public void insertMember(String id, String pw, String name, Timestamp date)
System.out.println("MemberDAO insertMember()");//이정표
System.out.println("전달받은 아이디 : " + id);
System.out.println("전달받은 비밀번호 : " + pw);
System.out.println("전달받은 이름 : " + name);
System.out.println("전달받은 시간 : " + date);
*/
public void insertMember(MemberDTO memberDTO) {
System.out.println("전달받은 그릇 memberDTO의 주소 : " + memberDTO);
System.out.println("전달받은 아이디 : " + memberDTO.getId());
System.out.println("전달받은 비밀번호 : " + memberDTO.getPw());
System.out.println("전달받은 이름 : " + memberDTO.getName());
System.out.println("전달받은 시간 : " + memberDTO.getDate());
try {
//1단계 Driver.class 파일 불러오기
Class.forName("com.mysql.cj.jdbc.Driver");
//2단계 불러온 파일을 이용해 DB연결
String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);
//3단계 연결 정보를 이용해서 SQL 구문을 만들고 실행할 수 있는 객체 생성
String sql = "insert into members(id,pw,name,date) value(?,?,?,?)";
PreparedStatement pstmt = con.prepareStatement(sql);
/*
pstmt.setString(1, id);
pstmt.setString(2, pw);
pstmt.setString(3, name);
pstmt.setTimestamp(4, date);
*/
pstmt.setString(1, memberDTO.getId());
pstmt.setString(2, memberDTO.getPw());
pstmt.setString(3, memberDTO.getName());
pstmt.setTimestamp(4, memberDTO.getDate());
//4단계 SQL구문 실행
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
//마무리
}
}//insertMember()
//userCheck() 메소드 정의
//MemberDAO에 리턴할 형 boolean
public boolean userCheck(String id, String pw) {
System.out.println("MemberDAO userCheck()");
boolean result = false;
try {
//예외(에러) 발생할 가능성이 높은 명령
Class.forName("com.mysql.cj.jdbc.Driver");
String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);
String sql = "select * from members where id=? and pw=?"; //괄호 확인하자
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pw);
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
System.out.println("ID, PW 일치");
result = true;
} else {
System.out.println("ID 또는 PW 불일치");
result = false;
}
} catch (Exception e) {
//에러가 발생하면, 에러를 처리하는 작업(에러메시지 출력)
e.printStackTrace();
} finally {
//마무리
}
return result;
}
}//class MemberDAO
<%@page import="member.MemberDAO"%>
<%@page import="member.MemberDTO"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp4/loginPro.jsp</title>
</head>
<body>
<h1>jsp4/loginPro.jsp</h1>
<h1>로그인 화면</h1>
<!-- 폼에서 입력한 내용이 서버에 전달 →서버에 request 내장객체에 저장
request에서 id, pass태그값(파라미터값)을 가져와서 변수에 저장 -->
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//MemberDAO 객체 생성 → 기억장소 할당
MemberDAO memberDAO = new MemberDAO();
System.out.println("MemberDAO의 기억장소주소 : " + memberDAO);
//MemberDAO에 리턴할 형 boolean userCheck(String id, String pw) 메소드 정의
//boolean result = MemberDAO 주소.userCheck(String id, String pw) 메소드 호출
boolean result = memberDAO.userCheck(id, pw);
// //5단계 결과를 이용해 다음 행 이동 → 아이디, 비밀번호 일치 출력, 아이디, 비밀번호 불일치
if(result == true){
out.println("아이디, 비밀번호 일치<br>");
out.println("로그인 성공<br>");
//아이디 비밀번호 일치하면 로그인 표시 설정(연결되어 있는 동안 페이지 상관없이 값을 유지)
//세션에 로그인 표시 저장("세션에 로그인 표시이름", 값)
session.setAttribute("id",id);
response.sendRedirect("03_main.jsp");//main.jsp 이동
} else{
out.println("아이디, 비밀번호 불일치<br>");
out.println("로그인 실패<br>");
response.sendRedirect("02_login.jsp");//login.jsp 이동
}
%>
</body>
</html>
public MemberDTO getMember(String id) {
System.out.println("MemberDAO getMember()");
MemberDTO memberDTO = new MemberDTO();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);
String sql = "select * from members where id=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
memberDTO.setId(rs.getString("id"));
memberDTO.setPw(rs.getString("pw"));
memberDTO.setName(rs.getString("name"));
memberDTO.setDate(rs.getTimestamp("date"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
} return memberDTO;
}
}
<%@page import="member.MemberDAO"%>
<%@page import="member.MemberDTO"%>
<%@page import="java.security.Timestamp"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/info.jsp</title>
</head>
<body>
<h1>member/info.jsp</h1>
<h1>회원 정보 조회</h1>
<%
String id = (String)session.getAttribute("id");
//()클래스의 형 변환
//main.jsp에서 info.jsp로 이동할 때 값을 들고오지 않음
//연결정보를 저장하는 session 내장객체 안에 로그인표시("id","id값") 저장
//session에서 로그인 표시값 가져오기 → String id 변수에 저장
request.setCharacterEncoding("utf-8");
//MemberDAO 객체 생성 -> 기억 장소 할당
MemberDAO memberDAO = new MemberDAO();
MemberDTO memberDTO = memberDAO.getMember(id);
//MemberDAO에 리턴할 형 MemberDTO getMember(String id) 메소드 정의
//MemberDTO memberDTO = MemberDAO의 기억장소 주소.getMember(id) 메소드 호출
//id가 일치했을 때 memberDTO에 id, pw, name, date가 저장해서 리턴,
//그렇지 않을 경우 memberDTO에 비어있는 값 null이 리턴
// //1단계 : Driver.class 자바실행 파일 불러오기
// Class.forName("com.mysql.cj.jdbc.Driver");
// //2단계 : 불러온 파일을 이용해 DB 연결 → 연결정보 저장
// String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
// String dbUser = "root";
// String dbPw = "1234";
// Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);
// //3단계 : 연결정보를 이용해 SQL구문을 만들고 실행할 수 있는 객체생성
// String sql = "select * from members where id=?";
// PreparedStatement pstmt = con.prepareStatement(sql);
// pstmt.setString(1, id);
// //4단계 : SQL 구문 실행 → 실행 후 결과 저장 → ResultSet 내장객체저장
// ResultSet rs = pstmt.executeQuery();
// //5단계 : 결과를 이용해서 출력
// if(rs.next()){
%>
아이디 : <%=memberDTO.getId() %> <br>
비밀번호 : <%=memberDTO.getPw() %> <br>
이름 : <%=memberDTO.getName() %> <br>
가입날짜 : <%=memberDTO.getDate() %> <br>
<%
// }
%>
<a href="main.jsp">main.jsp 이동</a>
</body>
</html>
728x90
'KDT > WEB' 카테고리의 다른 글
231221 WEB - JSP15(MVC) (0) | 2023.12.21 |
---|---|
231219 WEB - JSP14(MVC) (0) | 2023.12.19 |
231215 WEB - JSP12(데이터베이스 연결, MVC) (0) | 2023.12.15 |
231214 WEB - JSP11(데이터베이스 연결) (0) | 2023.12.14 |
231212 WEB - JSP10(데이터베이스 연결) (0) | 2023.12.12 |