오늘 우리가 할 것
1. 서버 만들기 - 서버는 1번만 만들면 된다(web server : 아파치 톰캣)
2. 프로젝트 만들기(Java가 아닌 JSP를 만들 것)
3. 소스파일 작성(jsp)
웹서버는 아파치 톰캣 -> 2, 3번이 웹 프로그램 : 이걸 연결할 것
[Apache Tomcat]
구글에서 아파치 톰캣 검색
개발자는 제일 최신버전 XX -> 신기능이라고 하지만 그렇게 유용한 기능이 아닐 수 있고 초보자에게는 +알파를 배우기에는 배보다 배꼽이 더 커질 수 있다 -> 가장 안정적인 버전을 다운받아서 사용하는 것이 좋다.
beta 버전은 아직 완성된 것이 아님 -> 버그가 많다 -> 여기서 버그가 나면 우리가 고쳐야 한다.
7버전은 너무 옛날 것
8버전은 두가지가 있다 - 8.0, 8.5
아파치 톰캣
- 다운 -> 설치 -> 실행
원래는 JSP를 Run해서 별도로 돌리는데
우리는 이클립스에서 코딩을 함 -> 이클립스 안에서 톰캣을 돌려야 함(내부)
Tomcat 8
보통은 이걸 설치하면
여기서 돌아갈 것!
그러나 우리는 이클립스 내에서 돌려야하기 때문에 이걸 꺼줘야 한다.
[Apache Tomcat 설치]
우리는 8.5.61을 설치할 것
가장 위에 나와있는 zip을 설치해도 되지만 압축을 풀고 cmd창에 가서 경로 입력해서 실행을 시키는 등 복잡함
32-bit/64-bit Windows Service Installer 다운받기
Next, Agree .. 하고
Name을 8로 둬도 되고 8_5로 바꿔줘도 됨
자바가
이런 식으로 자바가 설치된 위치에 설정 해야 함
독립적으로 돌아가고 있다는 표시
Start 버튼이 비활성화 된 상태
Stop을 누르면 독립적으로 돌아가는걸 꺼줄 수 있음
-> 꺼주면 중지가 되서 아이콘이 빨간색으로 바뀜 -> 확인 클릭
이클립스에서
1. 서버 만들기
New -> Other.. -> Server클릭 안에 Server -> Next -> Apache -> Tomcat v8.5(자기가 설치한 톰캣과 버전 맞추기) -> Next ->
아직 설치 안 한 상태라서 Tomcat installation directory에 아무것도 뜨지 않음(만약 옆에 Download and Install.. 버튼이 활성화가 되어있다면 클릭해서 바로 설치하면 됨, 뜨지 않으면 직접 Apache Tomcat에서 원하는 버전 설치)
설치를 했다면 Browse.. 눌러서 Apache를 설치한 경로 찾아줘야 함 Apache Software Foundation > Tomcat 8.5_Tomcat8_5 -> 폴더선택 -> Finish
Servers가 생김
안돼서 그냥 8.0으로 해서 설치!
했는데 Servers > Tomcat
2. 프로젝트 만들기(Java가 아닌 JSP)
New > Others
이름 web_test로 지정
안녕하세요를 치고 실행 시키면
이런 에러가 뜸
포트 8080이 사용중이라고 함 -> Oracle에서 이미 쓰고 있다.
-> 오라클의 포트를 바꿀 것
위의 내용을 따라할 필요는 없고 SQL developer에 가서 바꿔줘도 됨
Windows > cmd에서 순서대로 따라해도 됨
1. cmd 에서 sqlplus/nolog 침
2. conn /as sysdba
3. select dbms_xdb.gethttpport() from dual;
4. exec dbms_xdb.sethttpport(9090);
5. 9090으로 바뀌었는지 다시 확인해봄
select dbms_xdb.gethttpport() from dual;
9090으로 바뀐 것을 확인할 수 있다.
그래도 계속 같은 오류가 떠서
1. cmd에서
2. netstat -ano -p tcp
나는 지금 9090으로 바꿔놓아서 저렇게 뜨는데 로컬주소 마지막 부분이 8080이라고 적인 PID를 복사해놓고
3. taskkill /f /pid 14848 (8080과 연관된 PID값 14848 삭제)
하면 된다는데...
나는 삭제가 되지 않음 ..ㅜㅜ
그래서
톰캣 누른 뒤에
저기 포트번호 8080이 계속 문제가 생기니까
8081로 변경!!!
드디어 실행이 되었다!!
https://changun516.tistory.com/49
ojdbc6를 찾아서
ctrl+c -> lib에다가 ctrl+v
2. JSP(웹) - DB프로그래밍
Server(톰캣) 위에다가 Dynamic Web Project를 돌리는데
WebContent 폴더가 있고 이 폴더에 booklist.jsp, bookview.jsp 소스파일 두 개를 만들 것
=> 이 전체를 Web Server라고 할 수 있다
주소를 치면 결과가 나온다.
DB -> JSP로 바로 연결 불가능
DB -> web 서버(설치만 하면 됨) -> JSP
ㄴ> JSP 페이지를 돌리는 역할
ex) 윈도우 10 위에다가 엑셀이라는 프로그램을 설치한다. -> 윈도우 10이라는 운영체제가 없다면 엑셀을 설치할 수 없다.
웹서버 : 종류가 많지만 공부할 때는 아파치 톰캣(오픈 라이센스)을 가장 많이 쓰고 Node.js도 많이 쓴다.
①설치
②연동
프로젝트 만들기 (Dynamic Web 프로젝트) – (1/2)
만약 Dynamic Web Project가 안보이면… Other -> Web 에서 찾는다…프로젝트 만들기 (Dynamic Web 프로젝트) – (2/2)
ojdbc6.jar 링크 : 우클릭 -> Build Path -> Add External Archives…
ojdbc6.jar 링크
코딩하기
<%@ page import="java.sql.*" contentType="text/html;charset=EUC-KR"%>" /* java.sql안에 있는 * 모든걸 가지고 오겠다. */
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:XE"; /* 1521은 DB의 주소 */
Connection dbconn=DriverManager.getConnection(url, "madang", "madang"); /* 1 Connection 2 Statement 3 ResultSet을 가지고 오겠다 */
Statement stmt = dbconn.createStatement();
ResultSet myResultSet=stmt.executeQuery("SELECT * FROM Book");
%> /* ① Java코드 */
<HTML> /* 화면(UI) 구현(디자인), 비주얼 담당 */
<head>
<meta http-equiv="content-type" content="text/html; charset=edu-kr">
<title>** BOOK LIST **</title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<table border="1" cellspacing="0" width="400" bordercolor="#9AD2F7"
bordercolordark="white" bordercolorlight="#B9E0FA">
<tr>
<td width="150" height="20" bgcolor="#2E9F9">
<p align="center">
<span style="font-size:8pt"><b>BOOKNAME</b></span></p>
</td>
<td width="150" height="20" bgcolor="#2E9F9">
<p align="center">
<span style="font-size:8pt"><b>PUBLISHER</b></span></p>
</td>
<td width="50" height="20" bgcolor="#2E9F9">
<p align="center">
<span style="font-size:8pt"><b>PRICE</b></span></p>
</td>
</tr> /* ②HTML코드 */
<% /* Java : 데이터, 처리 담당 */
if(myResultSet!=null){
while(myResultSet.next()){
String W_BOOKID=myResultSet.getString("bookid"); /* W_~ 변수에 오라클 DB테이블에서 값을 가져와서 담음 */
String W_BOOKNAME=myResultSet.getString("bookname");
String W_PUBLISHER=myResultSet.getString("publisher");
String W_PRICE=myResultSet.getString("price"); /* bookid, bookname.. 이건 DB */
%>
<tr>
<td width="150" height="20">
<p><span style="font-size:9pt;">
<a href="bookview.jsp?bookid=<%=W_BOOKID%>"> /* 클릭하면 bookview페이지로 넘어가는데 위에서 W_로 담은 걸 여기서 끼워넣어서 화면에 표시 */
<font face="돋움체" color="black">
<%=W_BOOKNAME%></font></a></span></p>
</td>
<td width="150" height="20">
<p align="center"><span style="font-size:9pt;">
<font face="돋움체"><%=W_PUBLISHER%></font></span></p>
</td>
<td width="50" height="20">
<p align="center"><span style="font-size:9pt;">
<font face="돋움체"><%=W_PRICE%></font></span></p>
</td>
</tr>
<%
}
}
stmt.close();
dbconn.close();
%>
</table>
<table cellpadding="0" cellspacing="0" width="400" height="23">
<tr>
<td width="1350">
<p align="right"><b><a href="booklist.jsp">
<font size="1" face="돋움체" color="black">LIST</font></a></b></p>
</td>
</tr>
</table>
</body>
</HTML>
-> 이것 자체가 웹 브라우저
저 주소를 chrome이나 이런 곳에 주소창에 검색해도 나옴!
<%@ page import="java.sql.*" contentType="text/html;charset=EUC-KR"%> /* 서버에서 java.sql을 가져옴 */
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:XE";
/* 11g express edition은 orcl 대신 XE를 입력한다*/
Connection dbconn=DriverManager.getConnection(url, "madang", "madang");
Statement stmt = dbconn.createStatement();
String bookid=request.getParameter("bookid"); /* getParameter : 위에서 책 이름 클릭했을 때 해당하는 책의 bookid를 받아서 보여줌 */
ResultSet myResultSet=stmt.executeQuery("SELECT * FROM Book WHERE bookid='"+bookid+"'");
if(myResultSet!=null){
myResultSet.next();
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<title>** Book VIEW **</title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<table border="1" cellspacing="0" width="400" bordercolor="#9AD2F7"
bordercolordark="white" bordercolorlight="#B9E0FA">
<tr>
<td width="150" height="23">
<p align="center">
<span style="font-size:9pt ;">책 제 목</span></p>
</td>
<td width="513">
<p><span style="font-size:9pt;">
<%=myResultSet.getString("BOOKNAME")%></span></p>
</td>
</tr>
<tr>
<td width="150" height="23">
<p align="center">
<span style=font-size:9pt ;">출 판 사</span></p>
<td width="513">
<p><span style="font-size:9pt;">
<%=myResultSet.getString("PUBLISHER")%></span></p>
</td>
</tr>
<tr>
<td width="150" height="23">
<p align="center">
<span style=font-size:9pt ;">가 격</span></p>
</td>
<td width="513">
<p><span style="font-size:9pt;">
<%=myResultSet.getString("PRICE")%></span></p>
</td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="400" height="23">
<tr>
<td width="150">
<p align="right"><span style="font-size:9pt;">
<a href="booklist.jsp?">
<font color="black">목록</font></a></span></p>
</td>
</tr>
</table>
<%
}
stmt.close();
dbconn.close();
%>
</body>
</html>
실행하기
Made by 부산IT 윤요섭 강사님
Book view만 실행을 시키면 아래와 같은 에러가 난다
invalid number
-> 몇번 책의 내용을 보여달라는거야?! 하고 에러가 나는 것
if(bookid == null)
bookid = "1";
이런 식으로 추가해 주면 book view만 실행시켜 주어도 에러가 나지 않고
bookid 1번인 책의 내용을 보여줄 것
<%@ page import="java.sql.*" contentType="text/html;charset=EUC-KR"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:XE";
/* 11g express edition은 orcl 대신 XE를 입력한다*/
Connection dbconn=DriverManager.getConnection(url, "madang", "madang");
Statement stmt = dbconn.createStatement();
String bookid=request.getParameter("bookid");
if(bookid == null)
bookid = "1";
ResultSet myResultSet=stmt.executeQuery("SELECT * FROM Book WHERE bookid='"+bookid+"'");
if(myResultSet!=null){
myResultSet.next();
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<title>** Book VIEW **</title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<table border="1" cellspacing="0" width="400" bordercolor="#9AD2F7"
bordercolordark="white" bordercolorlight="#B9E0FA">
<tr>
<td width="150" height="23">
<p align="center">
<span style="font-size:9pt ;">책 제 목</span></p>
</td>
<td width="513">
<p><span style="font-size:9pt;">
<%=myResultSet.getString("BOOKNAME")%></span></p>
</td>
</tr>
<tr>
<td width="150" height="23">
<p align="center">
<span style=font-size:9pt ;">출 판 사</span></p>
<td width="513">
<p><span style="font-size:9pt;">
<%=myResultSet.getString("PUBLISHER")%></span></p>
</td>
</tr>
<tr>
<td width="150" height="23">
<p align="center">
<span style=font-size:9pt ;">가 격</span></p>
</td>
<td width="513">
<p><span style="font-size:9pt;">
<%=myResultSet.getString("PRICE")%></span></p>
</td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="400" height="23">
<tr>
<td width="150">
<p align="right"><span style="font-size:9pt;">
<a href="booklist.jsp?">
<font color="black">목록</font></a></span></p>
</td>
</tr>
</table>
<%
}
stmt.close();
dbconn.close();
%>
</body>
</html>
JSP
- Java : 서버인 톰캣에서 해석함 / 데이터 처리 담당 -> 오라클 DB 테이블에서 값을 가지고 와서
- HTML : 클라이언트인 웹 브라우저(eclipse, chrome 등..)에서 해석 / 화면(UI), 비주얼 담당
- CSS
- javascript
UI 구현 시간에 HTML, CSS, javascript를 배울 것
ex) 네이버 -> 소스코드, DB는 네이버회사의 컴퓨터 안에 들어있을 것
우리 집에서 접속(클라이언트) -> 주소를 검색 -> 네이버회사 컴퓨터 -> HTML코드는 내 컴퓨터의 웹브라우저에서 해석하고 자바 코드는 네이버회사 컴퓨터에서 돌아감
=> 서버와 클라이언트의 차이
<% %> -> 자바 코드
-> 그냥 쓰면 HTML
<%@ %> : 설정
<% %> : 코드(내용)
<%= %> : 변수(값)
HTML 중간 중간에 들어가있는 Java
내가 입력한 것들을 볼 수가 있는데
차이점은 Java는 없고 HTML만 있다.
일단 DB는 오늘로 끝!
3개월차 쯤에 안드로이드 배우면서
DB 연결을 할 예정
2020/12/29 - [자바 프로그래밍] - [자바 기초] 11일차 일지 2 - 데이터베이스 프로그래밍(이클립스 설치)
'프로그래밍 > 자바(java) 융합개발자 2차' 카테고리의 다른 글
[Spring 기반 자바(Java) 융합 개발자 2차] 2차 테스트 풀이 (0) | 2020.12.31 |
---|---|
[Spring 기반 자바(Java) 융합 개발자 2차] 1차 테스트 풀이 (0) | 2020.12.31 |
[자바 기초] 11일차 일지 2 - 데이터베이스 프로그래밍(이클립스 설치, JAVA) (0) | 2020.12.29 |
[자바 기초] 11일차 일지 1 - TRIGGER(트리거) / INDEX(인덱스) (0) | 2020.12.29 |
[자바 기초] 10일차 일지 2 - Oracle PL/SQL 이어서(ORACLE SUBPROGRAM) (0) | 2020.12.28 |