목록Spring (42)
코딩 노트
payment-mapper.xml 구문 추가 DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> select payment_seq.nextval from dual insert into payment( payment_no, payment_member, payment_tid, payment_name, payment_price, payment_remain ) values( #{paymentNo}, #{paymentMember}, #{paymentTid}, #{paymentName}, #{paymentPrice}, #{paymentRemain} ) insert into pa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qMGaP/btszbgojnmu/qAeuRLgCAkTufs8w1iHAN0/img.png)
구매하기를 누르면 form을 만들어서 체크된 상품번호와 그 번호의 수량을 찾아서 넘어가게 만들 것이다. pay3 폴더 생성 후 home.jsp 생성 가장 일반적인 결제 [${productDto.productNo}] ${productDto.productName} (${productDto.productPrice}원) 구매하기 $(function(){ //버튼을 누르면 폼을 만들어서 체크된 항목의 "상품번호"와 "구매수랑"을 입력창으로 만들어 추가 $(".purchase-btn").click(function(){ var form = $("").attr("action", "test3/purchase").attr("method","post"); var count = 0; $(".product-item").each..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xTZR3/btsy6gvg1I7/OSL5IWAKYMKhCvcIztNSwK/img.png)
KakaoPayServiceImpl 수정 @Override public KakaoPayApproveResponseVO approve(KakaoPayApproveRequestVO request) throws URISyntaxException { URI uri = new URI("https://kapi.kakao.com/v1/payment/approve"); //body 부분 (5개 중 4개는 request에 들어있다) MultiValueMap body = new LinkedMultiValueMap(); body.add("cid", kakaoPayProperties.getCid()); body.add("tid",request.getTid()); //거래번호 body.add("partner_order_id",..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zQvjA/btsy38ciBKq/GrRQDCgKzIuz6F05KnaZI0/img.png)
WebSocket은 꼭 채팅만이 아닌 알림이나 다른 경우에도 사용할 수 있다. 결제 spring21pay 프로젝트 생성 후 pom.xml(jsp 의존성)과 properties(이전 패키지에서 설정 가져오기) 수정 https://developers.kakao.com/docs/latest/ko/kakaopay/single-payment test 프로젝트에 Test01Ready 파일 생성 @Slf4j @SpringBootTest public class Test01Ready { @Test public void test() throws URISyntaxException { //웹서버에서 PG사(제 3의 서버)로 요청을 보내기 위해선 다음 둘 중 하나가 필요 //- [1] RestTemplate를 이용해서 처리 /..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lyjqI/btsyT3DDABD/B4U6vZ3aneWjWQpBnmF1j1/img.png)
전체 메세지일 경우 hello 보낼 때도 JSON처리 (json의 기본 규칙: 이름이 있어야 한다.) {"content":"hello"} DM일 경우 /w target hello DM일 때도 JSOM으로 처리 {"target":"대상의ID", "content":"hello"} sockjs.jsp 구문 수정 doctype html> Bootstrap demo .btn-userlist { display: none; } .message-list { height: 65vh; overflow-y: scroll; padding-bottom: 15px; } ::-webkit-scrollbar { width: 1px; /* 스크롤바 너비 */ background-color: black } ::-webkit-scroll..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/H4S7Z/btsyTs4m1ES/pnLMJeX1vFULWrNZa7cAck/img.png)
http가 없으면 websocket가 있을 수 없다. http 주소와 websocket 둘이 기반이 다르면(주소가 다르면) 안 된다. 지금의 문제점 1. 주소가 꼭 ws로 시작해야되나? 어차피 http 기반이면 주소도 안 겹치게 만들어놨는데 그냥 대충 http로 시작하게 알아서 접속해줬으면... 2. 구버전 브라우저에서 웹소켓이 안 되는데... 그러면 아쉬운대로 Pulling 방식으로라도 흉내낸다면 사용자는 좀 더 좋아하지 않을까? 3. 갑자기 종료되는 사용자 중에 체크가 안 되는 것들이 있다. (Dead connection) 주기적으로 사용자가 접속해있는지 체크하도록 처리하고 싶다. (라이브 핑을 보낸다/대화 목적이 아님 확인 목적) -- 이 세가지를 해결해주는 기술이 SockJS이다. 윈도우에 만드는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1wFoq/btsyQLgS7tV/4rAcuVWE1fOnqMdEvlupK0/img.png)
spring2 websocket 패키지 생성 WebSocket 통신의 발전 1. 비동기 통신 2. pullung 방식 3. long-pulling 방식 4. websocket 방식 - 기본 Websocket - SockJS(Spring가 체택한 기술) / Socket IO(NodeJS가 체택한 기술) - STOMP(위 두 개와 아예 다름)(난이도 있음) 2, 3번의 방식은 비동기 통신이다. websocket 패키지 생성 DefaultWebSocketServer 클래스 생성 /* 스프링에서 웹소켓 연결을 처리하는 도구(서버) - 상속을 통해 클래스를 구현 (WebSocketHandler / TextWebSocketHandler / BinaryWebSocketHandler) 텍스트는 글자, 바이너리는 파일이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dVyOPo/btsyET8vg6Z/RzPiDUa1KsKwvFK7ndoUnK/img.png)
HTTP 쿠키(Cookie)란? - 클라이언트에 저장되는 key=value 데이터 저장소 - 보안과 별 상관없는 홈페이지의 정보를 저장하는 목적으로 사용 - 한글은 저장 불가하며, 오직 문자열만 저장 가능 - 크기 제한이 존재(256 byte) spring19cookie 프로젝트 생성 후 properties 설정 # project setting file # key=value #sever setting #server.servlet.context-path=/khacademy ##server.port=9999 #view resolver setting spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp # database setting spri..