기술문서(자료받기)

객체지향언어 기본 용어정리
1) 클래스와 객체(*****)
2) 변수와 메서드
3) 오버로딩
4) 생성자(***)
5) 상속(*): 기존의 만들어 놓은 클래스의 기능을 그대로 물려받아서 사용하는 것을 말함
6) 오버라이딩(*****)
7) 제어자
8) 추상클래스
9) 인터페이스(*****)
10) 예외처리
11) 추상화: 불필요한 정보의 노출을 최소화하고 꼭 필요한 정보만 노출하는 기법 12) 다형성: 13) 생성자 14) 접근제어 객체지향언어 고급 용어정리

1) JSP는 Java Server Page의 줄임말로 자바로 서버 페이지를 작성하 위한 언어
데이터를 저장하라!
배열 파일 데이터베이스
String[][] mem = new String[][]{{"",""},{"",""},{"",""}} mem.txt, mem.dat mysql
oralce
URL의 해석 : http://jslweb.izerone.co.kr/step1/test.jsp

JSP 기본 태그
'는 사용하지 않는다!
정류 사용용도 형식
스크립트릿(scriptlet) 자바코드를 기술함 '<'% %'>'
선언 변수와 메소드를 선언함 '<'%! %'>'
표현식 계산식이나 함수를 호출한 결과를 문자열 형태로 출력함 '<'%= %'>'
주석 JSP 페이지에서 설명을 넣음 '<'%-- %'>'
지시자 JSP페이지의 속성을 지정함 '<'%@ %'>'

공간분할태그 활용하기
CSS3 이용하기
선택자,속성,속성값
자바스크립트
제이쿼리
자바스크립트 자바스크립트는 객체 기반 프로그래밍 언어(속성과 기능 == 변수+함수)
document.getElementsById("p").innerHTML="jslweb";
유효성 검사하기
function CheckAddProduct() {
var productId = document.getElementById("productId");
var name = document.getElementById("name");
var unitPrice = document.getElementById("unitPrice");
var unitsInStock = document.getElementById("unitsInStock");
// 상품아이디 체크
if (!check(/^P[0-9]{4,11}$/, productId,
"[상품 코드]\nP와 숫자를 조합하여 5~12자까지 입력하세요\n첫 글자는 반드시 P로 시작하세요"))
return false;
// 상품명 체크
if (name.value.length < 4 || name.value.length > 12) {
alert("[상품명]\n최소 4자에서 최대 50자까지 입력하세요");
name.select();
name.focus();
return false;
} // 상품 가격 체크
if (unitPrice.value.length == 0 || isNaN(unitPrice.value)) {
alert("[가격]\n숫자만 입력하세요");
unitPrice.select();
unitPrice.focus();
return false;
}
if (unitPrice.value < 0) {
alert("[가격]\n음수를 입력할 수 없습니다");
unitPrice.select();
unitPrice.focus();
return false;
} else if (!check(/^\d+(?:[.]?[\d]?[\d])?$/, unitPrice,
"[가격]\n소수점 둘째 자리까지만 입력하세요"))
return false;
// 재고 수 체크
if (isNaN(unitsInStock.value)) {
alert("[재고 수]\n숫자만 입력하세요");
unitsInStock.select();
unitsInStock.focus();
return false;
}
function check(regExp, e, msg) {
if (regExp.test(e.value)) {
return true;
}
alert(msg);
e.select();
e.focus();
return false;
}
document.newProduct.submit()
}
제이쿼리 $(선택자).메서드
$("#p").html("jslweb");
script src="./js/jquery-3.6.min.js" /script
$(document).ready();
$(document).ready(function(){

});
제이쿼리 이벤트 종류
이벤트 메서드
Browser Events error,resize,scroll
Document Loading load,unload,ready
Form Events submit,focus,change,select,blur
Keyboard Events keydown,keypress,keyup
Mouse Events click,dblclick,mouseenter,mouseleave,mousedown,mouseup
개발 환경 : JAVA(11)+Oracle+Mysql

서버버전확인 |
1. Apache+Tomcat연동


서버버전확인
java : jdk-11.0.18_linux-x64_bin.tar.gz
tomcat : apache-tomcat-9.0.84.tar.gz

0) 기본설치
sudo apt update
sudo apt upgrade
sudo apt -y install wget
sudo apt -y install nano
sudo apt -y install lrzsz
sudo apt -y install net-tools
sudo apt -y install unzip
sudo ufw disable

1) 우분투에 자바및 tomcat 설치
wget http://jslweb.izerone.co.kr/jdk-11.0.18_linux-x64_bin.tar.gz
tar zxvf jdk-11.0.18_linux-x64_bin.tar.gz
sudo mkdir /usr/java
sudo mv jdk-11.0.18 /usr/java/jdk11
sudo nano /etc/profile
# add follows to the end
export JAVA_HOME=/usr/java/jdk11
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
source /etc/profile
java -version

sudo apt-get -y install apache2
wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.84/bin/apache-tomcat-9.0.84.tar.gz
sudo tar zxvf apache-tomcat-9.0.84.tar.gz
sudo mv apache-tomcat-9.0.84 /usr/tomcat9
sudo useradd -M -d /usr/tomcat9 tomcat9
sudo chown -R tomcat9: /usr/tomcat9
cd /usr/tomcat9/bin
sudo passwd root
su
ls
./version.sh
./startup.sh
./shutdown.sh

처음부터 다시 하고 싶으면
cd ~
rm -rf /usr/tomcat9
중요한 명령어이므로 삭제시는 반드시 명령어 두번씩 확인할것!!
wget http://ftp.riken.jp/net/apache/tomcat/tomcat-8/v8.5.75/bin/apache-tomcat-8.5.75.tar.gz
sudo tar zxvf apache-tomcat-8.5.75.tar.gz
sudo mv apache-tomcat-8.5.75 /usr/tomcat8
sudo useradd -M -d /usr/tomcat8 tomcat8
sudo chown -R tomcat8. /usr/tomcat8
cd /usr/tomcat8
sudo passwd root
123456
su
cd /usr/tomcat8/bin
./version.sh
./startup.sh
./shutdown.sh

2) 아파치와 tomcat 연동
sudo apt-get install libapache2-mod-jk
cd /etc/apache2/mods-available
ls -al | grep jk.conf
ls -al | grep jk.load
sudo nano /etc/libapache2-mod-jk/workers.properties
workers.tomcat_home=/usr/tomcat9
workers.java_home=/usr/java/jdk11
cd /usr/tomcat9/conf
nano server.xml
Connector port="8009"
address="0.0.0.0"
protocol="AJP/1.3"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
secretRequired="false"
Engine name="Catalina" defaultHost="localhost" jvmRoute="ajp13_worker">
nano /etc/apache2/sites-enabled/000-default.conf
VirtualHost *:80>
ServerName localhost
JkMount /* ajp13_worker
DocumentRoot /home/master/ROOT
/VirtualHost>
/usr/tomcat9/bin/shutdown.sh
/usr/tomcat9/bin/startup.sh
systemctl restart apache2
http://192.168.219.106:8080 (고양이확인)
http://192.168.219.106(고양이확인)

2. 개인계정추가
cd /etc/skel
mkdir ROOT
cd ROOT
touch index.jsp
mkdir include
cd include
touch header.jsp
touch footer.jsp

adduser joyfulmechanicsite
adduser phoenixking
adduser gygood
adduser hicastle
adduser master
adduser ksj
adduser mdg
adduser pjh
adduser bds
adduser bdy
adduser ysj
adduser lsh
adduser ijw
adduser jgc
본인의 계정 위치
예)/home/master/ROOT
개인계정추가후 수정되는 파일
도메인에 추가
nano server.xml
Host파일을 복사해서 사용할것!
Host name="jslweb.izerone.co.kr" appBase="/home/master" unpackWARs="true" autoDeploy="true">
Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="jslweb.izerone.co.kr_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
Context docBase="step2" paht="/step2" reloadable="true" source="org.eclipse.jst.jee.server:step2">
Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:XE" username="master" password="123456" maxTotal="20" maxIdle="10" maxWaitMillis="-1"/>
/Context>
/Host>
#추가설정시 필요시(반드시 할 필요는 없다)
sudo nano /etc/apache2/mods-available/jk.conf
IfModule jk_module
JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
IfModule
sudo nano /etc/apache2/sites-available/000-default.conf
JKMount / ajp13_worker
JKMount /* ajp13_worker

3. 데이터베이스 설치
1) mysql 설치
1.1) 설치
apt -y install mariadb-server
nano /etc/mysql/mariadb.conf.d/50-server.cnf
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
systemctl restart mariadb
mysql_secure_installation
1.2) 계정추가
sudo mysql -u root -p
create database master;
create user master@localhost identified by '123456';
grant all on master.* to master@localhost;
flush privileges;

create database joyfulmechanicsite;
create user joyfulmechanicsite@localhost identified by '123456';
grant all on joyfulmechanicsite.* to joyfulmechanicsite@localhost;
flush privileges;

create database phoenixking;
create user phoenixking@localhost identified by '123456';
grant all on phoenixking.* to phoenixking@localhost;
flush privileges;

create database gygood;
create user gygood@localhost identified by '123456';
grant all on gygood.* to gygood@localhost;
flush privileges;

create database hicastle;
create user hicastle@localhost identified by '123456';
grant all on hicastle.* to hicastle@localhost;
flush privileges;

1.3)mysql 백업과 복구
mysqldump --all-databases -uroot -p > all.sql
mysql -u root -p < all.sql
2) 오라클 설치
oracle : oracle-xe-11.2.0-1.0.x86_64.rpm.zip
2.1) 기본설치
sudo apt-get -y install alien libaio1 unixodbc
unzip oracle*
cd Disk1
alien --scripts -d oracle*
dpkg --install oracle-xe_11.2.0-2_amd64.deb
/etc/init.d/oracle-xe configure
tomcat포트와 충돌 발생을 막기위해 Application Express[8080]: 9090으로 변경함
systemctl enable oracle-xe
systemctl start oracle-xe
systemctl status oracle-xe
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
nano /etc/bash.bashrc
밑에 내용 추가
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
2.2) 데이터베이스구축
mkdir /oradata
chmod 777 /oradata
2.3) 오라클 계정추가
sqlplus
system
123456
CREATE USER nonage IDENTIFIED BY tiger;
grant connect, resource to nonage;
grant create view to nonage;

CREATE USER master IDENTIFIED BY 123456;
grant connect, resource to master;
grant create view to master;

CREATE USER joyfulmechanicsite IDENTIFIED BY 123456;
grant connect, resource to joyfulmechanicsite;
grant create view to joyfulmechanicsite;

CREATE USER phoenixking IDENTIFIED BY 123456;
grant connect, resource to phoenixking;
grant create view to phoenixking;

CREATE USER gygood IDENTIFIED BY 123456;
grant connect, resource to gygood;
grant create view to gygood;

CREATE USER hicastle IDENTIFIED BY 123456;
grant connect, resource to hicastle;
grant create view to hicastle;

2.3) ftp설치
sudo apt-get -y install vsftpd
nano /etc/vsftpd.conf
write_enable=YES 주석제거

mysql 접속 방법
mysql -u master -p
암호:
show databases;
use master;
show tables;
select * from member;
select * from product;
mysql용 테이블
3)예제 테이블
create table member (
id varchar(10) not null,
password varchar(10) not null,
name varchar(10) not null,
gender varchar(4),
birth varchar(10),
mail varchar(30),
phone varchar(20),
address varchar(90),
regist_day varchar(50),
primary key(id)
) default CHARSET=utf8;

CREATE TABLE IF NOT EXISTS product(
p_id VARCHAR(10) NOT NULL,
p_name VARCHAR(20),
p_unitPrice INTEGER,
p_description TEXT,
p_category VARCHAR(20),
p_manufacturer VARCHAR(20),
p_unitsInStock LONG,
p_condition VARCHAR(20),
p_fileName VARCHAR(20),
PRIMARY KEY (p_id)
)default CHARSET=utf8;

INSERT INTO product VALUES('P1234', 'iPhone 6s', 800000, '1334X750 Renina HD display, 8-megapixel iSight Camera','Smart Phone', 'Apple', 1000, 'new', 'P1234.png');
INSERT INTO product VALUES('P1235', 'LG PC gram', 1500000, '3.3-inch,IPS LED display, 5rd Generation Intel Core processors', 'Notebook', 'LG', 1000, 'new', 'P1235.png');
INSERT INTO product VALUES('P1236', 'Galaxy Tab S', 900000, '3.3-inch, 212.8*125.6*6.6mm, Super AMOLED display, Octa-Core processor', 'Tablet', 'Samsung', 1000, 'new', 'P1236.png');
오라클용 테이블

4. 커넥션 풀 적용
1) server.xml수정
Context docBase="step2" paht="/step2" reloadable="true" source="org.eclipse.jst.jee.server:step2">
Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:XE"
username="master" password="123456" maxTotal="20" maxIdle="10"
maxWaitMillis="-1"/>
/Context>
2) web.xml 수정
web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
description>Oracle Test
resource-ref>
description>Oracle Datasource example
res-ref-name>jdbc/myoracle
res-type>javax.sql.DataSource
res-auth>Container
/resource-ref>
/web-app>
3) 테스트 코드
%@page import="java.sql.Connection"%>
%@page import="javax.sql.DataSource"%>
@page import="javax.naming.InitialContext"%>
@page import="javax.naming.Context"%>
@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
out.println("DBCP 연동 성공");

3. mysql 설치
서버버전확인
oracle : oracle-xe-11.2.0-1.0.x86_64.rpm.zip
0) 기본설치
sudo apt-get -y install mariadb-server
nano /etc/mysql/mariadb.conf.d/50-server.cnf
systemctl restart mariadb
mysql_secure_installation
mysql
show grants for root@localhost;
select user,host,password from mysql.user;
show databases;
create database master;
1)테이블
mkdir /oradata
chmod 777 /oradata
sqlpus system/123456
CREATE USER master IDENTIFIED BY 123456;
grant connect, resource to master;
grant create view to master;
create table board(
num number(5) primary key,
pass varchar2(30),
name varchar2(30),
email varchar2(30),
title varchar2(50),
content varchar2(1000),
readcount NUMBER(4) DEFAULT 0,
writedate DATE DEFAULT SYSDATE
);

create sequence board_seq start with 1 increment by 1;
2) 계정추가
3. 계정추가
sudo mysql -u root -p
create database master ;
create user master@localhost identified by '123456';
grant all on master.* to master@localhost;
flush privileges;
예제
adduser phoenixking
/home/phoenixking/ROOT 디렉토리에 jsp파일을 저장함



4. FTP 설치
apt-get -y install vsftpd
nano /etc/vsftpd.conf
write_enable=YES 주석 제거 및 변경
xferlog_file=/var/log/vsftpd.log 주석 제거

5. 메일 설치
sudo apt-get -y install sendmail
nan /etc/mail/sendmail.cf
Cwjslweb.izerone.co.kr
#SMTP daemon options
Port=smtp, Addr=127.0.0.1(삭졔)
자바버전 확인해주세요(JDK11)
nano /etc/mail/access
192.168.219 RELAY
49.169.94.106 RELAY
jslweb.izerone.co.kr RELAY
joyfulmechanicsite.kr RELAY
hi-castle.com RELAY
gygood.kr RELAY
makemap hash /etc/mail/access < /etc/mail/access
sudo apt-get -y install dovecot-pop3d
nano /etc/dovecot/dovecot.conf
listen = *, ::
# Base directory where to store runtime data.
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
nano /etc/dovecot/conf.d/10-mail.conf
mail_access_groups = mail
lock_method=fcntl
systemctl restart sendmail
systemctl enable sendmail
systemctl restart dovecot
systemctl enable sendmail

6. 시스템 백업
백업환경
하드 디스크 2개 장착 (sda,sdb)
sda는 운영체제 설치
sdb는 백업 하드 디스크
nano /etc/fstab
/dev/sdb1 /backup ext4 defaults 0 1
프로그램(backup.sh)+시간(crontab)
시간
nano /etc/crontab
25 18 * * * root /root/backup.sh
00 04 * * * root /root/backup.sh
cd /root/
nano backup.sh
chmod 777 backup.sh
#!/bin/sh
set $(date)
fname="backup-$1$2$3.tar.xz"
tar cfj /backup/$fname /home
systemctl restart cron
nano backup.sh 응용
chmod 777 backup.sh
#!/bin/sh
set $(date)
fname="backup-$1$2$3.tar.xz"
tar cfj /backup/$fname /home
systemctl restart cron
날짜: 1월 18일 10시 00분 00초 2022년
date 011810002022
날짜변경: 1월 17일 18시 23분 00초 2022년
date 011718232022

7. 리눅스 시간 변경
timedatectl set-ntp 0
timedatectl set-ntp 1
sudo timedatectl set-timezone Asia/Seoul

8. 시스템 보안
1) 접속차단
/etc/hosts.allow, /etc/hosts.deny
2) 패스워드 인증 방식 > Key 인증 방식으로 변경
3) 무결성검증

9.복원순서
0. IP정보
bdy : 121.132.247.125
bds : 183.106.227.122
pjh : 119.71.123.41
jgc : 121.152.91.182
ijw : 125.190.0.192
ksj : 119.195.197.21

[원본서버]
1. su (123456)
2. cd /home/계정
3. ls
4. ROOT
5. war파일은 바탕화면의 Export안에 저장되어 있는 상태
6. tar zcvf ROOT.tar.gz ROOT
7. sz ROOT.tar.gz
[이전서버]
8. su(123456)
9. cd /home/계정
10. ls
11. ROOT.tar.gz 본인 계정에 업로드
12. tar zxvf ROOT.tar.gz

방법2>
10. mkdir ROOT
11. rmdir ROOT
11. chown 계정.계정 ROOT
예 chown master.master ROOT
12. cd ROOT
13.
1. 각자의 데이터베이스에 접속해서 테이블을 만든다.
2. java파일을 컴파일을 한다.
현재 위치가 이곳이면 > /home/master/step2/WEB-INF/classes
javac ./dao/*.java ./util/*.java
./dao/FeedDAO.java:8: error: package org.json.simple does not exist
import org.json.simple.JSONArray;
해결법1 >
javac ./dao/*.java ./util/*.java -cp ../lib/json-simple-1.1.1.jar
본인의 위치가 어디에 있는지를 확인
javac -Xinit:unchecked ./dao/*.java ./util/*.java -cp ../../lib/json-simple-1.1.1.jar
인텔리제이와 스프링부트를 이용한 개발
https://www.jetbrains.com/ko-kr/idea/download
https://start.spring.io
. 방화벽 추가
ufw allow 9090
ufw allow 1521
ufw allow 80
ufw allow 21
ufw allow 22
ufw allow 25
ufw allow 110


IoT 관련 자료
라즈베리파이 버전 확인
cat /proc/device-tree/model
uname -a
cat /etc/issue
cat /etc/*release*
getconf LONG_BIT

참고자료
이것이 리눅스다 (도서)
자바스크립트+제이쿼리 입문(도서)
사이트
비주얼스튜디오
제이쿼리
이것이 리눅스다 (도서)
아파치 Tomcat 설정
https://tomcat.apache.org/tomcat-9.0-doc/config/host.html
https://www.server-world.info/en/note?os=Ubuntu_16.04&p=jdk8
https://java.ihavenomoney.co.kr/?page_id=275
https://daisyleh.blogspot.com/2020/03/blog-post.html