728x90
* 디자인 패턴(Design Pattern)
: 소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해결책
디자인 패턴엔 MVC 패턴이라는 아주 중요한 개념이 있다!
1. MVC 패턴
: Model, View, Controller
: 시각적으로 보여지는 부분과 데이터를 처리하는 부분을 분리하여 유연한 구조를 설계
* JSP가 어디서 어떻게 쓰이는지
- Model1 : JSP에서 출력과 로직을 전부 컨트롤(view, controller)
- Model2 : JSP에서는 출력만 처리(view)
* Model1에서 view와 controller 둘 다 공통되는 JSP로 되는 이유
: < > / <% %> 이용해 HTML, JAVA 로직 쓸 수 있어서
* Model1의 단점을 보완해서 나온 것이 Model2
2. MVC Model1 방식
: M / VC 로 나눠 생각
3. MVC Model1 방식 실습
여기서 회원가입만 해보고 로그인 기능은 생략할 것이다!
model1은 잘 쓰지 않기 때문.,🤷♂️
1) 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>
<a href="Join.jsp"><button>회원가입</button></a> <br><br>
<a href="Login.jsp"><button>로그인</button></a>
</body>
</html>
2) 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>
</head>
<body>
<form action="JoinProgram.jsp" method="post"> <br>
<table>
<tr>
<td>ID :</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td>PW :</td>
<td><input type="text" name="pw"></td>
</tr>
<tr>
<td>NAME :</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="회원가입"></td>
</tr>
</table>
</form>
</body>
</html>
3-1) DTO - Servlet에서 jdbc 연결 위해 클래스 생성
jdbc만 나오면 아직 눈이 질끈 감기지만., 그래도 해야지😂😂
package Model;
public class DTO {
// 사용하고자 하는 데이터의 설계를 정리하는 부분
private String id;
private String pw;
private String name;
// 생성자 메소드 - 회원가입 용
public DTO(String id, String pw, String name) {
this.id = id;
this.pw = pw;
this.name = name;
}
// setter / getter 메소드 생성
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3-2) DAO - Servlet에서 jdbc 연결 위해 클래스 생성
package Model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DAO {
// 데이터베이스 연결을 위한 로직 작업
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
int result = 0;
// DB 연결 메소드
public void getCon() {
try {
// 문 열기
Class.forName("oracle.jdbc.driver.OracleDriver");
String db_url = "jdbc:oracle:thin:@localhost:1521:xe";
String db_id = "c##service";
String db_pw = "12345";
// 택배기사님
// 지역변수 -> 전역변수로 바꿔주기
conn = DriverManager.getConnection(db_url, db_id, db_pw);
} catch (Exception e) {
e.printStackTrace();
}
}
// DB 연결 종료하는 메소드 -> 사용 객체의 역순으로 닫힘
public void close() {
try {
if(rs != null) {
rs.close();
}if(psmt != null) {
psmt.close();
}if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 회원가입을 위한 메소드 생성
public int join(DTO dto) {
// 문 열기
getCon();
// 택배 준비
String sql = "insert into MemberInfo values(?, ?, ?)";
try {
psmt = conn.prepareStatement(sql);
psmt.setString(1, dto.getId());
psmt.setString(2, dto.getPw());
psmt.setString(3, dto.getName());
result = psmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 문 닫기
close();
}
return result;
}
}
* DB 연결하기
1. 드라이버 동적로딩 - Class.forName()
2. DB 연결
3. SQL 작성 및 전송
4. 사용 객체 닫아주기
* SQL 실행메소드
- executeQuery() : 조회(select) - 테이블 전후 내용이 바뀌지 않는
- executeUpdate() : 삽입, 수정, 삭제 - 테이블 전후 내용이 바뀌는
3) JoinProgram.jsp
<%@page import="Model.DTO"%>
<%@page import="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. 요청에 대한 인코딩 작업 진행하기
request.setCharacterEncoding("utf-8");
// 2. 요청에 대해 데이터 값 가져오기
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
// 3. DB에 저장하기
DAO dao = new DAO();
// import 해줘야 함 : JSP는 ctrl + space bar
// DTO dto = new DTO(id, pw, name);
// dao.join(dto);
int result = dao.join(new DTO(id, pw, name));
// 4. 회원가입에 대한 성공여부 판단
if(result > 0){
response.sendRedirect("Main.jsp");
System.out.print("회원가입 성공!");
}else{
response.sendRedirect("Join.jsp");
}
%>
</body>
</html>
728x90
'JSP&Servlet > 기초정리' 카테고리의 다른 글
JSP&Servlet 기초 - MVC Model2 방식 (0) | 2023.02.13 |
---|---|
Maven 방식 사용하기 (0) | 2023.02.13 |
JSP&Servlet 기초 - Scope (0) | 2023.02.08 |
JS&Servlet 기초 - 로그인 실습(세션 추가) (0) | 2023.02.07 |
JSP 기초 - 쿠키와 세션 (1) | 2023.02.03 |