- pom.xml 에 올린 mysql 라이브러리가 정상작동하는지 확인 ① class로 dbconfig.java 생성
public class dbconfig {
Connection con = null;
public Connection dbinfo() throws Exception{
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/cms";
String user = "hana";
String pass = "hana1234";
Class.forName(driver);
this.con = DriverManager.getConnection(url,user,pass);
return this.con;
}
}
② mainpage2.java에서 확인 - 밑에 datalist.do 를 실행 시켰을 때 아래이미지의 출력 결과 나오면 제대로 로드된것.
@Controller
public class mainpage2 {
@GetMapping("/datalist.do")
public String datalist() {
dbconfig dc = new dbconfig();
try {
Connection con = dc.dbinfo();
System.out.println(con);
con.close();
} catch (Exception e) {
System.out.println("db연결오류");
}
return null;
}
}
db라이브러리 정상 작동 확인
1. DB 연결 (Mysql)
1-1. 연결 형태
⑴ XML 형태의 DB 연결 (Maven 형태의 프로젝트) - XML형태 DB 연결 시 필요한 라이브러리 (필수) ⒜ MysqlConnect/J ⒝ spring-jdbc : (@ 이용하여 Resource 형태로 구성하기 위해) ⒞ DBCP (Database Connection Pool) - Spring, Spring-boot 에서만 사용
2. web.xml 에 dbconfig.xml 올리기 3. dbconfig.xml 생성 new file 생성 화면, bean 검색beans, context, jdbc, mvc 제일 최신 버전으로 선택해주고 finish
4. dbconfig.xml 에 코드 추가작업 - search 기능 이용해 BasicDataSource 검색 후 참고
- bean 태그의 id 는 본인 마음대로 , class 를 검색한 것을 참고해서 아래 와 같이 추가 -> destroy-method ="close" 를 통해 db 는 자동으로 close 되게끔 설정 dbconfig.xml
- bean 태그 안에 property 태그로 database 접속 정보 추가dbconfig.xml 5. DB연결 위한 보안 해제 - webpage.xml 에 wepspring 패키지 전체에 어노테이션 및 xml에 사용하는 id 값을 연동 할 수 있도록 오픈
-> db 연결시에 dbconfig.xml 에 있는 아래의 클래스를 로드해야하는데 dbconfig.xml
-> ① 처럼 오픈하면 해당 외의 클래스를 로드 할 수 없음 -> ② 처럼 패키지 전체를 오픈해야 그 안에 로드해놓은 다른 클래스들을 사용 할 수 있음 webpage.xml (controller xml) - 다른 패키지도 같은 DB 연결 하는 방법 ( shop 이라는 패키지도 동일한 db 연결)
6. do 에 dabases xml 파일로드 , db 연결
- @Autowired : ⑴ 모든 메소드에 사용할 수 있는 객체 및 Bean을 사용할 수 있도록 의존성 여부 실행하는 어노테이션 , 두번 세번 사용 x, 한번만 씀 ⑵ 단점 : 외부 class를 호출하여 Database를 연결 시 오류발생 -> 해당 클래스 내에서만 사용 가능 (그래서 잘 안씀) -> Controller 에서만 사용 가능함 (Module 에서는 안됨) - BasicDataSource datasource : database 접속정보 xml 파일로드
- 코드 예시 ) db는 dbconfig,xml 에서 자동으로 close 되므로 나머지만 close해줌
1. pom.xml - 열어보면 도메인 기준인것을 확인할 수 있음 (maven과는 다르게)
- 데이터 베이스 관련 라이브러리, lombok 등 빠져있는 라이브러리 세팅해줌 (jdk-11,.2024-07기준) -> spring-jdbc, commons-fileupload, mysql, lombok, dbcp, tomcat 얘는 Aspect J바로 위에 올려줌, 나머지는 dependencies 시작하는 부분에 추가해주면 됨
dbcp2 불러오면 안됨!!!현재 쓰고있는 apache 버전과 동일한 버전 가져와야함 2. web.xml - 한글 깨짐 방지 추가
characterEncodingFilter 검색해서 뜨면 편하게 복붙해서 web,xml에 추가
- dbconfig.xml 코드 추가
3. dbconfig.xml 생성 -> appServlet 디렉토리안에 dbconfig.xml 생성4. dbconfig.properties 생성 -> WEB-INF 디렉토리 안의 classes 에 생성 -> properties 안에 코드 추가 (db정보 작성) - properties 작성 시 문장의 끝 뒤에 절대 공백이 있으면 안됨
5. dbconfig.xml에 db 정보 불러오기 -> 아래처럼 코드 추가 -> properties 활용해서 가져옴 : 보안상 좋음 (db 뚫리는 일이 거의 없음) -> property - placeholder : jstl 형태로 쓸 수 있게 함 6. 연결 확인
-> 여기다가 임시로 test 진행
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@Autowired
BasicDataSource dbinfo;
@RequestMapping("/test.do")
public void test() throws Exception {
try {
Connection con = dbinfo.getConnection();
System.out.println(con);
} catch (Exception e) {
System.out.println("db연결 오류");
}
}
}
-> System.out.println(con); 하고 콘솔에 db 정보 찍히면 연결 성공