일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 컬렉션 타입
- 다형성
- 집합_SET
- 생성자오버로드
- abstract
- oracle
- NestedFor
- 메소드오버로딩
- 컬렉션프레임워크
- 추상메서드
- 대덕인재개발원
- 예외처리
- GRANT VIEW
- 인터페이스
- 자동차수리시스템
- 제네릭
- 정수형타입
- 오라클
- 사용자예외클래스생성
- 객체 비교
- Java
- 환경설정
- 한국건설관리시스템
- 예외미루기
- 자바
- 어윈 사용법
- 참조형변수
- EnhancedFor
- exception
- cursor문
- Today
- Total
목록2023/12 (83)
거니의 velog
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/5827F/btsB7TizO7r/9I4eK61UPirt5I0T4Hx1w0/img.png)
(6) redux-saga 코드 준비하기 * 이번에는 redux-saga를 사용하는 경우 서버 사이드 렌더링을 어떻게 해야 하는지 알아보자. * yarn으로 redux-saga를 설치하자. $ yarn add redux-saga * users 리덕스 모듈에서 redux-saga를 사용하여 특정 사용자의 정보를 가져오는 작업을 관리해 보자. [modules/users.js] import axios from "axios"; import { call, put, takeEvery } from "redux-saga/effects"; const GET_USERS_PENDING = "users/GET_USERS_PENDING"; const GET_USERS_SUCCESS = "users/GET_USERS_SUCCES..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/C2By6/btsB2vRmSmO/MljMk6XsQn0TfvFuO5rVk1/img.png)
4. 데이터 로딩 * 데이터 로딩은 서버 사이드 렌더링을 구현할 때 해결하기가 매우 까다로운 문제 중 하나이다. 데이터 로딩을 한다는 것은 API 요청을 의미한다. 예를 들어 페이지에서 필요로 하는 데이터가 있다면 API를 요청해서 응답을 받아 와야 한다. 일반적인 브라우저 환경에서는 API를 요청하고 응답을 받아 와서 리액트 state 혹은 리덕스 스토어에 넣으면 자동으로 리렌더링하니까 큰 걱정은 없다. 하지만 서버의 경우 문자열 형태로 렌더링하는 것이므로 state나 리덕스 스토어의 상태가 바뀐다고 해서 자동으로 리렌더링되지 않는다. 그 대신 우리가 renderToString 함수를 한 번 더 호출해 주어야 한다. 게다가 서버에서는 componentDidMount 같은 라이프사이클 API도 사용할 수..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kGglA/btsB5CIPuLP/gmSsjlSPs7zoW17FKm0Ul1/img.png)
package kr.or.ddit.controller.board; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUti..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eg07bJ/btsB5zFmyH3/kDb1wezzyjqHov3Qnla8NK/img.png)
${board.boTitle } ${board.boDate } / ${board.boHit } ${board.boWriter } 내용 ${board.boContent } ${boardFile.fileName } (${boardFile.fileFancysize }) download 삭제 수정 목록 package kr.or.ddit.controller.board; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/VTtjE/btsB5yNdr1W/PpwXRLK9eQcicaHn9aD0HK/img.png)
and (bo_title like '%' || #{searchWord} || '%') and (bo_writer like '%' || #{searchWord} || '%') and (bo_title like '%' || #{searchWord} || '%') and (bo_writer like '%' || #{searchWord} || '%') select count(bo_no) from board where 1=1 select b.* from ( select a.*, row_number() over (order by a.bo_no desc) rnum from ( select bo_no, bo_title, bo_content, bo_writer, bo_date, bo_hit from board where..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2ttrW/btsB7nYtCz0/kVRqNK1aSXywCEY7A85EN0/img.png)
파일명을 입력하세요! delete 등록 취소 목록 package kr.or.ddit.controller.board; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.spring..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bgtg4R/btsB8UnVl4z/MdYalhXlLBOYooP7HLTnH1/img.png)
package kr.or.ddit.controller.board; import java.util.List; import javax.inject.Inject; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.Reques..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ySqbT/btsB5zk3CEr/YGMm2YoqU8Anl20rsQadK0/img.png)
package kr.or.ddit.controller.board; import java.util.List; import javax.inject.Inject; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.Reques..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cI4qwV/btsB82sEYc3/1xJTkk05gZJsd1Gb4ncka1/img.png)
로그인 ${errors.memId } ${errors.memPw } 로그인 아직 회원이 아닌가요? 회원가입 package kr.or.ddit.controller.conn; import java.util.HashMap; import java.util.Map; import javax.inject.Inject; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/OurON/btsB1EHpvZ5/1b6qrD8vB2KAUycoE1okE1/img.png)
회원가입 회원등록 후, 저희 서비스와 함께해요! 개인정보 동의 가입하기 우리 서비스 회원이세요? 로그인 package kr.or.ddit.controller.conn; import java.util.Map; import javax.inject.Inject; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.Reque..