Backend
URL, IP, PORT 란?
url과 ip는 개발에 대해 하나도 몰랐을 때부터 종종 썼었다. 친구에게 url을 보내달라고하거나 인터넷을 하다보면 ip(길고 긴 숫자) 처럼 그렇게 낯선 단어들은 아니었다. 하지만 어떤건지 의미에 대해 자세하게 알아본적은 없어서 이번에 정리해보았다. ✍URL : 다른 파트들과, 몇몇의 의무와 선택사항들로 구성되어있는 웹 페이지를 찾기 위한 주소 https://www.sample.com:80/ http : 서버와 클라이언트가 인터넷 상에서 데이터를 주고받기 위한 프로토콜(protocol) 프로토콜은 컴퓨터 네트워크에서 데이터를 교환하거나 전송하기 위한 방법들로 보통 HTTP 프로토콜이나 HTTP 프로토콜의 보안 버전 HTTPS이다. 서버/클라이언트 모델로 클라이언트는 요청을, 서버는 응답을 해주는 구조이..
[백준 :: Java] If문 2884_알람 시계
문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로..
Git에서 프로젝트 받기 : Project from Git(with smart import)
안녕하세요. 소스트리에서 클론한 프로젝트를 스프링에서 연결하는 법을 정리해봤습니다. GitHub에 먼저 프로젝트를 올리고 소스트리에서 클론해서 폴더를 생성한 후 진행했습니다. 1. File ➡ Import ➡ Git ➡ Project from Git(with smart import) 2. Existing local repository 선택 ➡ next ➡ Add 3. Browse ➡ 소스트리에서 clone한 폴더 선택 ➡ Search Results 체크 ➡ Add 4. Next 후 Finish하면 끝! 프로젝트 연결 후 해야할 것 1. 메이븐 프로젝트 업데이트 2. Project Facets - Runtimes 설정 1. 메이븐 프로젝트 업데이트 프로젝트 우클릭 ➡ Maven ➡ Update Projec..
MavenRepository
MavenRepository란? 개발에 필요한 라이브러리를 개발자다 직접 다운받아 사용하는게 기존 방식이었다면 메이븐레파지토리는 pom.xml에 작성하여 라이브러리를 쉽게 사용할 수 있다. 저장소는 일종의 라이브러리 보관 장소(=프로그램 보관 장소)이다. https://mvnrepository.com/ 메이븐에서 추가적으로 받을 수 있는 사이트
[Spring] 댓글 삽입
reply.js // 댓글 등록 function addReply() { // 게시글 번호(boardNo), 로그인한 회원 번호(loginMemberNo), 댓글 내용 if(loginMemberNo == ""){ // 로그인이 되어 있지 않은 경우 alert("로그인 후 이용해 주세요."); }else{ // 로그인한 경우 // 댓글 미작성한 경우 if( $("#replyContent").val().trim().length == 0 ){ alert("댓글을 작성한 후 버튼을 클릭해주세요."); $("#replyContent").focus(); }else{ // 댓글을 작성한 경우 $.ajax({ url : contextPath + "/reply/insert", data : {"memberNo" : logi..
[Spring] 댓글 목록 조회
댓글 조회 샘플데이터 넣은 글에 넣은 샘플 데이터 조회하기! 비동기 - 동시에 일을처리 동기 - 순차적 처리 contextPath : /fin // JSON: JS 객체 형태의 문자열( 모든 프로그램에서 사용 가능) // 응답 데이터 형식이 JSON 형식임을 알려주어 자동으로 JS객체로 변환시켜준다 -> 반환된 값이 Object로 반환된다. ReplyController @RestController // 요청 시 값만 반환되는 컨트롤러 @Controller + @ResponseBody @RequestMapping("/reply/*") public class ReplyController { @Autowired private ReplyService service; // 댓글 목록 조회 @RequestMappi..
[Spring] 댓글 테이블, 클래스 구조 생성
댓글 & 대댓글 기본 구조 댓글 순서는 sns는 최신순, 커뮤니티는 오래된순으로 정렬되어있는 모습을 볼 수 있다 계층형 구조를 만드는게 어려운데 SQL 만드는게 상당히 어려운데 다행히 Oracle DBMS는 계층형 구조를 만드는 방법을 제공하고있다. 1. 댓글 테이블 생성 -- 댓글 테이블 CREATE TABLE "REPLY" ( "REPLY_NO" NUMBER PRIMARY KEY, "REPLY_CONTENT" VARCHAR2(1000) NOT NULL, "REPLY_CREATE_DT" DATE DEFAULT SYSDATE NOT NULL, "BOARD_NO" NUMBER REFERENCES BOARD, "MEMBER_NO" NUMBER REFERENCES MEMBER, "STATUS_CD" NUMBE..
[SQL] 계층형 쿼리
계층형 쿼리(START WITH, CONNECT BY, ORDER SIBLINGS BY) : 상위 타입과 하위 타입간의 관계를 계층식으로 표현할 수 있게 하는 질의어(SELECT) 👉START WITH : 상위 타입(부모)로 사용될 행을 지정 (서브쿼리 O) START WITH PARENT_REPLY_NO IS NULL PARENT_REPLY_NO만 봐도 부모인지 자식인지 알 수 있다 -> NULL로 구분 👉CONNECT BY : 상위 타입과 하위 타입간의 관계를 규정 PRIOR 연산자와 같이 사용하여 현재 행 이전에 상위타입이 있을지, 하위 타입이 있을지를 지정한다 ( PRIOR 연산자 : 어떤 행 이전에 와야하는것을 규정한다) SELECT * FROM REPLY START WITH PARENT_REP..
[Spring] 게시판 글 삭제
boardView.jsp 삭제 수정 - 삭제 버튼 클릭시 실행 될 함수 지정 board.js // 삭제 버튼 클릭 시 동작 function deleteBoard(){ if(confirm("정말 삭제하시겠습니까?")){ document.requestForm.action = "../delete"; document.requestForm.method = "POST"; document.requestForm.submit(); } } - 스크립트로하면 직접적인 주소 노출을 막을 수 있다 그리고 파라미터를 막을 수 있다 ex) /board/view/500 -> /board/delete BoardController 삭제는 delete 구문이 아닌 STATUS_CD 4로 update 진행 @RequestMapping(va..
[Spring] 게시글 글 수정
수정화면 전환 BoardController // 게시글 수정 화면 전환 @RequestMapping(value = "updateForm", method = RequestMethod.POST) public String updateForm(int boardNo, Model model ) { // 1. 카테고리 목록 조회 List category = service.selectCategory(); // 앞서 사용한 서비스를 재요청 // 2. 게시글 상세 조회 Board board = service.selectBoard(boardNo); model.addAttribute("category", category); model.addAttribute("board", board); return "board/boardUp..