-
Mon/Jan/20 [Java] day15. EXCEL /Web Server/HTML - JavaStudy/2020 국비교육_Java 2020. 1. 20. 09:44
Mon/Jan/20
[Java] day15.
EXCEL/Web Server/HTML - Java
* 설 연휴 과제 : 교제 ch7 인터페이스 ch8 중첩 ch9 예외처리 ch12 멀티스레드 ch15 컬렉션 프레임워크 읽어오기(다음 주 진도)
[엑셀 파일 읽고 쓰기]
-
jxl.jar : external jar
-
원본은 jexelapi
-
프로젝트에서 엑셀 쓰는 경우
-
거래내역 출력
-
통화내역 출력 등
STEP
1. 가장 먼저 엑셀 형태 구조를 만들어야
-
사용할 EXCEL FILE 생성 : File Class, WritableWorkbook Class
-
File Class만 java 내장, 나머지는 jxl.jar에서 import
-
-
EXCEL 내 SHEET 생성 : WritableSheet Class
-
LABEL 생성 : Label Class
-
label = 단위 cell
-
-
SHEET에 LABEL 적용 : WritableSheet Class
2. ExcelMaker Class
import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class ExcelMaker { public ExcelMaker( ) throws Exception { File f = new File ("c:/filetest/data.xls"); WritableWorkbook wb = Workbook.createWorkbook(f); WritableSheet s1 = wb.createSheet("첫번째", 0); WritableSheet s2 = wb.createSheet("Sheet1", 1); WritableSheet s3 = wb.createSheet("Sheet2", 2); for(int i = 0; i<10; i++){ Label label = new Label(0, i, "데이터..."+i); s1.addCell(label); Label label1 = new Label(1,i,"데이터..."+i); s1.addCell(label1); } wb.write(); wb.close(); } }
-
method 자체에 throws exception
-
일반적으로는 method 내부에 exception
-
method 자체에 exception을 하는 경우는 공동 project를 하는 경우???
-
exception 여러 개 나열 가능, ' , '로 구분
-
MainClass에서 불러올 때 exception 하게 됨
-
-
기본구조
-
File f
-
WritableWorkbook wb - createWorkbook()
-
writableSheet - createSheet( , )
-
Label label_name - Label( , , )
-
new label(열, 행, 내용) // 일반적으로 생각하는 행-렬과 반대 순서, field - data 순
-
-
sheet.addCell(label)
-
wb.write(); wb.close();
-
3. ExcelReader Class
import java.io.File; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; public class ExcelReader { public ExcelReader() throws Exception { Workbook wb = Workbook.getWorkbook(new File("c:/filetest/data.xls")); Sheet s = wb.getSheet(0); int i = 0; while (true) { try { Cell c = s.getCell(0, i); Cell c1 = s.getCell(1, i); System.out.println(c.getContents() + "\t" + c1.getContents()); i++; } catch (Exception e) { break; } } } }
-
기본구조
-
Workbook wb - getWorkbook
-
Sheet s - getSheet()
-
Cell c - getCell(), getContents()
-
Exception
-
-
while 내부에 try-catch 는 직접 입력해야 함, 없으면 err
[Web server 연결]
Apache Tomcat 설치
-
국내 server의 90% 이상이 Tomcat으로 만들어짐, 내 컴퓨터를 server로 만드는 것
-
eclipse 종료된 상태에서 관리자 권한으로 실행
-
components 모두 설치
-
Configuration
-
server Shutdown port = 8005
-
HTTP / 1.1 Connector Port = 8080 // localhost:8080
-
-
Java Virtual Machine : 자동으로 JRE 설치된 위치를 찾아줌, 변경하면 안 됨
설치 완료 후 실행된 모습 -
http://localhost:8080/ 접속하여 정상적으로 작동하는지 확인
-
https://localhost:8080/ 로 접속하면 안 될 수 있음
-
[ localhost ]
-
기본 도메인 명, 서비스 제공 업체마다 다름
-
mySQL 접속 URL : jdbc.mysql://localhost:3306
-
Tomcat 접속 URL : http://localhost:8080/
-
localhost의 실제 서버 주소는 127.0.0.1
-
http : 인터넷을 통해 data를 주고받는 통신 표준 protocol
-
WAS : Web Application 실행할 수 있는 server, 국내에선 주로 Tomcat 서버 사용
-
현재 cloud에서는 AWS 이용하는 대기업이 늘고 있음
-
Cloud Service
-
data-service에 따른 분류
-
pulic : NaverCloud, GoogleDrive 처럼 외부에서 접속 가능한 것
-
private : 회사 내부에서만 접속 가능한 것
-
-
[ JAVA Web Project - Tomcat ]
※ web programming 하는 지금부터는 함부로 Run 하지 않도록 주의!
※ 필수 확인 사항
-
JAVA EE (JRE Library)
-
Web server : Tomcat
-
language
-
Java
-
Servlet : server 내부 실행
-
JSP : front 실행, Java를 기반으로 하기 때문에 문법은 몇 가지만 알면 됨
-
-
Web
-
HTML5 L : web Browser
-
CSS3 : 꾸미기
-
JavaScript : event - 사용자와 상호작용 처리
-
-
-
Database
-
mySQL
-
Oracle
-
[ New Dynamic Web Project ]
new project 생성 src - 순수하게 java files 만 들어가는 곳
WebContent - HTML, img files 들어가는 곳
WEB-INF > lib - server connerctor 복붙으로 연결 (build path X)
* 나머지는 당분간 안 건드림
* WebContent 등 대소문자 절대 수정 금지, Tomcat이 찾아가는 directories
create a new server new Tomcat server 작업 중 server 불안정한 경우 임시로 지워도 됨
Project Explorer에 Servers 만들어짐 아직은 절대 수정 금지, 추후 context.xml 수정으로 한글 encoding
WebContent에서 HTML, JSP, SQL 생성
HTML5 선택
[ HTML5 ]
<!DOCTYPE html> <!-- HTML5 선언문 --> <html> <head> <meta charset="EUC-KR"> <!-- 언어 ENCODE 설정 --> <title>Insert title here</title> </head> <body> <!-- --> <!-- 주석 ( HTML / XML )--> <!-- HTML 주석은 이 방법만 있음 --> <!-- META TAG 제외한 나머지 TAG는 절대 2번 이상 사용 불가 --> <!-- HTML TAG는 대소문자 구별 안함 --> </body> </html> <!-- ROOT NODE : HTML TAG가 전체 파일을 감싸고 있어야 함 -->
TAG
TAG : HTML에서 사용하는 명칭
NODE : XML에서 사용하는 명칭
ELEMENT : JavaScript에서 사용하는 명칭
<~~></~~> 시작 TAG와 닫는 TAG 분리하는 경우
<~~/> 시작 TAG와 닫는 TAG 분리하지 않고 한 번만 쓰는 경우, / 앞에 반드시 공백 있어야 함
속성 : 각 TAG의 색, 크기, TYPE 등을 설정할 때 사용ex)
<body bgcolor = "black"> </body> <body : 시작 tag bgcolor : 속성명, 여러 개일 경우 띄어쓰기로 구분 "black" : 속성값, "" 또는 ''로 묶어주는 것이 정석 </body> : 닫는 tag <!-- 속성명이 여러개일 경우, 순서는 바뀌어도 됨 --> <input type='text' name = 'txtID' /> <input name='txtID' type = 'text' />
★ 주의사항 : HTML tag 속성과 CSS 속성은 각기 다름
※ 참고 : HTML 이전 버전과 HTML5
HTML은 web browser 자체가 compile 하기 때문에 browser 개발사마다 compile 방식이 다름,
HTML 이전 version의 경우 동일 file을 web browser 마다 다르게 compile 하기 때문에 동일한 화면 출력이 어려웠음
대체 방안으로 초창기 탄생된 언어가 xhtml(XML + HTML), 그러나 사용이 어려워 사장됨
HTML5는 각 web browser 개발사가 동일한 규격으로 compile, 따라서 Web 표준으로 사용됨 (100% web 표준은 없음)
HTML 이전 version
→ web page 만들기 위한 용도로만 개발
HTML5
→ web page는 기본, 각종 API도 지원, 특히 미디어(<video>, <audio>) 및 그림(<canvas>) 표현 가능, game 개발 위한 OpenGL ES 지원, browser 내 간단한 DB 구축 가능(SQLite), 모든 device에서 사용 가능 - hybrid app
Run on Server > Tomcat 실행 결과 eclipse 내장 browser가 있기 때문에 실행 결과가 보임
default web browser 선택 run as > chrome * html은 space와 enter는 한 번만 인식, 다중 인식 불가
http://localhost:8080/test/NewFile.html?MAIL=sdfsdfsdf%40sdg&URL=http%3A%2F%2Ffdgdsfgsdgsdg.com&TXT=anjasdg%3Bkl%3Bl&RANGE=50&NUM=&COLOR=%23000000&FILE=&%C0%FC%BC%DB=%C1%A6%C3%E2
제출을 누르게 되면 위와 같은 주소가 발생
-
http://localhost:8080/test/ : 원래 주소
-
NewFile.html : data 전송 대상 file
-
? : file명과 전송 값을 구분자
-
MAIL=sdfsdfsdf%40sdg : parameter_name = value
-
& : parameter 구분자
※ 참고 : %** 는 특수기호 또는 한글 부분
ex) URL=http%3A%2F%2F → %3A == :, %2F == / COLOR=%23 → %23 == #
[ Java Web - JavaScript - mySQL - HTML ]
initial setting
WebContent > New HTML files, New JSP files : web으로 만들 page, 기능 추가
WebContent > WEB-INF > lib > copy mysql-connector-java-5.1.18-bin.jar
Java Resourse > src > create packages and classes
데이터 전송
1. HTML → JSP
<form action = "log_check.jsp method = "get"> ID : <input type="text" name = "txtID" /> PW : <input type="text" name = "txtPW" /> <input type = "submit" value = "변경버튼_name" /> <input type = "reset" value = "변경버튼_name" /> </form>
-
HTML 내부의 <form></form> tag 이용
-
<form> tag 속성 중 action = "전달 받을 file"
-
method = "type(get/post)"
-
method = "get" 일 경우, 웹주소 줄에 전달할 데이터 노출, 기본값으로 설정됨
-
method = "post" 일 경우, 웹주소줄에 전달할 데이터가 보이지 않음
-
초기 test는 get 방식으로, 완성된 후 post 형식으로
-
-
-
<form> 내부에 전송 버튼 통해 전달
-
<input> name 의 속성 : 전달되는 data를 구분하기 위한 parameter name, 동일 파일에는 중복되면 안됨, "radio"만 중복가능
-
ex) log_form.html 에 입력된 값을 log_check.jsp에게 전달할 경우
-
log_from.html
-
<body></body> 내부에 다음과 같이 <form> tag 작성
-
-
log_check.jsp
-
requeset.getParameter("parameter_name") : 전달되는 데이터는 모두 문자열로 전달, JSP 내부에서 parameter_name으로 해당 데이터 추출
-
String id = request.getParameter("txtID");
-
String pw = request.getParameter("txtPW");
-
-
-
전달 받은 값 확인
-
콘솔에서 확인 할 경우 : System.out.println("")
-
웹 브라우저 확인 : out.print("")
-
-
JSP 문법
기본적으로 Java 문법과 동일
다만, JSP는 HTML과 혼용해서 작성할 수 있기 때문에, JAVA와 HTML을 구분지어야 한다
-
한줄, 여러 줄의 JAVA 코드 표현 : <% ~~~ %>
-
JAVA 코드의 특정 변수 값을 Web Browser에 바로 출력 : <%= var_name %>
-
하나의 JSP 파일에 대한 환경 설정 : <%@ page ~~~ %>
-
import ONE java class : <%@ page import = "java.util.*" %>
-
import Multi java class : <%@ page import = "java.util.ArrayList, java.io.FILE,..." %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
여기서 PUBLIC 이후 문구는 HTML4 형식이기 때문에 HTML5 문법을 쓰려면 없애야 함
※ JAVA coding 할 때는 반드시 server stop해야 함, HTML할 때는 상관 없음; compiling 이 여러 곳에서 진행되면서 editor가 무거워짐
간단한 Log-in form
<form action = "log_check.jsp" method = "post"> <input type = "text" name = "txtID" placeholder = " 아이디 입력" REQUIRED = "REQUIRED" /> <br /> <input type = "password" name = "txtPW" placeholder = " PW 입력" REQUIRED = "REQUIRED"/> <br /> <input type = "submit" value = "서버전송" /> <input type = "reset" value = "입력값 초기화" /> </form>
※ required 는 HTML 5 이상에서만 지원
placeholder 사용한 경우 <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <% String id = request.getParameter("txtID"); String pw = request.getParameter("txtPW"); System.out.println(id); System.out.println(pw); %>
Console에서 ID/PW 입력 확인 System.out.println() 이 아닌 out.println()을 쓴 경우 * 브라우저에서는 println()에서 ln 인식 안됨 - 줄 바꾸기는 </br> 또는 <p>
<% String id = request.getParameter("txtID"); String pw = request.getParameter("txtPW"); String mySQL_id = "root"; String mySQL_pw = "1234"; if (mySQL_id.equals(id)) out.println("ID is Correct!"); else if (!mySQL_id.equals("txtID")) out.println("ID is NOT Correct!"); %> <p> <% if (mySQL_pw.equals(pw)) out.print("PW is Correct!"); else out.println("PW is Not Correct!"); %>
ID / PW 둘다 맞았을 경우 JSP와 mySQL DB 연결하기
db_read.jsp 에서 DBReadWriteClass를 가져와서 사용
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <%-- import Classes & jar files--%> <%@ page import="com.wjh.db.DBReadWriteClass, java.sql.ResultSet, java.sql.SQLException, com.wjh.encode.ChangeEncode"%> <%-- <% %> 공간 안에서는 java 코드 그대로 사용 가능 --%> <% // DB 접속, 필요한 method, data 호출 DBReadWriteClass.mySQLConnect(); ResultSet rs = DBReadWriteClass.showResultSet(); rs.next(); // 제대로 호출되는지 확인 // System.out.println(rs.getString(1)); // System.out.println(rs.getString(2)); // System.out.println(rs.getString(3)); %>
한글 encoding 문제로 한글은 깨져서 나옴 ChangeEncode method 활용 : 웹화면에서도 동일하게 나옴 <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <%-- import Classes & jar files--%> <%@ page import="com.wjh.db.DBReadWriteClass, java.sql.ResultSet, java.sql.SQLException, com.wjh.encode.ChangeEncode"%> <%-- <% %> 공간 안에서는 java 코드 그대로 사용 가능 --%> <% // DB 접속, 필요한 method, data 호출 DBReadWriteClass.mySQLConnect(); ResultSet rs = DBReadWriteClass.showResultSet(); rs.next(); %> <p> <!DOCTYPE html> <HTML> <head> <title>HELLO, JAVA!</title> </head> <BODY BGCOLOR =#F3E0BE> <TABLE BORDER='5'> <h2><FONT COLOR=#77212E >TABLE TEST</FONT></h2> <TR> <TH>학번</TH> <TH>주민번호</TH> <TH>성명</TH> </TR> <% while(rs.next()){ %> <TR> <td><%= rs.getString(1) %></td> <td><%= rs.getString(2) %></td> <td><%= ChangeEncode.toUnicode(rs.getString(3)) %></td> </TR> <% } %> </TABLE> </BODY> </HTML>
[연습]
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <%@ page import="com.wjh.db.DBWriteReadClass, com.wjh.encode.ChangeEncode, java.sql.SQLException, java.sql.ResultSet"%> <% DBWriteReadClass.mySQLCon(); ResultSet rs = DBWriteReadClass.showRS("prof"); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>TEST Title</title> </head> <body> Call Table Test <table border = 20> <tr><td>교수ID</td> <td>주민번호</td> <td>교수명</td> <td>부서명</td> <td>직위</td></tr> <% while(rs.next()){ %> <tr> <td><%= rs.getString(1) %></td> <td><%= rs.getString(2) %></td> <td><%= ChangeEncode.toUnicode(rs.getString(3)) %></td> <td><%= rs.getString(4) %></td> <td><%= ChangeEncode.toUnicode(rs.getString(5)) %></td> </tr> <% } %> </table> </body> </html>
'Study > 2020 국비교육_Java' 카테고리의 다른 글
Wed/Jan/22 [Java] day17. 실습_방명록 (0) 2020.01.22 Tue/Jan/21 [Java] day16. 게시판 만들기 (0) 2020.01.21 Sat/Jan/18 [Java] Java-SQL-HTML 주말 과제 (0) 2020.01.19 Fri/Jan/17 [Java] day14. Java-SQL 연습4 (0) 2020.01.17 Thu/Jan/16 [Java] day13. Java-SQL-HTML 연습 3 (0) 2020.01.16 -