본문 바로가기

CLASS/SPRING,JSTL39

jstl - I/O 사용시 /WEB-INF/spring/appServlet/servlet-context.xml 에 해당 코드 추가 //2메가까지 받음 2024. 8. 6.
#11-2 / JSTL-paging(font-end) 👀 back가 api 서버 구축 => front에서 찍는 방식  https://dev-eunse.tistory.com/255=> 요거랑 동일한 db 갖구 놀거임  - controller - @GetMapping("/pay/coupon_api.do")@Controllerpublic class pay_controller { //CORS방지 필수로 넣어줘야함 @CrossOrigin(origins = "*",allowedHeaders = "*") @GetMapping("/pay/coupon_api.do") public String coupon_api(HttpServletResponse res) throws Exception{ res.setContentType("text/html;charset=utf-8");.. 2024. 8. 6.
#11-1 / JSTL-paging(back-end) 👀 back-end에서 처리  * addAllAttributes : Object메서드 배여로간련 객체를 차례대로 추가하는 방식단점 - 2차 배열로 jsp 전달시 문제 발생 (2차배열 인식 불가)=> 2차배열시 addAll~로 찍지 말고 걍 addtAttribute로 찍으세욤기타-pg 예제에서 사용함출력방식 : m.addAllAttributes(Arrays.asList(배열))  =>  ${stringList.get(0)}  or ${stringList[0]} * mergeAttributes map과 관련됨 - dbinfo.javapublic class dbinfo { public Connection info() throws Exception { String db_driver= "com.mysql.cj.. 2024. 8. 6.
#10-2 / 사용자 정보 찾기 👀 아이디찾기,패스워드 변경 - user_dao.javapackage com.navershop.www;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class user_dao { int uidx; String uid,upass,uname,ujoin,umail;} - search_user.jsp 아이디 찾기 고객명 : 가입 이메일 : 패스워드 찾기 아이디 : 고객명 :  - config.xml - mapper.xml select * from user where uname=#{uname} and uemail=#{uemail} where uid=#{uid} and uname.. 2024. 7. 29.
#10-1 / 패스워드를 md5형태로 변환 👀 1. @Repository ~ @Resuource❓ md5 : 회원가입,로그인,패스워드 변경, 1:1문의, 자유게시판, 상품구매내역확인....등에 사용 - user_dao.javapackage com.navershop.www;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class user_dao { int uidx; String uid,upass,uname,ujoin;}   - md5_pass.java//패스워드를 md5형태로 변환하는 메소드@Repository("md5pass")public class md5_pass { public String md5_making(String upass) { StringBuilder sb = n.. 2024. 7. 29.
#9-3 / Session 등록시 주의사항 @PostMapping("/loginok.do")public String loginok(String mid,HttpServletRequest req) { HttpSession session = req.getSession(); session.setAttribute("mid", mid); //일반 쇼핑몰 기준 페이지 이동 없을 때 유지시간 30분 지정 //-> 해당 부분이 없으면 페이지 몇번 이동하다보면 계속 로그아웃 발생해서 에러 발생할 수 있음 session.setMaxInactiveInterval(1800); //1800초 : 30분 System.out.println(mid); return null;} @PostMapping("/loginok.do".. 2024. 7. 28.
☀ mybatis - mapper ☀ 👀 SELECT   select * from userpoint order by uidx desc select * from userpoint where uidx=#{aa} order by uidx desc select count(*) as ctn from rainfall where today=#{today} select * from notice n_subject like concat('%',#{search_word},'%') or n_text like concat('%',#{search_word},'%') n_subject like concat('%',#{search_w.. 2024. 7. 25.
#9-2 / notice list + category 검색기능( 동적 query문 ), delete 👀 start 시 파일 생성 👀  - notice table - daopackage api;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class notice_dao { int nidx; String n_title,n_pass,n_subject,n_text,n_date;}=> // config.xml 에 해당 dao 연결 추가   - controller@Controllerpublic class notice_controller { @Resource(name="notice") private notice_module nm;} - modulepackage api;import javax.annotation.Resource;import org... 2024. 7. 24.
별도의 config, mapper를 사용하는 방식 - dbconfig.xml 에  🔽mapper2.xml , config2.xml 새로 생성 2024. 7. 24.
#9-1 / ☔ - 통계차트 수정,삭제 페이지 /*--------------------- 수정 ----------------------*/ 1. mapper.xml  - list 출력시 만들어 놓은 일일데이터만 출력하는 mapper 재사용! select * from rainfall where today=#{today};  2. Module - list 출력시 만들어 놓은 일일데이터만 출력하는 모듈 재사용!public rainfall_dao ajax_today(String today) { rainfall_dao dao = tm.selectOne("datadb.rain_select_ajax",today); return dao;} 3. @Controller - @GetMapping("/rainfall/rainfall_modify.do")@.. 2024. 7. 24.
#8-3 / ☔ - 통계차트 출력 페이지(list) , ajax(SPA)+do 강우량 통계차트 출력페이지 (SPA) - ajax (jQuery) 로 핸들링 할거임 모든데이터의 날짜값을 가져와서 jsp의 select에 뿌려줌(최초 접속시 오늘 날짜를 back-end로 전송backend에서 해당 날짜를 이용해 데이터 추출 -> front로 session storage 세팅 )=> select 가 바뀔때마다 해당 함수 작동  /*--------------------- 일자별 리스트 값을 가져오는 part (select 에 날짜 뿌려주는 용도)-----------------------*/ 10. mapper.xml  해당 쿼리문 추가 - 모든 데이터의 날짜값만 가져오기 select today from rainfall order by ridx desc; 11.Controller//아래 통.. 2024. 7. 23.
#8-2 /☔ 통계 data 관련 project 만들기 - selectOne(ajax),insert [ 쓰기, 출력, 수정, 삭제 ] 다 만들거임 1. database table 생성 (서울, 경기도, 세종, 대전, 강원도)날짜가 unique key가 되어야함//강우량 tablecreate table rainfall(ridx int(8) not null auto_increment,today date not null default '0001-01-01',area_part1 char(3) not null, //int로 하면 강우량이 0일경우 안들어감area_part2 char(3) not null,area_part3 char(3) not null,area_part4 char(3) not null,area_part5 char(3) not null,primary key(ridx),unique key(today.. 2024. 7. 23.
#8-1 / point table => Module #7에서 만든 point table 가지고 놀거임 👀 [ 진짜 제작 순서 ]table 설계DAO 설계ControllerView ModuleController가 Module 호출 후 Databae return받음Controller가 View(JSP)로 Data 를 이관함=> 여기서 구조를 하나라도 어기면 안됨 ⚡ MVC 형태의 template을 이용한 리스트 출력 - selectList❗ template 은 close() ❌- Controllerpackage api;//~import 생략@Controllerpublic class adminmain3 { @Resource(name="pointmodule") //pointmodule 모듈 호출하는놈 private point_module pm; //윗줄(@.. 2024. 7. 23.
#7-3 / mybatis DB연결 - 포인트 (insert, select ,select one,delete) 1. userpoint table 생성 create table userpoint( uidx int(5) not null auto_increment, uid varchar(100) not null, uname char(100) not null, upoint int(5) not null, udate timestamp not null default current_timestamp(), primary key(uidx) ); 2. DAO 생성  - pointdao.java  package api;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class pointdao { int uidx,upoint; String uid,uname,udate;} 3.. 2024. 7. 22.
#7-2 / mybatis(ibatis)를 이용 DAO + config,mapper,xml DB연결 ⚡ insert 테스트dbcong.xml 의 하단 bean id="template" 여긴 아직 사용 x - 주석처리 한 뒤 테스트- /META-INf/config.xml //이름 맘대로 - /META-INf/mapper.xml //이름 맘대로 //이름 맘대로 insert into coupon (cidx,cpname,cprate,cpuse,cpdate,indate) values ('0',#{cpname},#{cprate},#{cpuse},#{cpdate},now()) - @Controller @Injectprivate SqlSessionFactory sqlfact;/*@Resource //어디선가 쓸거임 아직 x private SqlSessionTemplate sqlsession;*/@GetMa.. 2024. 7. 22.
#7-1 / Mybatis 설치 및 Setting 👀 [Mybatis]DB Connection ,spring DB의 DDL을 빠르게 처리해주는 대표 라이브러리- mybatis / mybatis-spring / javax.inject  3개 다운- Controller가 너무 무거워짐을 방지- Mybatis 사용시 Connection 사용하지 않음config.xmlJAVA의 DAO(getter,setter)  => 얘가 없으면 db연결조차 못함,모든 DAO가 여기 다들어감mapper.xml모든 DDL이 여기 다들어감 .. 등 => 이 두개에 다 몰아져있어 유지보수 용이 , 이 두개가 Controller의 보조역할을 한다...? DB  Module ( DAO or VO / Data DDL Module 을 포함 )DAO or VO : config.xml.. 2024. 7. 19.
🎫 spring note 👀 배우진 않지만..너무 많은게 있다.. 공부하시길..SPRINGAOP (  관점지향 프로그래밍(AOP) vs 객체지향 프로그래밍(OOP) )Batchinitializr..이런 것들이 있다 👀 게시판 제작시 주의모든 게시판의 리스트, 상세보기 => 무조건 GET으로 처리모든 게시판의 글쓰기 => 무조건 POST 👀 [Servlet과 Spring의 차이점 ] 👀Spring과 Servlet 모두 Class 사용하지만Servlet : Module은 class를 쓰지만 Controller는 servlet을 사용함parameter값 받는 방식 차이 (Get이든 Post든)- Spring : HttpServletRequest req or 인자값 or DAO 으로 받을 수 있음- Servlet : HttpSe.. 2024. 7. 19.
#6-9 / PathVariable(- API 서버 제작시 사용) PathVariableREST API URI에 변수값을 이용하여 해당 페이지를 로드하는 형태의 data출력 방식{ }를 이용하여 id값을 핸들링api 서버 제작시 가장 많이 사용하는 annotation - mapping에 있는 파라미터 이름을 로드하여 변수로 변환하는 역할/* api서버를 만들때 주로 사용하는 방식 */@GetMapping("/api/{id}")public String apiurl(@PathVariable String id) { System.out.println(id); return null;}~/api/100  접속시 =>  /api/100.jsp 를 찾음!!  API 서버? REST, RESTful, CDN  해당 모든 사항이 포함됨 ❓ API 서버REST ( get,pos.. 2024. 7. 15.
#6-8 / Ajax 동기화 및 비동기화 차이점 비동기를 많이씀⚡ 비동기,동기 차이- async_sync.jsp=>true : 비동기 /  false : 동기- shop_main2.java (Controller)/*-------Ajax 동기화 및 비동기화 차이점 페이지-------*/@PostMapping("/ajaxok.do")public String ajaxok(String mid,HttpServletResponse res) throws Exception{ PrintWriter pw = res.getWriter(); System.out.println(mid); Thread.sleep(5000); //응답 대기시간을 설정할 수 있음 pw.write("ok"); pw.close(); return null; //Print.. 2024. 7. 15.
#6-7 / JSTL - SPA 검색 기능 사용법 ⚡ 반복문 + 조건문 , 전역변수로 값 체크" /> 검색어 : [ ${search} ] 검색결과 "> ${ck} --> "> ${dt} ${dt} 해당 메뉴는 없는 데이터입니다. 2024. 7. 15.
#6-6 / JSTL - Split을 이용하여 출력하기 " /> ${user_arr}=> 문자열을 fn:split을 이용하여 원시배열로 변환 후 -> 해당 값을 forEach를 이용하여 출력 2024. 7. 15.
#6-5 / JSTL - 외부페이지 로드 ⚡ : import import를 이용하여 외부의 jsp파일을 로드할 수 있음.단, 해당 page에 set태그를 이용하여 공유하는 데이터 방식은 작동불능=> 페이지 로드는 되나 데이터 공유는 불가능⭐❗ ❗ ❗ but ❗ ❗ ❗ ⭐ Controller에서 Model,ModelandView를 활용하면 외부 import된 jsl에서 jstl로 결과값 출력 가능- jstl_6.jsp- test.jspjstl_6.jsp ${member}- main.java (Controller)@GetMapping("/jstl_6.do")public String jstl_6(Model m) { m.addAttribute("member", "강감찬"); return null;}=> jstl_6.do 접속시 - 이렇게 .. 2024. 7. 15.
#6-4 / JSTL - database 연결 ⚡ 타이틀 --!> select * from ${table} ${order} 쿠폰명 할인율 사용가능 여부 사용기한 제작일 5}"> ${fn:substring(row['cpname'],0,10)}${jum} ${row['cprate']}% ${row['cpuse']} ${row['cpdate']} ${fn:substring(row['indate'],0,10)} 2024. 7. 15.
#6-3 / JSTL 문법3 - 반복문,varStatus while문 , forEach문 有 => forEach만 거의 사용! JSTL 에 반복문 처리 => 배열형태로 출력(원시배열,클래스배열)JSTL에서는 클래스배열 사용 권고 (ArrayList,LinkedList,Map) ⚡ forEach- 원시배열attribute 사용하지 않을시 jsp문법 으로 사용!item 속성 모든 배열 값을 처리할 때 사용하는 속성값배열에만 사용!begin, end (사용해도되고 안해도됨)begin : 시작값end : 종료값 "> ${dt} " begin="1" end="3"> ${dt2} ${dt3} "> ${dt5} ⚡ forEach - Class 배열 al = new ArrayList();.. 2024. 7. 15.
#6-2 / JSTL 문법2 - 조건문 ⚡ if문-  if문 선언시 test에 조건식을 사용 - else는 사용 x - var : true,false 로 결과 출력...해당 숫자는 100이하의 숫자입니다 100}">해당 숫자는 100이상의 숫자입니다해당 숫자는 100입니다 ⭐ ⭐ ⭐ ⚡ choose문을 활용한 when 조건식- 해당 방식 쿼리문 조건식에 사용 多-  == 대신 eq로 비교 가능(같은 경우)  /  != 대신 ne로 비교 가능(같지 않을 경우)- choose 안에는 html 주석을 사용하지 못함... 약관 동의 약관 비동의 약관 동의없이 페이지 이동 해당 값은 인식하지 못하였습니다 //약관 동의없이 페이지 이동 출력 2024. 7. 15.
#6-1 / JSTL 문법 - 1 👀 JSTLJSTL은 단독으로 사용하는 경우는 없음 => do에서 호출받아서 사용 多 (Model, ModelandView)반복문 외에는 태그와 태그 사이에 값을 넣지 X - or 방식으로 사용반복문은    - 자주 사용하는 JSTL 엔진 ⚡  out - 값출력 / out.print와 같은 형태의 출력 태그 => 받아서 처리 X , 걍 value값을 단순 출력만 하는 기능 (잘사용x) //우왕 출력⚡  set - setAttribute와 동일현 한텨로 태그 값을 받아서 변수로 처리- jsp에 있는 값을 JSTL로 변환시 무조건 set태그 사용! //에이핑크 출력${a}"/> //에이핑크 출력${b} ⚡  scope="session"  - session을 활성화시 session 생성 또는 로드도 활용.. 2024. 7. 15.
#5-4 / [ legacy ] 로그인 내가 해봉거 table 만듬 create table member(midx int(7) not null auto_increment,mid varchar(100) not null,mpass varchar(100) not null,mtss enum('SKT','KT','LGT','알뜰폰') not null default 'SKT',mphone char(11) not null,joindate timestamp not null default current_timestamp,primary key(midx),unique id(mid)); 2024. 7. 12.
#5-3 / spring - legacy setting legacy project 생성encoding 변경 등 window - preferences settingD:\legacy\.metadata\.plugins\org.springsource.ide.eclipse.commons.content.core에 html 넣고D:\legacy\.metadata\.plugins\ 에 폴더 넣기 (하단에 zip파일 첨부해놓음 - 실제 사이트에서 다운받아도 됩니다)javaIDE/STS.ini 의 javaw.exe를 D:\Java\jdk-11\bin => 요 경로로 변경 및 version 변경- spring lecacy 는 java17번 이하에서만 가능하기때문! 우클릭 - spring legacy project - spring MVC project=> next => kr.co.. 2024. 7. 12.
#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.