반응형

All 98

Web Server 와 WAS의 차이

Web Server 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공 HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당 동적인 컨텐츠 제공을 위한 요청 전달 클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답, Response) (클라이언트는 일반적으로 웹 브라우저를 의미) WAS DB조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어짐. WAS = Web Server + Web Container Web Server 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시되었다. 분산 트랜잭션, 보안, 메시징, 쓰레드 ..

Etc/Etc 2020.04.09

FileReader, BufferedReader를 이용한 파일 읽기

try{ // 파일경로 String envPath = this.env.getProperty("app.excel.backupFileDir")+uuid; // file 객체 생성 File file = new File(envPath+"/"+fileName+".txt"); // file reader FileReader filereader = new FileReader(file); // buffered reader BufferedReader bufReader = new BufferedReader(filereader); // json parser 객체 생성 (String타입을 Json타입으로 파싱) JSONParser parser = new JSONParser(); String line = ""; // text파일..

카테고리 없음 2020.04.01

Mybatis 대용량 insert, update (ExecutorType.BATCH)

대용량 데이터 insert, update 진행 시 ExecutorType.BATCH옵션을 사용하면 업로드 시간을 좀 더 단축 시킬 수 있다. // DI SqlSessionFactory 주입 @Autowired private SqlSessionFactory sqlSessionFactory; ---생략--- public boolean dataUpload(VoTestInfo voTestInfo){ boolean result = true; try { SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); try { sqlSession.insert("xmlNamespace.queryId", voTestInfo); } catch(IOEx..

Back/Mybatis 2020.03.17

computed vs watch

computed 보통 value에 대한 validation. Hello Hello data의 isError값에 따라 태그에 warning클래스 여부가 변경됨. Hello isError값이 true일 경우 warning 표시. watch computed보다 상대적으로 무거운 로직. Vue 인스턴스의 특정 프로퍼티가 변경될때 지정한 콜백함수가 실행. {{ num }} 위의 예제를 보면 num라는 프로퍼티가 변경될때 마다 fetchUserByNumber라는 method가 실행 되는걸 확인 할 수 있음. 특정 프로퍼티의 변경시점에 특정 액션(call api, push route …)을 취하고자 할때 적합해보임. * 만약 computed로 구현가능한 것이라면 watch가 아니라 computed로 구현하는것이 보통..

Front/Vue 2020.03.11

Spring + Vue.js 세팅(2)

앞에서 작업한 내용은 Spring따로 Vue.js(Node.js) 따로 구성하였다. 이런 구조를 뷰로작성한 코드들에 대해서 build를 통해 번들링된 코드들을 지정한 경로에 저장하여 실제로는 Spring프로젝트의 Web Server만으로 화면 기동을 시키려 한다. 우선, 프로젝트 디렉토리 구조와 추가 작성내용을 살펴보면 src경로 하위에 frontend라는 vue프로젝트가 위치해있고 frontend/config/index.js 파일 build부분의 경로를 위의 화면 내용처럼 수정한다. frontend프로젝트 경로로 접근하여 해당 프로젝트를 build한다. npm run build build가 정상적으로 끝나면 아래의 보여지는 내용처럼 해당 경로에 번들링 된 파일들이 생성된다. 추가로 html파일경로와 r..

Front/Vue 2020.03.09

Node.js(Socket.io) + Vue.js 채팅 예제

우선 Socket.io는 JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도 록 한 기술이다. 또, Socket.io는 WebSocket, FlashSocket, AJAX Long Polling, AJAX Multi part Streaming, IFrame, JSONP Polling을 하나의 API로 추상화한 것이다. (즉 브라우저와 웹 서버의 종류와 버전을 파악하여 가장 적합한 기술을 선택하여 사용하는 방식) 다시 말해 socket.io를 통해 개발을 하면 websocket이 지원이 되지 않는 브라우저에서도 메시지 를 양방향으로 주고 받을 수 있다. 구조는 node.js 기반의 frontend(Vue.js) - client, backend - server 로 나눠서 간다..

Back/Node 2020.03.06

No 'Access-Control-Allow-Origin' header is present on the requested resource. (CORS policy)

frontend(Vue.js), backend(Spring boot-Java)로 나눠진 환경에서 frontend쪽에서는 backend환경 에 rest api 형태로 값을 주고 받는 환경에서 아래와 같은 에러가 발생. 현재 다른 도메인의 서버에 url요청을 할 경우 XMLHttpRequest는 보안상의 이유로 자신과 동일한 도메인으로만 HTTP요청을 보내도록 제한하고 있어 에러가 발생한다. 결론은 XMLHttpRequest가 cross-domain을 요청할 수 있도록하는 방법인 CORS를 활용한다. CORS(Cross-origin resource sharing)이란, - 웹 페이지의 제한된 자원을 외부 도메인에서 접근을 허용해주는 메커니즘이다. Spring에서 설정 스프링 RESTful Service에서 ..

Back/Spring Java 2020.03.02
반응형