전체 글 208

Jsoup API를 이용한 웹크롤링

Jsoup은 HTML문서를 웹 크롤링, 웹스크랩핑, 데이터 추출 등을 할 수 있게 도와주는 자바 라이브러리이다. Jsoup.connect(url) 주어진 Url에 연결을 시도한다. Connection 객체를 반환하여 GET, POST 요청을 할 수 있다. document.get() Connection 객체를 사용해 웹 페이지의 내용을 가져오고. Document 객체를 반환한다. Jsoup.parse(html) 주어진 html 문자열을 파싱해 document 객체를 생성한다. document.getElementById(id) 주어진 id에 해당하는 요소를 찾아 element객체로 반환한다. document.select(selector) 주어진 css 선택자와 일치하는 모든 요소를 찾아 elements객체(..

Back End/Java 2023.07.27

기타 API들

Json(JavaScript Object Notation) XML(eXensible Markup Language) 데이터를 표현하고 전송하기 위한 데이터 포맷 최근에는 Json이 더 많이 사용되고 있다. Json는 객체를 구조화된 텍스트형식으로 표현하는거고. 경량식이라 가볍고 가독성이 좋고 다양한 프로그래밍 언어와 호환이된다. { } 중괄호 안에 key와 value의 한 쌍으로 표현이된다. Json에서 배열도 표현이 가능한데 [ ] 대괄호안에 표현을 할수있고 대괄호 안에 { }의 Json데이터를 넣을 수 있다. json.org 사이트를 들어가면 추가적인 정보를 알 수 있다. XML은 데이터를 Tag형식으로 표현하는거다. 내부적으로 트리구조로 관리가된다. // Json형식 { "name":"홍길동", "a..

Back End/Java 2023.07.26

modal안에서 버튼이 두번 눌리는 버그

상황: 결재자를 선택해서 다음 그리드에 넘겨주는 버튼을 누르면 같은 사람이 두번이나 들어감. 해결: 여러 바닥에서 같은모달을 쓰고 그안에 결재하는 2차모달이 있었는데 결재하는 모달이 두개이다보니. include를 통해서 다른 결재modal에있는 button event를 불러와서 두번의 이벤트 액션을 뿌려줬다. 그래서 include된 모달들의 id나 name이 겹쳐서 이벤트가 두번이나 call됐던거였다. id랑 name의 이름을 각각 다르게 설정

스트림 API(stream)

여러개의 메서드를 병렬로 해서 처리가 가능하다. 람다식을 이용해서 병렬식으로 처리하면 효율적으로 처리할 수 있다. 여러개의 연산을 병렬로 처리하면 아주 효율적으로 프로그램을 구현할 수 있다. stream 데이터의 흐름, 통로 컬렉션이나 배열같은 여러개의 데이터를 효율적으로 조작할려면 메서드를 이용해서 관리하면 효율적으로 관리할 수 있다. 배열이나 데이터의 흐름을 스트림으로 변환해서 처리하면 좋다. 배열을 스트림으로 변환할려면 Arrays.stream() 메서드를 이용한다. 이렇게 사용하면 데이터의 처리 작업을 연속적인 파이프라인으로 나타낼 수 있어 가독성이 높아지고. 병렬 처리를 쉽게 구현할 수 있다. int[] numbers={1,2,3,4,5}; IntStream stream = Arrays.stre..

Back End/Java 2023.07.24

람다식, 함수형 인터페이스

함수형 프로그래밍 - 함수를 간결하게 표현하는것 람다식은 익명 함수다(anonymous function) - 메서드의 구현을 간결하게 표현 원래 인터페이스안에는 추상메서드가 여러개 들어갈 수 있는데. 함수형 인터페이스는 단 하나의 추상메서드만을 가질수 있다. 이런 함수형 인터페이스를 이용하면 람다 표현식을 사용할 수 있다. 함수형 인터페이스라는걸 명시적으로 선언을 할려면 인터페이스 위에 @FuntionalInterface라고 선언해주면된다. 이걸 단일 추상 메서드 인터페이스(SAM)이라고 하는데 인터페이스여서 클래스로 구현을 해야되는데 람다식을 사용하여 구현을 할 수 있다. 클래스에서 @Override를 이용해서 추상메서드를 가져와서 구현한다. 인터페이스는 객체생성처럼 =new Class(); 이렇게 구..

Back End/Java 2023.07.20

eclipse IDE에서 코드가 잘못되지 않았는데 오류가 발생할경우 처음해볼것

상황: eclipse에서 새로운 category를 따서 구현을 할려는 도중 controller통해서 url과 jsp위치를 정확하게 입력해주었는데. 계속 404오류가 떴다. 해결방안: eclipse IDE에서는 상단의 project-clean와 server에서 서버clean작업을 통해서 쌓인 데이터를 깨끗하게하여 엉킨오류를 해결할 수 도있다. 오류가 발생했는데 문제가 해결안되면 project와 server를 clean을 먼저해보자.

제네릭(Generic)

ArrayList는 Object[] 모든자료형의 부모클래스인 Object배열이라. 어떤 타입의 객체들 다 들어갈 수 있다. 그래서 배열안에 String만 들어가다가 다른 타입의 객체가 들어갈 수 있어서. ArrayList이렇게 제네릭을 String으로 선언해주면 안전성이 보장이된다. 데이터 타입을 일반화하고 컬렉션, 메서드, 클래스 등을 사용할때 런타임때 데이터 타입을 결정할 수 있다. 제네릭클래스로 일반화 시키는 방법 public class ObjectArray{ private T[] array; public ObjectArray(int size){ // 제네릭 배열을 생성하는 방법은 배열을 생성한 후 형변환을 해야합니다. array=(T[]) new Object[size]; } public void ..

Back End/Java 2023.07.16

컬렉션 프레임워크 API(Collection Framework API)

인터페이스 / 클래스 설명 분류 List 순서가 있는 객체의 모음을 다루는 인터페이스 List ArrayList List 인터페이스를 구현하는 클래스 List LinkedList List 인터페이스를 구현하는 클래스 List Set 중복된 원소가 없는 객체의 모음을 다루는 인터페이스 Set HashSet Set 인터페이스를 구현하는 클래스 Set TreeSet SortedSet 인터페이스를 구현하는 클래스 Set Map 키-값 쌍의 객체를 다루는 인터페이스 Map HashMap Map 인터페이스를 구현하는 클래스 Map TreeMap SortedMap 인터페이스를 구현하는 클래스 Map 데이터를 저장하고 관리하는 다양한 방법을 사용할 수 있다. ArrayList에 데이터를 넣을때는 list.add(dat..

Back End/Java 2023.07.15