본문 바로가기

개발209

Node.js ) 파라미터 넘기고 null 처리(isNaN) Node.js 파라미터 넘기고 NULL 처리하기 기본 json 타입으로 반환 :(콜론)변수명 으로 받아 사용 서버에서 request.param으로 받아 사용 가능 :(콜론)변수명 코드 설명 숫자를 입력했을 경우 해당 인덱스에 해당하는 값 반환 인덱스 범위를 넘어가는 숫자 입력 시 '존재하지 않는 데이터' 라는 문자 반환 스트링 타입 입력 시 '숫자를 입력하세요'라는 문자 반환 app.get("/products/:id", function(req, res){ var id = Number(req.param("id")); if(isNaN(id)){ res.send({error:"숫자를 입력하세요"}) }else if(items[id]){ res.send(items[id]) }else{ res.send({erro.. 2022. 7. 27.
Node.js) JSON /XML/ HTML로 반환하기 JSON, XML, HTML 로 반환하기 Items 배열의 값을 'JSON, XML, HTML' 타입으로 반환하는 예시 var items =[ {name:"우유", price:200}, {name:"홍차", price:700}, {name:"커피", price:300}, ] 1. JSON 타입 var http = require('http') var express = require('express') var app = express() app.use(express.static('public')) app.use(app.router) //json 타입 app.all("/data.json", function(req, res){ res.send(items) }) http.createServer(app).liste.. 2022. 7. 26.
(JPA) 복합 키 설정하기 (JPA) 복합 키 설정하기 @Embeddable 어노테이션이 붙어있는 클래스를 생성하고 해당 클래스 안에 복합키 속성들을 넣어주면 됨 해당 클래스는 Seriallize를 구현 해야함 @EmbeddedId public class 복합키클래스명 implements Serializable { private 복합키클래스 속성명1; private 복합키클래스 속성명2; } 선언 @Embeddable public class 복합키클래스명 implements Serializable { @Column(name="키1") private String 키1; @Column(name="키2") private String 키2; } VO @EmbeddedId private 복합키클래스명(타입으로사용) id; 2022. 6. 30.
타임리프(Thymeleaf) 타임리프(Thymeleaf) 타임리프에서는 쿼리스트링이 아닌 URI 방식으로 파라미터를 전달하도록 권장 jsp의 포지션을 담당할 것임 URL 방식으로 파라미터 넘기기 @{'서비스명'/+${넘길 파라미터 값} }" 타임리프 사용을 위한 세팅 Thymeleaf 문법 설명 타임리프에서 상태 유지 값은 '태그 안에 속성'으로 들어감 JSP 와 마찬가지로 ${} 표현식 을 사용한다 xmlns:th 타임리프의 th속성을 사용하기 위해 선언된 네임스페이스 th:text span태그의 경우 text에 값이 들어간다 th:text="${상태 유지된 변수}" th:value 보내줘야 할 값 th:each JSTL의 foreach와 비슷한 기능 th:each="변수명:${상태 유지된 list변수}" th:name input.. 2022. 6. 29.
(JPA) 사용자 정의 sql (@Query) JPA 사용자 정의 sql @Query 어노테이션을 이용하여 정의 테이블 명은 Entity 클래스 이름과 일치시켜야함 select 문 주의할 점은 테이블 명으로 Entity가 될 클래스 명을 그대로 써줘야함. 예를들어) OrderVO라는 이름을 같은 클래스를 Entity로 만들 때 OrderVO를 그대로 사용 (select * from OrderVO) @Query("쿼리문") public 타입 '쿼리문을 실행 할 함수명()'; @Query("select nvl(max(orderid),0) +1 from Orders") public int getNextNo(); insert, delete, update 문 select 문과 다르게 table 명 입력 시 실제 클래스 명이 아닌 실제 @Modifying @Q.. 2022. 6. 28.
JPA 관계 맵핑 JPA 관계 맵핑 @OneToMany (1:N) @ManyToOne (N:1) OneToMany @OneToMany(mappedBy="book", fetch=FetchType.eager) private List orders; -> book 테이블 입장에서 book 테이블과 orders 테이블은 1:N 관계라는 의미 ManyToOne @JoinColumn(name = "조인 할 컬럼", insertable =true ,updatable = true) private Book book; -> Orders 입장에서 orders 테이블과 와 book 테이블은 은 N:1 관계라는 의미 2022. 6. 27.
(자바스크립트) 카카오 맵 연동하기 카카오 디벨로퍼 (지도 API 이용해보기) 1. 카카오 디벨로퍼 홈페이지로 가서 개발자 등록 https://developers.kakao.com/ 2. 애플리케이션 추가하기 3. 키 값 반환 됨 4. 플랫폼 설정 (Web) 5. 카카오맵 API 사용 https://apis.map.kakao.com/ 더보기 카카오 맵 연동 JavaScript 페이징 처리 완료 해당 테이블 tr클릭 시 Marker 생성 캠핑장명 주소 위도 경도 2022. 6. 27.
(Spring) DI 개념 DI 개념 (객체에 대한 이야기) DI는 객체에 대한 이야기 자바로 만들어진 소프트웨어는 수많은 클래스로 구성되고, 클래스와 클래스는 서로 관계에있음 has a or is a 관계이다. 두 클래스의 관계가 '클래스 vs 클래스'이면서 new에 의해 객체를 생성하는 건 '강한 의존관계에 있다' 라고 표현 '강한 의존관계'를 '약간 의존관계'로 만드는게 DI의 개념이다.(의존관계에 대한 객체 주입을 Spring이 알아서 해줌) 어떤식으로 Spring이 해주냐면 New로 객체를 생성하는 것이 아닌 별도의 환경설정 파일에서 객체를 제공해준다 스프링 초기에는 XML로 환경설정을 하였지만 XML이 너무 비대해져서 그래서 어노테이션 기반으로 객체를 생성하는 개념이 나왔으나 이것 또한 불편해서 자동으로 의존관계 설정하.. 2022. 6. 26.
Spring Data JPA Spring Data JPA mybatis 대신 JPA를 사용 JPA에서 VO는 Entity라고 표현 Spring Data JPA 기본 구성 요소 1. Project 생성 시 Spring Data JPA 선택하여 생성 2. JPA에서 필요한 디펜던시 설정 (pom.xml) com.zaxxer HikariCP 3. application.properties mybatis설정과 동일한데 jps관련 설정이 들어감 주의할 설정 (spring.jpa.hibernate.ddl-auto = '옵션 입력') create - 해당 속성에 의해 VO에 해당하는 Table이 자동으로 DB에 생성 됨 - 해당 테이블이 있으면 DROP하고 새로 생성 create-drop - create와 동일하지만 종료 시점에 DROP이 됨 u.. 2022. 6. 26.
(JPA) 59일차 JPA 관계 맵핑 @OneToMany (1:N) @ManyToOne (N:1) OneToMany @OneToMany(mappedBy="book", fetch=FetchType.eager) private List orders; -> book 테이블 입장에서 book 테이블과 orders 테이블은 1:N 관계라는 의미 ManyToOne @JoinColumn(name = "조인 할 컬럼", insertable =true ,updatable = true) private Book book; -> Orders 입장에서 orders 테이블과 와 book 테이블은 은 N:1 관계라는 의미 JPA 사용자 정의 sql @Query 어노테이션을 이용하여 정의 테이블 명은 Entity 클래스 이름과 일치시켜야함 주의할 점은 .. 2022. 6. 24.
(Thymeleaf/JPA) 58일차 타임리프(Thymeleaf) 타임리프에서는 쿼리스트링이 아닌 URI 방식으로 파라미터를 전달하도록 권장 jsp의 포지션을 담당할 것임 URL 방식으로 파라미터 넘기기 @{'서비스명'/+${넘길 파라미터 값} }" 타임리프 사용을 위한 세팅 Thymeleaf 문법 설명 타임리프에서 상태 유지 값은 '태그 안에 속성'으로 들어감 JSP 와 마찬가지로 ${} 표현식 을 사용한다 xmlns:th 타임리프의 th속성을 사용하기 위해 선언된 네임스페이스 th:text span태그의 경우 text에 값이 들어간다 th:text="${상태 유지된 변수}" th:value 보내줘야 할 값 th:each JSTL의 foreach와 비슷한 기능 th:each="변수명:${상태 유지된 list변수}" th:name input.. 2022. 6. 23.
(Spring) AOP (Aspect Oriented Programming) Spring에서 AOP (Aspect Oriented Programming) 여러 곳에서 사용되는 Method를 한 곳에서 Spring이 유지보수 가능하도록 도와줌 AOP는 메소드에 대한 이야기 (공통 관심사항'과 '핵심 관심사항'의 Bind를 스프링이 해줌) 공통 관심사항, 핵심 관심사항 개념을 알아야함 - 공통 관심사항(cross-cutting concern) - 공통으로 처리되는 사항 (포괄적 개념) - 핵심 관심사항(core concern) - 핵심으로 처리되는 사항 대표적인 사용 용도 1. 패키지 내 메소드 Logging 2. 패키지 내 메소드 로직 수행 시간 확인 주요 용어 설명 Aspect - 여러 곳에서 사용되는 '공통 관심 사항' 들을(cross-cutting concern) 모듈화 - .. 2022. 6. 23.
(Spring) 57일차 스프링 시큐리티 로그인 과정 1. 로그인 페이지 요청 ( login.jsp ) 1.1. WebSecurityConfigurerAdapter를 구현한 configure() 함수 호출 하여 권한 별 페이지 출력 2. id/password 입력 후 로그인 버튼 클릭하여 해당 정보를 갖는 서비스를 찾음 3. post 방식은 스프링 시큐리티가 알아서 해줌 3.1 스프링 시큐리티는 UserDetailsService를 구현한 loadUserByUsername() 함수를 호출하여 알아서 값 비교하여 알아서 로그인을 해줌(스프링 시큐리티 마법....) 더보기 login 페이지 로그인 아이디 : 비밀번호 : SecurityConfig configure() 함수 @Configuration @EnableWebSecurity .. 2022. 6. 22.
오라클 클라우드 <-> 스프링 연동 방법 (maven 이용) 오라클 클라우드 스프링 연동 방법 (maven 이용) 1. 전자지갑 다운로드 (wallet) 전자 지갑을 다운로드 한다 (사전에 오라클 클라우드 데이터베이스는 생성 하였다는 가정) 2. pom.xml 의존성 추가 - ojdbc8 - oraclepki - osdt_cert - osdt_core com.oracle.database.jdbc ojdbc8 21.5.0.0 com.oracle.database.security oraclepki 21.5.0.0 com.oracle.database.security osdt_cert 21.5.0.0 com.oracle.database.security osdt_core 21.5.0.0 3. application.properties / db.properties - Walle.. 2022. 6. 22.
Oracle SQL Developer 설치 및 다운로드 Oracle SQL Developer 설치 및 다운로드 1. 다운로드 https://www.oracle.com/tools/downloads/sqldev-downloads.html 2. 새로 만들기 3. 사용자 이름 및 비밀번호 입력 4. 접속 유형 오라클 클라우드의 경우 '전자 지갑'을 선택 후 해당 zip 파일 업로드 해야함 일반의 경우 '기본' 선택 후 해당하는 내용 입력해주기 오라클 클라우드 관련 설명 참고 블로그 https://velog.io/@geesuee/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%B1%97%EB%B4%87-4.-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-DB-%EC%97%B0%EB%8F%99-ymdnv4d8 2022. 6. 21.
반응형