CLASS/SPRINGBOOT30 #QR 세팅 방법 !Maven Repository -> 두 개 복사 -> build.gradle에 추가 🔽 -> 컨트롤러 내용- qr_pi.javapackage kr.co.kim.qr;import java.io.ByteArrayOutputStream;import org.springframework.http.MediaType;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import com.google.zxing.BarcodeFormat;import c.. 2024. 10. 21. #5-1 / websocket 통신... socketFront ( 가 어려움... ㅎ ), Back new Websocket : 소켓 라이브러리를 인스턴스로 신규 오픈=> socket.io 대체 가능 (양방향 통신을 사용하는 서버를 구축하는 형태 ) Client(1) Client(2) ===> 이 2개가 socket.io에 접속 => connect() => back으로 전송 => back에서 각 Client로 return 터미널로 실행..;;; (node.js에 npm으로 설치해야함) 👀 타이틀 dependencies { //socket - 요거 추가 implementation 'org.springframework.boot:spring-boot-starter-websocket' } - index.html .. 2024. 9. 26. #4-3 / Oracle + Mybatis 회원가입 # 서버 자동 재시작server.servlet.jsp.init-parameters.development=true 👀 sts에 oracle 연결 후 실제 data 받아서 저장해보기 - member_dto.java package kr.co.sen;import org.springframework.stereotype.Repository;import lombok.Data;@Data@Repository("member_dto")public class member_dto { Integer midx,mage; String mid,mpass,mname,mtel,memail,mgender;} - wepapp/join.jsp 아이디 : 패스워드 : 고객명 : 전화번호 : 이메일 : 나이 : 성별 :.. 2024. 9. 4. #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. #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. #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. #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. #1-3 / springboot 기본형태 + coupon insert,delete 및 boot정리.. 👀 coupon insert 예제; -> 직전 setting 및 list 예제에서 넘어옴 - coupon_write.jsp [ 쿠폰 등록페이지 ] 쿠폰명 : 쿠폰할인율 : 쿠폰사용여부 : 사용함 사용안함 쿠폰사용기한 : - mapper.xml select * from coupon order by cidx desc insert into coupon values ('0',#{cpname},#{cprate},#{cpuse},#{cpdate},now()); - coupon_repository.java package kr.co.sen;import java.util.List;import org.apache.ibatis.annotations.Mapper;import o.. 2024. 8. 12. #1-2 / springboot 기본형태+ coupon list - dbinfos.javapackage kr.co.sen;import javax.sql.DataSource;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;//@configuration : config.xml을 안쓰겠다!.. 2024. 8. 12. #1-1 / springboot setting 👀 [ Spring-boot ]spring이 upgrade 됨 (Database) springPOJO 프로그램 (순수 Java를 통해서 생성한 객체 형태)AOP PSA - 추상화 : mysql,Oracle, MariaDB => config,mapper,dbconfig... (가장 크게바뀜)loc/DI - 의존성 주입 (@resource, @repasitory.. 이런것들... ) spring-bootPSA -> sqltemplatepom.xml => 기본으로 spring project 생성시 instance에서 관리db connection이 눈에 안보임interface 사용 多spring reactive web : react와 같이 사용 / spring web services : SOAP 기반 (주.. 2024. 8. 9. 이전 1 다음