ICT Intern/Springboot

[Spring] 연습용 소스코드 실행 및 웹 기초 정리

칸타탓 2019. 3. 7. 10:49

Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

 

혹은,

 

There was an unexpected error (type=Internal Server Error, status=500).
nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. ### The error may exist in file [/Users/Downloads/saleManagement/bin/mybatis/mapper/user.xml] ### The error may involve com.sm.common.dao.UserDao.selectUserList ### The error occurred while executing a query ### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

 

스프링부트 프로젝트 만들면서 정말 지겹도록 본 에러 메세지..

 

1. 위와 같은 오류 발생 시에, 아래와 같이 mysql 버전과 아이디, 비밀번호를 꼭 확인하기

 

application.properties에 들어가서

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/데이터베이스명?serverTimezone=UTC

spring.datasource.username=아이디

spring.datasource.password=비밀번호

 

2.  spring.datasource.url도 확인해 주어야 함. 데이터베이스 생성 시 127.0.0.1:3306으로 설정해 주었는지 확인하기

3. 데이터베이스가 있는지 확인한 후(show databases;) 없으면 데이터베이스를 생성해주자.

4 gradle 수정 후 Refresh Gradle Project를 해 주었는지 확인해보기.

5. gradle에 설정된 mysql 버전과 설치된 mysql 버전이 일치해야함!

 

위에 다섯 가지 중 하나를 실수했을 경우가 대부분이었지만, 그래도 안될 시엔 https://developer-kylee.tistory.com/8 이 블로그 참고

 


 

받은 소스코드를 실행시키는 데 계속해서 오류가 발생해서 오전에는 오류를 해결한 후 오후에는 웹에 대해 개인적으로 간단하게 공부하고, 담당자님과 네트워킹 시간을 가졌다.

(Java, MySQL 버전을 맞추자 오류 해결.. JDK 1.8로 재설치했다.)

 

* Submit

HTML에서 입력받은 데이터를 서버로 전송하는 방법이다.

<input>의 type을 submit이라고 지정해주면, 정의한 URL로 입력한 내용이 전송된다.

 

아래와 같이 사용 가능하다.

action은 서버 경로를 지정하고, method는 전송 방식을 결정한다.

 


 * HTML input type

<input type="text"> : 텍스트 필드

<input type="password"> : 비밀번호 필드

<input type="checkbox"> :  체크박스

<input type="radio"> : 라디오 박스

<input type="file"> : 파일 선택기

<input type="reset"> : 버튼 생성

 


* GET, POST

HTTP프로토콜을 사용하여 서버에 데이터를 전달할 때 사용하는 방식이다.

 

- GET 방식

Select 작업에 적합(수정 없이 단순히 가져올 때)

데이터가 주소에 표시된다.

URL에 데이터가 함께 붙어서 전송되는 방식이기 때문에 많은 양의 데이터 전송에는 부적합

http://tistory.com/admin/?id=100&type=post

 

- POST 방식

서버, DB에 수정을 가할 때 적합(Update, Delete 작업)

데이터를 숨겨서 보낼 때 사용한다.

용량 제한은 존재하지만, GET보다 많은 양의 데이터를 보낼 수 있다.

 


* Ajax

화면 새로고침이 일어나지 않고 서버로 데이터를 전송할 수 있도록 하는 방법이다.

Ajax를 호출하면 뒷단에서 서버와 통신하여 처리하므로 웹 페이지 전체가 아닌 부분적인 갱신에 적합하다.

비동기적으로 데이터를 교환하고 조작하기 때문에 해당 기능이 데이터를 처리하는 동안 다른 동작을 수행할 수 있다.

 

* spring 이미지 파일 보내는 방법

[참고] https://doublesprogramming.tistory.com/127

[참고] https://handcoding.tistory.com/17

[참고] https://nahosung.tistory.com/81 

 

1. Gradle이나 Maven에 fileupload 라이브러리 추가해주기

2. 프로젝트 내 파일 저장할 폴더 만들기

3. file upload form type은 반드시 file이어야 한다.