TIL/academy

국비 TIL(Today I Learned) 20220531 jsp랑 DB랑 연결하기

토희 2022. 5. 31. 17:48
728x90

mariadb jar

https://mariadb.org/download/?t=connector&p=connector-java&r=2.7.3&os=universal 

 

Download MariaDB Server - MariaDB.org

REST API Release Schedule Reporting Bugs … Continue reading "Download MariaDB Server"

mariadb.org

다운로드 한거를 이클립스에 붙이기 WEB-INF의 lib 안에 넣어줘야 데이터 가져올수 있음

lib에 넣어주면 Bulid path쪽에도 파일이 들어가 있어야함

 

기본 샘플, 밑에 코드처럼 해서 불러오기 ( 밑에 코드는 기존 DB 불러온거고) select * from emp;

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	//아이피를 페이지마다 박아두면, 보완성 떨어지고, 코드를 다 페이지마다 붙여야함, 그래서 비즈니스로직 분리시키기 MVC기법, 모델2
	// 요즘 DB에서 데이터를 배열로 담아와서 뿌림(2만개 정도만 가능)
	String driver_class = "org.mariadb.jdbc.Driver";
	String db_url = "jdbc:mariadb://127.0.0.1:3306/mydb";
	String username = "root";
	String password = "1234";
	
	Connection conn = null; // DB와 연결 담당
	Statement stmt = null;  // 쿼리를 실행시킨다
	ResultSet rs = null;    // 결과 담아오기
	
	try{
		Class.forName(driver_class);
		conn = DriverManager.getConnection(db_url, username, password);
		System.out.println("연결성공");
		
		stmt = conn.createStatement();
		String sql = "select * from emp";
		rs = stmt.executeQuery(sql); // DB에서 데이터를 가져온다.
		while(rs.next()){ // 데이터가 있는 동안 
			out.println( String.format("%s %s",rs.getString(1),
					rs.getString(2))+"<br/>");
		}
	} catch(ClassNotFoundException e){
		System.out.println("드라이브 로딩 실패");
	} catch(SQLException e){
		System.out.println("연결 실패");
	} finally {
		if(rs!=null)   rs.close();
		if(stmt!=null) stmt.close();
		if(conn!=null) conn.close();
	}

%>
</body>
</html>

 

 

하이디sq에서 테이블 새로 만들기

USE mydb;

INSERT INTO tb_board1(title, writer, contents, wdate, hit) VALUES ('제목1','작성자1','내용1',NOW(),0);
INSERT INTO tb_board1(title, writer, contents, wdate, hit) VALUES ('제목2','작성자2','내용2',NOW(),0);
INSERT INTO tb_board1(title, writer, contents, wdate, hit) VALUES ('제목3','작성자3','내용3',NOW(),0);

SELECT * FROM tb_board1;

 

 

테이블 만들어서 가져와도 보고,  코드 나눠서도 해보고 

 

DTO, DAO 차이랑 controller

Dto - Data Transfer Object : 데이터를 담아다니는 클래스
 join을 할 경우에는 조인한 필드로 추가
아니면 테이블단위로 하나의 클래스를 만든다.
필드개수만큼 변수 추가, 필드명과 변수명이 같으면 좀 편하다.

Dao- Data Access Object : 데이터 베이스에 가서 데이터 읽고 쓰기 담당 클래스 

 

이렇게 써주셔도 난 아직 뭔말인지 모르겠다

그리고

<% %>

<%= %>

이거랑 차이가 뭔데!!!!!! 밑에 이런거!!

이렇데

https://programmingsummaries.tistory.com/74

 

JSP 정리 - Java Server Page

JSP는 서버측에서 실행. <% 여기에 JSP 문법이 들어감 %> Apache Tomcat이 웹서버와 WAS의 역할을 동시에 감당..한다고하네.. WAS는 BEA의 웹로직, IBM의 웹스피어, Tmax의 Jeus, 아파치의 톰캣 등. 톰캣은 http:/.

programmingsummaries.tistory.com

이 블로그에 어제 한 inclue에 대해서도 문법 나옴

 

 

이부분 띄어쓰기 안했다고 오류 났다

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '=1' at line 1

이런 에러

 

 

 

https://github.com/saehee15/aca_java/tree/main/project2/src/main

 

GitHub - saehee15/aca_java

Contribute to saehee15/aca_java development by creating an account on GitHub.

github.com

커밋메세지: 20220531_ 데이터베이스랑 연결, 경로 잘 봐야함, 다를수있음, mariadb jar 파이를 따로 commit x, 다운받아줘야함

워크스페이스2에서 작업물을 1로 복사해서 넣었는데 그 중에 못 넣은게 있다.

어제 defalut.jsp에 경로를  <h3><a href="${context}/board.do">게시판</a></h3> 이걸로 바꿔줘야 오늘 작업물이랑 잘 연결됨

요건 굳이 안 바꾸겠어

 

 

728x90