본문 바로가기

CLASS265

#3-1/ Oracle table,column 👀 배열 자료형Oracle에는 enum 없음 mgender enum('M','W') not null default 'M'=요렇게=> mgender char(1) check (mgender IN('M','N')) not nullset 도 없음=> check column 자료형 사용   👀 table명 변경rename 기존테이블명 to 변경할테이블명rename member to member_ship: table명 member  ->  member_ship 으로 변경  👀 table list 확인select table_name from user_tables;  : table명 아님 이게 진짜 명령문임ㅎ 👀 data 삽입insert into member_ship values ('hong','홍길동','0.. 2024. 9. 3.
#2-1 / Oracle 사용자 추가 / 문자,숫자,date 자료형 Oracle- Container 기준으로 잡혀있음 CDB- Oracle의 큰 운영체제 Database -> Database를 구성- Seed라는 Database를 이용해서 PDB를 활용함 [ 관리자 ]system 사용자 -> sysoper (DB-startup,close,backup,recover,mount)sys 사용자 -> sysdba (오라클의 모든 권한을 갖는 관리자 - 사용자 추가,권한 부여 등등..관리함) ✅CDB를 복제한 SEED🔽PBD : Seed를 복제한 Database(가상 DB) cmd로 접속시 sys는 sysdba 또는 sysoper로 접속을 해야하며, 해당 설정은 as로 구분하여 접속합니다. [기본사용자] => pdbs를 생성시- HR (인적자원 관리 사용자)- PM (상품정보 .. 2024. 9. 2.
#1-1 / 🌸 Gradle Project start + Oracle create a project   application.propertiesspring.application.name=bootspringserver.port = 8080server.servlet.encoding.charset=utf-8server.servlet.encoding.force-response=trueserver.servlet.encoding.force=trueserver.servlet.encoding.enabled=truespring.devtools.restart.enabled=truespring.servlet.multipart.enabled=truespring.servlet.multipart.max-file-size=10MBspring.servlet.multipart.max-request-si.. 2024. 8. 30.
spring boot server memo spring-boot [실행] - Maven or Grandle-groovy [Server 가동]  => MVC 전체 read 후 실행Module, Controller, View  Module : Background 실행 (Memory)View : 웹 app를 이용해서 실행 ( 단독실행 or Controller 에서 return받아 실행 )Controller : 호출 (POST,GET,PUT,Delete,Fetch) => 실행 2024. 8. 30.
#11-1 / websocket - socket 통신 [ socket ~ chat  구성] : 실제론 다 요렇게 만들어야함HTML => 제작 (채팅 접속에 대한 로그인 정보)Socket Server => 구성Socket UDP,TCP => Room 정보Client (HTML, JSP) => Server에서 전달한 값을 출력✅ 해당 예제에선 server 구성 / Client Client 채팅까지만 제작해볼거임      ( 그 다음 : Room 생성 및 DTO를 이용해서 생성하는 방식 제작 해야함 )  chrome 접속 -> simple websocket client 검색 ->  Simple WebSocket Client - Chrome Web Store -> chrome에 추가   - websocketconfig.java  : classsocket 서버 정.. 2024. 8. 29.
#10-3 / Ajax로 이미지 전송 및 JPA => 삭제 👀 ftp에 올린 실제파일 , database 삭제   - cdn_repo.java (interface)public interface cdn_repo extends JpaRepository{ @Query("select now()") String mysql_times(); //insert때 쓴거 List findByImgnameLikeOrderByIdxDesc(String imgname);} - Controller@Autowiredcdn_repo cdn_repo;@GetMapping("/cdn_del/{filenm}")public String cdn_file_delete(@PathVariable String filenm) { FTPClient ftp = new FTPClient(); .. 2024. 8. 29.
..^^..server 🎫 Tomcat => web경로 (X)    : 실제 걍 접속하는애 Nginx or Apache => web 디렉토리  : html,css,js... 등 사용가능 ✅ 80,8080 ( Nginx or Apache ) 은 꼭 포트 포워딩을 해줘야함 2024. 8. 29.
#10-2 / Ajax로 이미지 전송 및 JPA 🤷‍♂️❓ajax 파일 전송은 주로 Mobile에서 활용함accept="image/*" capture="camera"    해당 코드 input type="file" 에 넣을시 모바일에서 버튼 클릭시 바로 카메라로 넘어감CDN전송시 CORS 방지 코드 필수 (back-end)   👀 ajax로 전송해서 backend로 받기  - ajax_upload.jsp 파일명 :   - Controller//ajax로 파일 전송을 받는 메소드@CrossOrigin(origins="*", allowedHeaders = "*") //cors 해제@PostMapping("/ajax_uploadok.do")public String ajax_uploadok(MultipartFile mfile) { System.ou.. 2024. 8. 28.
#10-1 / CDN 이미지 https://dev-eunse.tistory.com/291   여기서 + db 저장해볼거임create table img(idx int not null auto_increment,imgname varchar(200) not null,imgurl text not null,imgdate timestamp not null default current_timestamp,primary key(idx));요렇게 table 만듬   👀 cdn 이미지 🤷‍♂️❓ cdn이미지 호스팅 서비스 Cloud1. 일반 Cloud 형태로 구성 : docker를 사용하는 형태 (물리 형태)     Centos + mysql + JKD17 + tomcat + nginx2. 가상 Cloud 형태로 구성 (VPC) : 가상 IP 할당.. 2024. 8. 28.
#9-3 / CDN FTP 파일 업로드 사용법 ❗ sftp는 접속 불가  👀 cdn 서버로 이미지 및 컨텐츠 파일 전송    - jsp   - Controller//cdn 서버로 이미지 및 컨텐츠 파일 전송 메소드@PostMapping("/cdn_uploadok.do")public String cdn_uploadok(ServletResponse res,Model m, @RequestParam(defaultValue="",required=false) String url, MultipartFile mfile) { res.setContentType("text/html;charset=utf-8"); FTPClient ftp = new FTPClient(); //FTP 접속 클라이언트 객체 생성 ftp... 2024. 8. 27.
#9-2 / Thymeleaf 부가사용 방법 (with , T, formatInteger.. ) 👀 th:with   [[data2]] th:with jstl set 형태와 동일마크업 태그 기준으로 with 작성한 곳 내부에만 범위가 설정됨  [[${n}]] with에서 셋팅된 가상의 변수를 each,if 모두 활용이 가능함   ${T(java.lang.Math).max(a,b)} : a,b중 최대값을 가져올 때 사용${T(java.lang.Math).min(a,b)} : a,b중 최소값을 가져올 때 사용=> 두가지 값 비교만 가능 T type을 설정시 사용 (라이브러리 class를 호출 할때 사용)ex) T(kr.co.sen.web).사용된 class명    =>  요런식으로 핸들링 가능    👀 format 형태구조  .. 2024. 8. 27.
#9-1 / JPA 5 - 회원가입 list paging Apache Commons FileUpload » 1.5 Apache Commons Net 3.6com.squareup.okhttp3  얜 버전 빼고=> pom.xml에 추가  🤷‍♂️❓ paging 반복분 사용시int ea=10;m.addAttribute("ea",ea); [[${num}]]=> 잘돌아감 1=> 이건 안돌아감#numbers숫자 포맷을 적용할때 사용함소수점,정수,통화형식,퍼센트 sequence 숫자 범위를 설정  (시작값,종료값,step) ※ Controller에서 숫자값을 addAttribute 로 설정하더라도  , th:each로는 반복문이 작동하지 X    => th:each 근본 반복문은 배열(클래스,원시) 기준          단, #numbers.sequence를 이요.. 2024. 8. 27.
#8-4 / JPA 4 - 회원가입 search 👀 search  - html 이름 아이디 연락처    - Controller@GetMapping("/checkout/member_list")public String member_list(Model m, @RequestParam(value="",required = false) String search_id, @RequestParam(value="",required = false) String search_part) { List all=null; //DB에 있는 전체 데이터를 DAO를 이용하여 thymeleaf로 값 전달 if(search_part==null&&searc.. 2024. 8. 27.
#8-2 / JPA 4 - 회원가입 modify , update 👀 modify 페이지 출력 - selectOne - controller@Autowiredweb_repo wr; //interface load//회원 정보 수정 JPA@PostMapping("/checkout/member_modify")public String member_modify(int uidx, Model m, ServletResponse res) { res.setContentType("text/html;charset=utf-8"); try { List oneData= wr.findByUidx(uidx); if(oneData.get(0)==null) { System.out.println("해당 데이터가 없습니다."); }else.. 2024. 8. 23.
#8-1 / JPA 3 - 회원가입 list , delete ( onclick() + thymeleaf ) 👀 thymeleaf로 list 출력 (jpa)  - /checkout/member_list (list, delete 공통) 회원 전체 리스트 : 가입자수 ( 명 ) 번호 아이디 이름 이메일 연락처 수정/삭제 회원가입 페이지   🤷‍♂️❓ th:이벤트 핸들링 속성 (onchage,onsubmit,onclick.... 등) javascript에 thymeleaf.. 2024. 8. 23.
#7-2 / JPA 2 - 회원가입 중복체크 , insert https://dev-eunse.tistory.com/274  요기서 만든 membership 페이지로 insert 해볼거임   👀 아이디 중복체크 => jpa로 로드받은 값을 핸들링   - jsp파일 name값 db 컬럼명과 맞춰줌 ⭐ thymeleaf 시 경로⭐ html,jsp를 제외한 css,js 등 파일은 모두 webapp에 들어있어야함!!! ⭐  - memberjoin.js//아이디 중복체크 => jpa로 로드받은 값을 핸들링 - get통신function ajax_idck(uid){ if(uid==""){ alert("아이디를 입력하세요"); frm.uid.focus(); }else{ var http,result; http = new XMLHttpRequest(); http.onrea.. 2024. 8. 22.
🌸 Oracle Setting ✅ msql보다 어려붐..ㅎ      oracle은 mysql과 다르게 cmd 말구 tool에서 작성 많이함ㅎ ✅ port : 1521 Oracle 8i 👎Oracle 9i 👎Oracle 11g  ( g: gird =>  single server ) 많이씀Oracle 12c ~ Oracle 18c ~ Oracle 22c  ( c: cloud => clouse server ) 18c 많이씀Oracle 23ai ✅ Settingoracle 다운google 검색 - oracle 18c download 검색해서 다운 - Oracle Database 18c Express Edition for Windows x64공홈에서 sqldeveloper 검색 - Windows 64-bit with JDK 11 inclu.. 2024. 8. 21.
#7-1 / JPA 1 - 회원가입 JPA : 빡세당spring-boot + Database + thymeleaf + JPA + DAO 요렇게 때릴거임 이제완젼 실무🤷‍♂️❓ JPA Java persistence API  ( persistence : 종속성) => 자바의 종속성을 유지시키는 표준 인터페이스 모음Hibernate , OpenJPA ✅ 설치  thymeleaf.properties  추가## jpa#콘솔에 sql 문법출력 ddlspring.jpa.show-sql=true#자동으로 dao에서 설정된 값으로 신규 생성 및 자동 sql ddl 적용spring.jpa.hibernate.ddl-auto=none#create : table 생성#update : table 초기화 #none - ddl-auto를 사용하지 않겠다, 만들어지지.. 2024. 8. 21.
#6-3 / thymeleaf - 2차배열 출력 👀 알아두쇼==>  일반text + 변수 표현시  |  안에 집어넣으면 됨!    (  3.x 사용 가능  )    👀 2차 원시배열, class배열   - Controller@GetMapping("/arrays.do")public String arrays(Model m) { String arr[][] = { {"홍길동","강감찬","이순신"}, {"22","33","44"} }; m.addAttribute("arr",arr); ArrayList> all = new ArrayList>(); ArrayList al = new ArrayList(); al.add("서울지사"); al.add("경기도지사"); al.add("강원도지사");.. 2024. 8. 21.
#6-2 / thymeleaf - 협업시 properties 분리 src/main/resources - newfile  - thymeleaf.properties 파일 생성함기존 application.properties 여기에 있던 thymeleaf 부분  thymeleaf.properties 여기에 복붙  후기존 application.properties 여기에#메인 properties 외에 별도의 properties를 가져와야할 경우spring.config.import=thymeleaf.properties추가 => 잘 작동됨ㅋ 2024. 8. 21.
#6-1 / Thymeleaf 외부파일 로드 , layout thymeleaf 외부 파일로드 규칙 templates , webapp 에 있는 파일은 서로 include 불가resource 안에서 모든 것을 핸들링 해야함 🤷‍♂️❓th:fragment영역 처리를 담당하는 thymeleaf 속성th:fragment = "가상의 이름"th:fragment="main(data)" 요렇게 인자값을 넘길 수도 있음 th:replace영역(fragment)을 가져오는 thymeleaf 속성th:replace="~{경로 :: fragment이름}"  th:insertthymelefa 3.x 속성 (== replace)replace는 곧 없어질듯~ ==>  replace는 기존 태그를 삭제 후 로드하는 방식 / insert는 기존태그 삭제 없이 로드하는 방식        ins.. 2024. 8. 21.
#5-2 / thymeleaf로 데이터 출력 2 👀 JSP + thymeleaf  - controller@GetMapping("/datalist2.do")public String datalist2(Model m) { m.addAttribute("view","JSP & JSTL"); return "datalist2"; // 걍 null로 해도 되는듯}   - datalist2.jsp/* */이걸 지워줘야함 ✅ view 파일 속성명을html과 jsp 함께 사용시 상위 속성을 입력해야함! application.properties여기에 spring.thymeleaf.cache=falsespring.thymeleaf.check-template-location=truespring.thymeleaf.enabled=truespring.thymeleaf... 2024. 8. 20.
#5-1 / thymeleaf로 데이터 출력 1 : text , ArrayList , Map , dao, 조건문 , checked thumeleafhtml에 출력 가능jsp,jstl에 출력 가능 ( jsp,jstl 상위 )spring에서는 잘 안씀 ✅ 설치  application.properties 추가#thymeleaf# 템플릿 캐쉬를 비활성 - 소스를 수정시 바로 새로고침이 이루어짐spring.thymeleaf.cache=false # 템플릿 뷰를 이용하여 resources의 디렉토리를 활성화하여 사용함spring.thymeleaf.check-template-location=truespring.thymeleaf.enabled=true# view 경로를 말함spring.thymeleaf.prefix=classpath:/templates/# view 파일 속성명spring.thymeleaf.suffix=.html# view에서 사.. 2024. 8. 20.
#4-2 / Bootstrap - 회원가입 bootstrap example/checkout 가져옴  👀 NICE 인증  보안 👎 실제론 돈주고 라이브러리 다운받아서 같이 사용 - jsp 회원가입 회원가입 샘플 페이지 MEMBERSHIP 고객명 아이디 패스워드 패스워드 확인 연락처 인증 확인 이메일 주소 입력 주소찾기 캐릭터 이미지(Optional) 회원가.. 2024. 8. 19.
#4-1 / Spring boot - 파일 업로드 2가지 방식1. @RequestParam 형태의 파일 업로드 기능 2. @RequestPart 형태의 파일 업로드 기능 application.properties#file I/O#업로드 기능을 사용함spring.servlet.multipart.enabled=true #파일 하나의 최대 사이즈spring.servlet.multipart.max-file-size=4MB#Multi 형태 - 여러개의 파일 업로드시 전체 합계 크기spring.servlet.multipart.max-request-size=10MB    👀 1. @RequestParam 형태의 파일 업로드 기능  - fileupload.jsp 단일 파일 업로드 :   - controller@PostMapping("/fileuploadok... 2024. 8. 19.
#3-1 / 회원 로그인 (외부 로그인 API 연동) with bootstrap , kakao  bootstrap 4.6.2 css,js압축풀고  webapp에 복붙 끝 https://getbootstrap.com/docs/4.6/getting-started/download/ kakao - 버튼 이미지 다운   https://developers.kakao.com/docs/latest/ko/kakaologin/design-guide    여기서 디자인 리소스 다운 후 프로젝트에 복붙 -> jsp에 이미지 넣음 - 내 어플리케이션 추가  내어플리케이션에서- 왼쪽 nav 의 허용 IP 주소 - cmd ipconfig로 ip / naver에서 검색한 내 ip / 127.0.0.1 복붙 - 왼쪽 nav 의 플랫폼 - web 플랫폼 등록 -   http://local.. 2024. 8. 14.
#2-3 / AOP+springboot+로그기록(aop에서 dao 값 가져오기) table 만듬create table user_log(log_idx int(8) not null auto_increment,log_uid varchar(100) not null,log_time timestamp not null default current_timestamp,primary key(log_idx))=> 이건 log 기록 table   - login.jsp암호화는 생략 아이디 : 패스워드 :    - mapper2.xml  - mybatis xml로 또만들면됨 select uid,uname,upass from user where uid=#{uid} order by uidx desc 비밀번호 확인은 if에 넣는게 정통! => 뚫림 방지 - userRepasitory.java.. 2024. 8. 13.
#2-2 / AOP-springboot 👀 AOP - springboot  @SpringBootApplication - 실행시 AOP에 대한 어노테이션 설정 @EnableAspectJAutoProxy 를  BootwebApplication.java에 추가BootwebApplication.java : springboot project 생성시 자동으로 생성된 파일임 ( @SpringBootApplication 이게 미리 들어있음 )class(AOP를 작동시키는 class를 생성) - module@Pointcut 추상화 메소드를 생성때에 따라 annotation 선택해서 사용- @Before : 해당 메소드가 실행되기 전에 실행되는 메소드 - @AfterReturning : 해당 메소드가 정상적으로 실행되고 난 후 반환되는 값에대해 실행되는 메소.. 2024. 8. 13.
#2-1 / AOP-java 얜 springboot 아님 🤷‍♂️❓ AOP 관점 지향 프로그래밍속도, 프로세서 관리 변경사항 위해 사용 多가상공간으로 본코드를 복제해 가져와 수정한뒤 문제 없으면 본코드 버리고 새로 적용? 한다 본코드가 작동되고있는 상황에서 테스팅, 추가코드도 추가로 실행되어야함 ex ) 금융기관 점검시간 ---- 본코드 ---- interface를 활용하는 형태실행할 class에서 해당 inteface를 로드코드 작성실행-----코드   추가 또는 변경되는 사항이 있을 경우 : AOP----proxy를 생성proxy에 추가 코드 작성(본코드와 동일한 변수,조건을 사용하면 X)테스트 후 문제가 되지 않을 경우 본코드를 실행하지 않고 AOP(proxy)로 실행   👀 AOP-java - examinterface.j.. 2024. 8. 13.
사이트 제작시 [ 관리자 사이트 ]관리자 로그인(별도)회원 리스트 : 관리자,일반회원,사업자회원게시판 관리 : 게시판 생성, 게시판 리스트사이트 정보 : copyright에 적용되는 페이지=> 얘가 잘 만들어져야 메인페이지,서브페이지...가 잘 만들어진다! 2024. 8. 13.