JSP + Tomcat 으로 DB 데이터를 나타내보자
ㅎㅇ 일단 톰캣을 설치하셈
https://tomcat.apache.org/download-90.cgi
9.0버전 , installer 로 다운받으시고
저는 셧다운포트 8005 연결포트 8000 으로 했습니다
연결포트 8080은 oracle의 포트와 충돌이 있을수도 있다고...
톰캣 설치 끝
STS 실행하세요
FIle > New > other > web > 다이나믹 웹 프로젝트 만드세요
타겟 런타임을 톰캣 9.0으로 설정해주세요
설치경로는 기본값으로 하셨다면
C:\Program Files\Apache Software Foundation\Tomcat 9.0
여기 있을겁니다
이제 jsp 파일을 만들 수 있습니다
jsp 파일은 항상 WebContent 폴더에 작성해주세요
META-INF , WEB-INF 는 외부접근 불가 구역입니다. 주로 프로젝트의 설정파일을 저장하는곳입니다.
뜬금없지만 JSP관련 기초 설명을 하겠습니다
JSP는 쉽게 말하면 html 파일에서 자바코드를 작성할 수 있게 해주는 파일입니다.
톰캣은 하나의 자바 컴파일러 라고 할 수 있어요.
웹서버(아파치)
내 하드디스크의 특정 폴더를 http주소 방식으로 접근할 수 있게 열어둔 것
접근 방법
프로토콜://ip주소:포트번호/컨텍스트루트/자원명
ex) http://localhost:8000/test1/a.html
jsp
html파일안에 java코드를 넣을 수 있는 파일
톰켓
아파치가 처리할 수 없는 .jsp 파일 요청시 동작함. html파일은 그대로
두고 java코드만 컴파일하여 html코드와 그 결과를 .html파일로 만들
어서 응답해줌.
WebContent
프로젝트 폴더내에 유일하게 외부에서 접근할 수 있게 열어둔 영역
컨텍스트루트
웹서버내에 많은 프로젝트들을 구분하기 위해서 필요
URL
자원에 접근하는 법
URI
식별자로 접근하는 법
MySQL에 있는 데이터를 웹에 뿌려봅시다
아까 만든 다이나믹 웹 프로젝트에서 WEB-INF 폴더에, lib폴더에 > jar파일 하나 추가하고 add 빌드패스 합니다
https://mvnrepository.com/artifact/mysql/mysql-connector-java
저는 8.0.16 버전 썼습니다
그리고 MySQL에 연결을 시켜줄 자바 파일을 하나 만듭니다
패키지명 com.cos.test1.config
얇은 지식으로 말씀드리자면 패키지명(유일해야함) = 도메인(유일함)
그러므로 도메인을 거꾸로 쓴거같은 양식이 유일하기때문에 그렇게 작성한다고 하네요
new > class > DBConn.java 생성
DBConn.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package com.cos.test1.config; import java.sql.Connection; import java.sql.DriverManager; public class DBConn { public static Connection getConnection() { Connection conn = null; //localhost 뒤 = DB이름? String url = "jdbc:mysql://localhost:3306/ssar?serverTimezone=Asia/Seoul"; String username = "ㅇㅎㅇㅀㅇㅀㅇㅀ"; String password = "ㅇㅎㅇㅎㅎㄱㅎ"; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection(url, username, password); System.out.println("DB 연결성공"); return conn; } catch (Exception e) { e.printStackTrace(); } return null; } } | cs |
url = 포트번호뒤에 있는 ssar 은 제 계정에있는 데이터베이스 이름입니다. 각자 환경에 맞게 바꿔주세요
username = 사용자 계정 아이디 입니다.
password = 사용자 계정 비밀번호 입니다.
webcontent > new jsp file
select.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="com.cos.test1.config.DBConn"%> <%@page import="java.sql.Connection"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>찾아보기</title> </head> <body> <% String sql = "SELECT * FROM users WHERE id=1"; Connection conn = DBConn.getConnection(); PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); rs.next(); int id = rs.getInt("id"); String username = rs.getString("username"); String password = rs.getString("password"); String email = rs.getString("email"); %> <h3>id : <%=id %></h3> <h3>username : <%=username %></h3> <h3>password : <%=password %></h3> <h3>email : <%=email %></h3> </body> </html> | cs |
<% %> 로 감싸진 부분에서는 자바코드를 작성해도 되는 곳입니다.
아까 java resource에 만들었던 DBConn을 import 해서 사용하고있습니다.
executeQuery()의 반환값이 Resultset 이기 때문에 새로 변수를 만들어서 저장해줍니다.
rs,next() : 커서를 한 번 이동시켜줍니다 (안하면 안됨)
rs.get@@@ : 새로만든 변수에 get해서 데이터를 넣습니다 . 변수명은 웬만하면 필드명이랑 일치하게 작성합니다
<%=id %> : 표현식 태그 라고하네요 결과값을 출력합니다.
실행하기전에~~~
크롬으로 바꿔주시고 (알아서 하셈)
프로젝트 폴더를 Run As > Run On Server 를 하신다면 welcome page (기본값 index.jsp , index.html) 을 실행할 것입니다.
그래서 저희는 그냥 select.jsp 를 Run On Server 할겁니다
TomCat 9.0 확인하고 Finish ㄱㄱ
잘 작동하고있네요 다행입니다