반응형
JSP
JavaServer Pages의 약자를 뜻하며, HTML 코드에 JAVA 코드를 사용하여 동적 웹페이지(Dynamic Web Page)를 생성하는 웹 어플리케이션 도구(라이브러리)이다.
JSP가 실행되면 자바 "Servlet"으로 변환이 되며, 웹 어플리케이션 서버에서 동작되게 되며, 생성된 데이터들을 웹페이지와 클라이언트를 통해 응답을 한다.
JSP 프로젝트 생성
index 만들기
<%@page import="com.coffee.db.EmployeesDTO"%>
<%@page import="java.util.List"%>
<%@page import="com.coffee.db.EmployeesDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>12월 27일</title>
</head>
<body>
<h1>Departments</h1>
<%
// 여기는 자바 영역입니다.
EmployeesDAO dao = new EmployeesDAO(); // 객체 생성
List<EmployeesDTO> list = dao.selectDeptpartments(); // 실행
%>
<!-- html 영역 -->
<table border="1">
<tr>
<td>dept_no</td>
<td>dept_name</td>
</tr>
<% for(int i = 0; i < list.size(); i++ ) { %>
<tr>
<td><%=list.get(i).getDept_no() %></td>
<td><%=list.get(i).getDept_name() %></td>
</tr>
<% } %>
</table>
<a href="./employees.jsp">직원 목록 보기</a>
</body>
</html>
employees 만들기
<%@page import="com.coffee.db.EmployeesDTO"%>
<%@page import="java.util.List"%>
<%@page import="com.coffee.db.EmployeesDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>직원 목록</title>
</head>
<body>
<H1>직원 목록</H1>
<!-- 1. import DAO -->
<%
EmployeesDAO dao = new EmployeesDAO();
List<EmployeesDTO> list = dao.selectEmployees();
%>
<!-- 2. 값 받기 -->
<!-- 3. 값 출력 -->
<table border = "1">
<tr>
<td>emp_no</td>
<td>first_name</td>
<td>last_name</td>
<td>birth_date</td>
<td>gender</td>
<td>hire_date</td>
</tr>
<%
for(int i = 0; i < list.size(); i++) {
%>
<tr>
<td><%=list.get(i).getEmp_no() %></td>
<td><%=list.get(i).getFirst_name() %></td>
<td><%=list.get(i).getLast_name() %></td>
<td><%=list.get(i).getBirth_date() %></td>
<td><%=list.get(i).getGender() %></td>
<td><%=list.get(i).getHire_date() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
main 만들기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!-- jsp 형태 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>h1 입니다.</h1>
<h2>h2 입니다.</h2>
<h3>h3 입니다.</h3>
<태그 속성='값'> 화면에 보여줄 글자</태그>
<a href="./index.jsp">인덱스로 고~</a>
<p> p 태그는 단락 태그입니다.</p>
<div> div 태그는 영역 태그입니다.</div>
<br> br은 줄 바꿈입니다. <br>
<img> img는 이미지입니다. <br>
<hr> hr은 선을 그어줍니다. <br>
<pre> pre 사이에서는 원하는 모양으로 출력 됩니 다.
<b>글자를 굵게 만들어주는 b ~ </b>
</pre>
그럼 <strong> strong은? </strong> <br><br>
글자를 기울이는 <i>i 아이 태그~</i><br><br>
<del>취소선은 del을 사용하세요~ </del><br><br>
<ins>밑줄도 가능! ins를 사용하세요.</ins><br><br>
x<sup>2</sup> : 이건 x의 제곱 <br><br>
h<sub>2</sub>0 : h20 표현<br><br>
</body>
</html>
데이터베이스
DB 연결
package com.coffee.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
// 접속 정보만 가지고 있는 클래스
public class DBConnection {
public Connection getConnection() { // getConnection을 실행하면 Connection이 나옴
Connection con = null;
// 싱글턴 패턴화
try {
Class.forName("org.mariadb.jdbc.Driver");
String url = "jdbc:mariadb://------";
String user = "------";
String pw = "-----";
con = DriverManager.getConnection(url, user, pw);
} catch (ClassNotFoundException e) {
System.out.println("클래스가 없습니다.");
} catch (SQLException e) {
System.out.println("접속 정보를 확인하세요.");
}
return con;
}
}
DTO (데이터 전송 객체)
// 데이터 전송 객체 (Data Transfer Object)
package com.coffee.db;
public class EmployeesDTO { // private로 잠궈야함 (필수)
// 값을 담을 변수
private String dept_no, dept_name; // 다른 class에서 수정 불가 -> getter setter로 접근해야 함.
private int emp_no;
private String birth_date, first_name, last_name, hire_date;
private char gender;
// getter setter 메소드
public String getDept_no() {
return dept_no;
}
public void setDept_no(String dept_no) {
this.dept_no = dept_no;
}
public String getDept_name() {
return dept_name;
}
public void setDept_name(String dept_name) {
this.dept_name = dept_name;
}
public int getEmp_no() {
return emp_no;
}
public void setEmp_no(int emp_no) {
this.emp_no = emp_no;
}
public String getBirth_date() {
return birth_date;
}
public void setBirth_date(String birth_date) {
this.birth_date = birth_date;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public String getHire_date() {
return hire_date;
}
public void setHire_date(String hire_date) {
this.hire_date = hire_date;
}
public void setGender(char c) {
// TODO Auto-generated method stub
}
public char getGender() {
return gender;
}
// public void setGender(String string) {
// this.gender = string;
// }
}
DAO (데이터 접속 객체)
package com.coffee.db;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
// 데이터베이스 접속 객체 (Data Access Object)
public class EmployeesDAO {
DBConnection dbConn = new DBConnection(); // 객체 생성,
public List<EmployeesDTO> selectEmployees() {
List<EmployeesDTO> result = null;
// 접속 정보
Connection con = dbConn.getConnection();
// 객체, sql
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM employees LIMIT 0, 10";
// 로직
try {
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery(); // select문은 이 메소드로 실행함
result = new ArrayList<EmployeesDTO>();
while (rs.next()) {
EmployeesDTO dto = new EmployeesDTO();
dto.setEmp_no(rs.getInt(1));
dto.setBirth_date(rs.getString(2));
dto.setFirst_name(rs.getString(3));
dto.setLast_name(rs.getString(4));
dto.setGender(rs.getString(5).charAt(0));
dto.setHire_date(rs.getString(6));
result.add(dto);
}
} catch (SQLException e) {
} finally {
try {
rs.close();
pstmt.close();
con.close();
} catch (SQLException e) {
}
}
return result;
}
public List<EmployeesDTO> selectDeptpartments(){ // selectDeptpartments 구동시키면 List<EmployeesDTO> 리스트가 나옴
List<EmployeesDTO> result = null;
// 데이터베이스 접속 정보
Connection conn = dbConn.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
// sql
String sql = "SELECT * FROM departments";
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
// 데이터 만드는 작업
// while(rs.next()) { // rs 값이 없을 때까지 while 돌아감
// String dept_no = rs.getString(1); // DB에서는 1부터 시작! 순서대로하려면 숫자 입력
// String dept_name = rs.getString(2);
// System.out.println(dept_no + " : " + dept_name);
// }
result = new ArrayList<EmployeesDTO>();
while(rs.next()) {
EmployeesDTO dto = new EmployeesDTO(); // 한 줄 추출(튜플) 반복
dto.setDept_no(rs.getString(1));
dto.setDept_name(rs.getString(2));
result.add(dto); // dto를 한 줄 씩 '객체'로 저장 후 while
}
} catch (SQLException e) {
} finally {
try {
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
}
}
return result;
}
}
JSP 프로젝트 생성
index 페이지 만들기
<%@page import="com.coffee.db.EmployeesDTO"%>
<%@page import="java.util.List"%>
<%@page import="com.coffee.db.EmployeesDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>12월 27일</title>
</head>
<body>
<h1>Departments</h1>
<%
// 여기는 자바 영역입니다.
EmployeesDAO dao = new EmployeesDAO(); // 객체 생성
List<EmployeesDTO> list = dao.selectDeptpartments(); // 실행
%>
<!-- html 영역 -->
<table border="1">
<tr>
<td>dept_no</td>
<td>dept_name</td>
</tr>
<% for(int i = 0; i < list.size(); i++ ) { %>
<tr>
<td><%=list.get(i).getDept_no() %></td>
<td><%=list.get(i).getDept_name() %></td>
</tr>
<% } %>
</table>
<a href="./employees.jsp">직원 목록 보기</a>
</body>
</html>
employees 페이지 만들기
<%@page import="com.coffee.db.EmployeesDTO"%>
<%@page import="java.util.List"%>
<%@page import="com.coffee.db.EmployeesDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>직원 목록</title>
</head>
<body>
<H1>직원 목록</H1>
<!-- 1. import DAO -->
<%
EmployeesDAO dao = new EmployeesDAO();
List<EmployeesDTO> list = dao.selectEmployees();
%>
<!-- 2. 값 받기 -->
<!-- 3. 값 출력 -->
<table border = "1">
<tr>
<td>emp_no</td>
<td>first_name</td>
<td>last_name</td>
<td>birth_date</td>
<td>gender</td>
<td>hire_date</td>
</tr>
<%
for(int i = 0; i < list.size(); i++) {
%>
<tr>
<td><%=list.get(i).getEmp_no() %></td>
<td><%=list.get(i).getFirst_name() %></td>
<td><%=list.get(i).getLast_name() %></td>
<td><%=list.get(i).getBirth_date() %></td>
<td><%=list.get(i).getGender() %></td>
<td><%=list.get(i).getHire_date() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
main 페이지 만들기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!-- jsp 형태 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>h1 입니다.</h1>
<h2>h2 입니다.</h2>
<h3>h3 입니다.</h3>
<태그 속성='값'> 화면에 보여줄 글자</태그>
<a href="./index.jsp">인덱스로 고~</a>
<p> p 태그는 단락 태그입니다.</p>
<div> div 태그는 영역 태그입니다.</div>
<br> br은 줄 바꿈입니다. <br>
<img> img는 이미지입니다. <br>
<hr> hr은 선을 그어줍니다. <br>
<pre> pre 사이에서는 원하는 모양으로 출력 됩니 다.
<b>글자를 굵게 만들어주는 b ~ </b>
</pre>
그럼 <strong> strong은? </strong> <br><br>
글자를 기울이는 <i>i 아이 태그~</i><br><br>
<del>취소선은 del을 사용하세요~ </del><br><br>
<ins>밑줄도 가능! ins를 사용하세요.</ins><br><br>
x<sup>2</sup> : 이건 x의 제곱 <br><br>
h<sub>2</sub>0 : h20 표현<br><br>
</body>
</html>
반응형
'개발 공부 Today I Learned' 카테고리의 다른 글
[국비 28일차 TIL] 게시판 만들기 1 (게시글 작성 페이지, 삭제 등) (1) | 2023.12.29 |
---|---|
[국비 27일차 TIL] 자바 데이터베이스 연결, html, css, jsp (1) | 2023.12.28 |
[국비 25일차 TIL] JAVA 예외 처리, try catch finally (1) | 2023.12.27 |
[국비 24일차 TIL] Collection, List, Set, Map (2) | 2023.12.22 |
[국비 23일차 TIL] Wrapper, List, Set, Map (1) | 2023.12.21 |
댓글