본문 바로가기

DevDevDev306

#5-2 / gallery board delete (spring + I/O + database) ❗ 저장된 파일도 삭제해야함!! - shop_main2.java 에 추가 - @GetMapping("/gallery_delete.do") (Contoller)public static int m_gidx; //메모리를 사용할거다@GetMapping("/gallery_delete.do")public void gallery_delete( @RequestParam(required = true) Integer gidx, HttpServletResponse res, HttpServletRequest req ) throws Exception{ res.setContentType("text/html;charset=utf-8"); this.pw =res.getWrite.. 2024. 7. 12.
#5-1 / gallery board select-view (spring + I/O + database) - shop_main2.java 에 추가 - @GetMapping("/gallery_view.do") (Contoller)public static int m_gidx; //메모리를 사용할거다@GetMapping("/gallery_view.do")public String gallery_view( Model m, @RequestParam(defaultValue="0", required = false) Integer gidx ) throws Exception{ //@RequestParam~ : 값 필수인지 여부 정해주는 부분 this.m_gidx = gidx; //메모리영역의 전역 변수에 인자값으로 받은 gidx값 넣어줌 ArrayList one_list = new g.. 2024. 7. 12.
#4-3 / gallery board select-list (spring + I/O + database) 👀 list - dao 수정 : 첨부파일도 가지고오려고..! (썸네일 타입 board list)package shop;import java.util.ArrayList;import java.util.Arrays;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class gallery_dao { int gidx; String gwriter,gsubject,gtext; String gorifile,gfile; String gindate; //list 페이지에서 필요한것만! //=> 첨부하지 않을경우,첨부할 경우 배열 length가 달라질 수 있기 때문에 아예 분리해서 받는게 좋다! public ArrayList lists(){ .. 2024. 7. 11.
#4-2 / gallery board insert-write (spring + I/O + database) ❗ board 파일 첨부시파일 저장 후에 ===> DB에 저장되어야 함  1. table 만듬 create table gallery( gidx int(7) not null auto_increment, gwriter char(100) not null, gsubject varchar(200) not null, gtext text not null, gorifile text null, //사용자가 업로드한 파일명  gfile text null, //저장시 랜덤함수를 이용하여 저장된 파일명 gindate timestamp not null default current_timestamp, primary key(gidx) );  2. gallery_dao.java 생성 : getter,setter 첨부하지 않을경우 ,.. 2024. 7. 11.
#4-1 / spring + I/O [file I/O 정리] commons-upload => pom.xmlwebpage.xml => defaultEncoding,maxUploadSize="-1",maxlnMemorySize(속도향상) : 단점- 메모리 과부하로 인하여 서버가 shutdown될 수 있음Front-end : 파일첨부1개, 파일첨부 여러개, 파일첨부 1개씩 여러개 담을 경우Java Controller에서 @RequestParam("name명") MultipartFile 객체명FileCopyUtils.copy() 를 이용해 웹 디렉토리 출력가능commons-upload 라이브러리 : localhost서버, CDN서버에서 사용 가능(상대방 서버) [ I/O 파일 업로드 라이브러리 사용 - setting ]mvnrepository 여.. 2024. 7. 11.
#3-2 / coupon delete,update (spring + database) https://dev-eunse.tistory.com/198 여기 list에서 삭제,수정  👀 삭제 1. shop_main.java 에 추가 : @GetMapping("/coupon_del.do")/*-- 쿠폰 delete --*/@GetMapping("/coupon_del.do")public void coupon_del(int cidx, HttpServletResponse res) throws Exception{ res.setContentType("text/html;charset=utf-8"); String callback = new coupon_insert().del_result(dbInfo, cidx); this.pw= res.getWriter(); if(callback ==.. 2024. 7. 10.
#3-1 / coupon insert,select (spring + database) 다시 maven project 로 돌아옴 👀 이거 순서대로coupon 만들어서 database에 insertdatabase select - coupon list 출력 👀 coupon_wirte.jsp -> (coupon_writeok.do) -> coupon_list.do 1. table 만듬create table coupon( cidx int(6) not null auto_increment, cpname varchar(200) not null, cprate int(2) not null, cpuse enum('Y','N') not null default 'N', cpdate date not null default '0001-01-01', indate datetime not null default cu.. 2024. 7. 10.
#2-2 / spring + database 연결,회원가입 JSTL+spring+Datasource ⚡ database 연결에 따른 결과값 출력* 2가지 방식 => 맘에드는 방식으로 사용^_^1. XML형태의 DB연결 2. properties+JSTL => spring legacy 프로젝트일 때 사용 , 차후에 진행XML형태의 DB연결 시 필요한 라이브러리 (필수)   - from) pom.xml1. mysql-connector-java2. spring-jdbc : @ 이용하여 resource 형태로 db연결하여 구성3. commons-dbcp ( dbcp란? Database Connection Pool ) : spring,spring-boot에서만 사용가능   => 다운법 :  https://dev-eunse.tistory.com/193 의 22번,23번 (mybatis는 해당 예제에서 필요 없음) .. 2024. 7. 9.
#2-1 / spring 규칙2, JSTL 사용법 기초 webpage.xml에 추가 🔽- mainpage2. javapackage webspring;@Controllerpublic class mainpage2 { //@GetMapping("/admin/adminok.do") //기존 get - 무조건 get으로 날라와야함 @RequestMapping(value="/admin/adminok.do",method=RequestMethod.GET) public String adminok(HttpServletRequest req, Model m) { String pidx = req.getParameter("pidx"); // GetMapping : /adminok.do?pidx=10 으로 접속시 10 출력 System.out.println(pidx); .. 2024. 7. 9.
#1-2 / @ , spring 규칙1 [ @가 어디서 어떻게..쓰이는가.. ]@ : Class 밖, Class 안, 인자값  가능 [@Controller ]@Autowired => Controller@ModelAttribute => Controller  에서 DAO(setter 역할) dao와 함께 사용하는 형태의 class  @RequestParam => required : Controller  (전달값 필수 , 필수 아님 )@PostMapping , @GetMapping => Controller에서@Setter, @Getter => DAO, VO(@Getter만) [Spring I/O]@Multiconfig => server 업로드 => CDN서버(이미지용 서버)로는 전송 불가능commons-filedupload library 사용 =>.. 2024. 7. 8.
#1-1 / [Spring maven project] start, setting - 70% 세팅완... 어떻게 생성하냐에 따라 다 세팅, 사용서버, 사용법이 다~~ 다름...딱 정해진게 없음... spring의 기본은 jsp파일 - html시 로드가 불가능spring 은 JSTL과 많이씀모든 라이브러리는 API로 사용Eclipse 에서 setting시 old버전 -> 2021-09 버전 : spring 마지막 버전, 그 이후부터 spring boot spring,spring boot 모두 bean이 기본임sts4는 기본이 boot ✅ Spring maven project 기본 setting법 정리 (하단에 내가 메모한게 있긴함..)Widnow -> Preferences encoding 검색 -> 모두 UTF-8로 변경Install/update 체크박스 해제(autometically~)Run/Debug 의 .. 2024. 7. 8.
인증메일 보내기 form으로 한번에 보내면 절대루 안됨..ajax로 보내는 것이 안정적..! => 페이지 이동 없이 데이터가 왔다갔다 해야하기 때문 ⚡ 인증메일메일 주소 입력후 인증하기 클릭servlet으로 입력한 이메일 전송servlet에서 해당 이메일로 난수 생성해서 메일 보내고, jsp로 난수 보냄 ( print.write() )인증확인 클릭시jsp에 도착( this.response )한 해당 난수와 input에 새로 적는 수가 같을경우 성공 이메일 : 인증번호 : - send_email.do (servlet 파일)@WebServlet("/send_email.do")public class send_email extends HttpServlet { private static final long serialVe.. 2024. 7. 5.
mail 보내기 SMTP 서버 - POP3, IMAP3=> 도메인 필수 (localhost, 127.0.0.1 , IP 주소 불능) 도메인 : 화이트도메인 - SPF로 서버에 등록시 100% 메일을 송수신 * IMAP - 메일 수신받을 경우 PC에 저장됨(단, 서버에도 정보가 저장됨) , 가장 많이 사용* POP3 - 메일 수신받을 경우 PC에 저장됨  (단, 서버에는 저장하지 않음)* SMTP - 메일을 발송하는 서버 nate.com 메일 -> 환경설정  ->  IMAP/SMTP , POP3/SMTP 사용여부 - 사용할거 사용 체크 (naver도 동일) 메일서버 (기본정보-host,port번호) 메모smtp.mail.nate.com    587imap.nate.com    993 mvnrepository.com 에서J.. 2024. 7. 5.
jsp에서 split이 안될 때 java에선 정상작동하나 jsp에서 요상하게 출력될때 제대로 출력%> 🔽 StringTokenizer : Java 11번대 등장한 라이브러리  split의 업데이트 버전이며,여러개의 구분자를 동시에 사용하여 문자를 구분할 수 있음,모든 특수문자 다머금 ^___^String word = "aaaa|bbbb|cccc";StringTokenizer arr3 = new StringTokenizer(word,"|");while(arr3.hasMoreElements()){ out.print(arr3.nextToken() + ""); //aaaa bbbb cccc 한줄씩 출력}String word2 = "aa,aa|bb,bb|cc,cc";StringTokenizer arr4 = new StringTokenizer(.. 2024. 7. 5.
#9-2 / 보안2 login (test) db 설계create table login( midx int(8) not null auto_increment, mid varchar(30) not null, mpass varchar(80) not null, //MD5 16진수로 받을거임 primary key(midx), unique key(mid) );// test위해 data 미리 하나 만들어둠 (비번 1234)insert into login values ('0','apink','81dc9bdb52d04dc2036dbd8313ed055'); 🔽 spring 미리..WEB-INF 폴더에 classes 폴더 생성 -> db.properties 파일 생성 ==> 이름 고정임 내맘대로 X !        db.properties 에는.. 2024. 7. 5.
#9-1 / 보안 https://dev-eunse.tistory.com/112  : 이건 문자만 단순 암호화.. base64는 쉽게 뚫림  ✅ security 모든 형태 구조 암호화 : bit 단위로 문자를 별도의 임의값으로 변경하는 것 MD5 (128bit) / 해시 암호화 코드 / 가장 많이 쓰임 / 뚫리긴 뚫림 SHA-1(160bit) / MD5를 보다 높은 bit를 활용하여 사용하는 방식 / 뚫리긴 뚫림 SHA-2SHA-1에서  bit수는 개발자가 직접 정할 수 있게 변경됨 ( 224bit , 256bit , 384bit , 512bit )  / AI가 뚫음 -_-  SHA-3256,384,512 bitSHA-2에 특수문자 형태의 코드를 추가 => pw -> MD5 -> SHA 로 두번 꼬아버리는 형태 많이 사용 .. 2024. 7. 5.
web.xml 선언을 하지 않고 사용 권하진 않음 - 유지보수가 힘들다 (파일이 많아지고 파일 명을 다르게 작업시 찾기 힘듬..) |  *  .  &  ^이런거 쓸 때 주의 2024. 7. 5.
로그인 - 자동저장 ⚡ 자동로그인 체크시 localStorage 저장로그인을 한 상황에서 해당 페이지를 강제로 url접속시 자동으로 메인페이지로 이동을 하는 상황을 재현-login.jsp 자동로그인 로그인button에 type이 없을 경우 submit 전송 방식은 get, SPA형태로 페이지가 이동됨- loginok.java (servlet) login session 처리 및 storage 형태protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String mid = request.getParameter("mid"); String mpass = req.. 2024. 7. 3.
#3-1 / ajax + .do ajax data 통신do 통신을 할 경우 - 결과에 대해서만 write (배열,문자열,결과값)⚡ ajax .do 파일 data 전송- ajax1.jsp 데이터1 데이터2 데이터3데이터 출력- ajax2.do(servlet)public class ajax2 extends HttpServlet { private static final long serialVersionUID = 1L; //get두 되구 post두 되구 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest re.. 2024. 7. 2.
do에서 jsp로 include하여 여러개의 페이지를 로드할 수 있음 1. includedo에서 jsp로 include하여 여러개의 페이지를 로드할 수 있음 - page1.jsp  -page3.jsp -page4.do (servlet)public class page4 extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //여기선 out.print 못씀 response.setContentType("utf-8"); String room = "조선호텔"; String room_info .. 2024. 7. 2.
mysql -> json 변환 사이트 https://tableconvert.com/ko/mysql-to-json 2024. 7. 1.
#4-5 / 상품 리뷰 등록,list,삭제,수정 with 짝꿍A part :리뷰 등록페이지 A (고객명,제목,textarea,radio로 점수,첨부파일 / insert) => product_insert.jsp파일첨부는 필수 아님 B part : 리뷰 출력 리스트 페이지 B (sql select 활용)삭제버튼 클릭시 데이터 삭제단,첨부파일 있을 경우 첨부파일명 출력=> review_list.jsp ⚡ DB table 생성create table review(ridx int(8) not null auto_increment,rname varchar(100) not null,rsubject varchar(200) not null,rtext text not null,rscore int(1) not null default '1',rfile text null,rda.. 2024. 6. 28.
#4-4 / input type file-multiple을 사용할 경우(part) collection 사용한 버전 : https://dev-eunse.tistory.com/177⚡ part만 이용하여 multiple을 저장(collection 사용 X) 첨부파일 : package shop;@MultipartConfig( fileSizeThreshold = 1024*1024*2, maxFileSize = 1024*1024*5, maxRequestSize = 1024*1024*100)public class jsp16 extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response.. 2024. 6. 27.
#4-3 / 파일 업로드(stream) ⚡ Stream I/O로 파일 저장 - .jsp 첨부파일 : - servlet 파일 (.java)package shop;@MultipartConfig( fileSizeThreshold = 1024*1024*2, maxFileSize = 1024*1024*5, maxRequestSize = 1024*1024*100)public class jsp15 extends HttpServlet { private static final long serialVersionUID = 1L; //Stream I/O로 파일 저장 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IO.. 2024. 6. 27.
#4-2 / 첨부파일 여러개 업로드시 사용법 collection 사용 X part만 사용 - multiple로 받는 버전 : https://dev-eunse.tistory.com/179👀 enctype="multipart/form-data"  : 미작성시 file 절~대 안날라감여러개의 첨부파일 전송 형태 ( Front-end와 소통으로 전송방식이 변경 됨 ) 1. name값은 전부 다르고, 순차적으로 전송하는 방식2. name값을 동일하게 전송하는 방식 요고루 해볼거임 3. multiple을 이용해서 전송하는 방식( file " multiple=" multiple">한번에 여러개의 파일을 받는 형태 )=> 직접 해보니 해당방법으로 3번 - 마크업만 바꾸면 동일하게 저장이 된다!      ( multiple 사용시 갯수 제한 :         f.. 2024. 6. 27.
👀⚡ sql  날짜만 지정시 : https://dev-eunse.tistory.com/121 2024. 6. 27.
#4-1 / 상품 등록 및 삭제 with 짝꿍A part : 상품 등록페이지 A (sql insert 활용) => product_insert.jspB part : 상품 정보 출력 리스트 페이지 B (sql select 활용) => product_list.jsp db에 저장된 내용이 모두 출력되어야 함 ⚡ DB table 생성create table product(pidx int(7) unsigned not null auto_increment,pcode char(7) not null,pname varchar(100) not null,pmoney int(8) not null,pdate timestamp not null default current_timestamp,primary key(pidx),unique pd(pcode));만약 sql .. 2024. 6. 27.
#3-3 / 2예제 paging 기능 추가 ❓ ex)data갯수가 29개이고 한페이지당 4개씩 출력할 경우1page : 42page : 43page : 4...8page : 1 ⚡ 전체회원만...총 22개의 데이터 중 한페이지당 5개씩 노출하게 제작1.( 총 data갯수 / 한페이지당 노출할 수 ) 만큼 반복문 돌려서 element생성 => float으로 받아야함  : ceil로 올림이 적용되기 때문에.. (?)limit 0,5 : 0부터 5개limit 5,5 : 5부터 5개limit 10,5 : 10부터 5개..sql의 limit숫자를 적용하는 방법 : (현재번호-1)*한페이지당 출력할 data갯수 -jsp8 > SMS 광고수신 : >동의함 >동의안함 Email 광고수신: >동.. 2024. 6. 26.
#3-2 / 2예제 고객정보 수정페이지(update) 새로운 jsp 생성해야 함(상세 페이이지와 동일하게)⚡ modify page 제작 (update)-기존 table의 id에 a링크 추가 )">🔽- 수정페이지(.jsp)1. body 내 input type hidden 넣고 value값 고유 idx 번호로 세팅2. 변경 가능한 항목 input or select로 변경 - 레이아웃은 기존 상세와 동일3. 수정버튼에 js추가(ajax로 ) ./jsp12.jsp 로 해당 input값들 넘김4. jsp12.jsp에서 해당 input name값으로 받아서 sql연결 후 update5. 정상 변경시 out.print("ok") , 문제 발생시 out.print("no")6. front에서 ok냐 no냐로 핸들링넘기는 방식은 2가지가 될 수 있다form으로 넘기느냐 .. 2024. 6. 26.
a tag에 function걸 때 a태그에서 함수를 호출시 에러가 발생 [ 해결법 ] : javascript:void void를 쓰는 이유 : 사파리나 오페라,파이어폭스 등에서 에러가 날 수 있다 2024. 6. 26.