▶ Model1 실습
1) iot 테이블 만들기
create table iotmember(
id varchar2(20) primary key,
pw varchar2(20) not null,
age number,
nickname varchar2(30)
)
select * from iotmember;
2) Main 페이지
<%@ 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>
<!-- view 역할 -->
<h1>메인페이지</h1>
<a href = "ex01Join.jsp">회원가입</a>
<br>
<a href = "ex01Login.jsp">로그인</a>
</body>
</html>
3) Join 페이지
<%@ 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>
<!-- view 역할 -->
<form action= "ex01JoinService.jsp" method="post">
ID: <input type = "text" name = "id">
<br>
PW: <input type = "password" name = "pw">
<br>
NAME: <input type = "text" name = "name">
<br>
AGE : <input type = "text" name = "age">
<br>
<input type = "submit" value = "회원가입">
</form>
</body>
</html>
4) Join servie 페이지
<%@page import="com.smhrd.model.DAO"%>
<%@page import="com.smhrd.model.IotMemberVO"%>
<%@ 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>
<!-- 흐름을 제어하는 Controller 역할 -->
<%
// ex01 Join.jsp에서 보내주는 4개의 데이터 전부 받아오기
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
int age= Integer.parseInt(request.getParameter("age"));
// 2. 받아온 데이터를 하나의 자료형으로 묶어주기
IotMemberVO iotmember = new IotMemberVO(id,pw,name,age);
// 3. DB 데이터 전송
DAO dao = new DAO();
int row = dao.join(iotmember);
// 4. 흐름 제어
if(row >0 ){
// ex01Main.jsp로 이동
response.sendRedirect("ex01Main.jsp");
} else{
// ex01Join.jsp로 이동
response.sendRedirect("ex01Join.jsp");
}
%>
</body>
</html>
5) Login 페이지
<%@ 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>
<form action="ex01LoginService.jsp" method = "post">
ID : <input type = "text" name = "id">
<br>
PW : <input type = "password" name = "pw">
<br>
<input type = "submit" value = "로그인" >
</form>
</body>
</html>
6) Login servie 페이지
<%@page import="com.smhrd.model.IotMemberVO"%>
<%@page import="com.smhrd.model.DAO"%>
<%@ 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 사용자가 입력한 데이터가 테이블에 존재하는 지 여부 판단
// 1) 사용자가 입력한 데이터 꺼내오기
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
// 2) 입력한 데이터를 하나의 자료형으로 묶기 / id,pw ---> 한명에 대한 정보이니까 하나로 묶기
IotMemberVO vo = new IotMemberVO(id,pw);
// 3) DB에 접근 --> DAO
DAO dao = new DAO();
// 4) 입력한 데이터가 테이블 내에 존재하는지 비교 (우선 임의로 login 메소드 만들어서 DAO에서 메소드 만들어주기)
dao.login(vo);
// DAO에서 메소드 다 만들고나서 boolean check에 dao.login(vo) 담아주기
boolean check = dao.login(vo);
// 5) 성공 실패여부를 판별하여 성공했다면 success page
// 실패했다면 fail page로 이동 흐름 제어
if(check){
// 성공
response.sendRedirect("ex01LoginSuccess.jsp");
} else{
// 실패
response.sendRedirect("ex01LoginFail.jsp");
}
%>
</body>
</html>
7) LoginSuccess 페이지
<%@ 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>
<br>
<a href="ex01Main.jsp">main으로 돌아가기 </a>
</body>
</html>
8) LoginFail 페이지
<%@ 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>
<br>
<a href="ex01Main.jsp">main으로 돌아가기 </a>
<a href="ex01Login.jsp">login으로 돌아가기 </a>
</body>
</html>
* DAO 페이지
package com.smhrd.model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DAO {
// DB로 연결해주는 자료형 -> DAO
// JDBC 코드 가지고 있는 자료형
private Connection conn = null;
private PreparedStatement psmt = null;
private ResultSet rs = null;
// 1. DB 연결을 위한 메소드
private void getConn() {
try {
// 1) 드라이버 동적 로딩
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2) DB 연결
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "hr";
String password = "hr";
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 2. DB 자원반납 메소드
private void getClose() {
try {
if (rs != null) {
rs.close();
}
if (psmt != null) {
psmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 3. 회원정보를 데이터베이스에 저장할 수 있는 메소드
public int join(IotMemberVO vo) {
int row = 0;
try {
getConn();
String sql = "insert into iotmember values(?,?,?,?)";
psmt = conn.prepareStatement(sql);
// DB 표 만든 순서대로 넣어줘야함!
psmt.setString(1, vo.getId());
psmt.setString(2, vo.getPw());
psmt.setInt(3, vo.getAge());
psmt.setString(4, vo.getName());
// 실행 후 되돌아온 정수형 데이터가 의미하는건 데이터베이스 내부에서 영향을 받은 행의 개수이다.
row = psmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
getClose();
}
return row;
}
// 4. 로그인 메서드 만들기
public boolean login(IotMemberVO vo) {
boolean check = false; // 기본값 false임
try {
getConn();
String sql = "select * from iotmember where id=? and pw=?";
psmt = conn.prepareStatement(sql);
psmt.setString(1, vo.getId());
psmt.setString(2, vo.getPw());
rs = psmt.executeQuery();
// rs(테이블개념)에 데이터가 있는지 없는지 확인해야함, next로 데이터있으면 true, 없으면 false를 돌려줌
check = rs.next();
} catch (SQLException e) {
e.printStackTrace();
} finally {
getClose();
}
return check;
}
}
* IotMemberVO 페이지
package com.smhrd.model;
public class IotMemberVO {
// IotMemberVO -> DAO -> DB
// 한명에 대한 정보를 저장할 수 있는 자료형
private String id;
private String pw;
private int age;
private String name;
// 생성자 만들기
public IotMemberVO(String id, String pw, String name, int age) {
this.id = id;
this.pw = pw;
this.age = age;
this.name = name;
}
public IotMemberVO(String id, String pw) {
this.id = id;
this.pw = pw;
}
// getter 메소드 만들기
public String getId() {
return id;
}
public String getPw() {
return pw;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
'JSP' 카테고리의 다른 글
게시판 실습 (MVC) (0) | 2022.05.24 |
---|---|
JSP Servlet JDBC연결- <MVC Pattern> Model2 실습 (0) | 2022.05.12 |
JSP Servlet JDBC연결- <MVC Pattern> (0) | 2022.05.11 |
세션(Session) 실습 (0) | 2022.05.09 |
세션(Session) (0) | 2022.05.09 |