Java/Java Library
-
[java] 자바 selenium 새 탭 열기Java/Java Library 2021. 3. 10. 18:46
자바 selenium 사용시 새탭을 열고 싶은 경우가 있다. 탭을 여는 방법은 여러가지 있는데 키보드 이벤트를 이용한 경우와 자바스크립트를 이용하는 경우가 있다. 자바스크립트를 이용하는 경우 ((JavascriptExecutor) driver).executeScript("window.open()"); 위의 방식으로 새탭을 열고, 새탭의 브라우저도 컨트롤 하고 싶은 경우 tab 을 이동해야 한다. 탭을 이동하는 방법은 ArrayList tabs = new ArrayList(driver.getWindowHandles()); // 탭리스트 가져오기 driver.switchTo().window(tabs.get(1)).navigate().to("https://www.naver.com"); getWindowHand..
-
[Java] 자바 selenium 크롤링 - 브라우저 제어하기Java/Java Library 2021. 3. 8. 18:04
자바로 크롤링을 하려면 SSR - 서버사이드 렌더링 인 경우 url 에 로 http 리퀘스트 해서 받아온 응답을 element 를 찾아 파싱만 하면 된다. 하지만 문제가 CSR - 클라이언트사이드 렌더링 의 경우 크롤링을 하기 어렵다. 뿐만 아니라 로그인 및 기타 인증이 필요한 사이트일 수록 크롤링을 하기 어렵다. 그래서 브라우져를 프로그래밍으로 조작해서 필요한 데이터만 추출하는 라이브러리를 사용해야 한다. 라이브러리는 Selenium 라이브러리다. Selenium? : Selenium은 주로 웹앱을 테스트하는데 이용하는 프레임워크이다. ebdriver라는 API를 통해 운영체제에 설치된 Chrome등의 브라우저를 제어하게 된다. spring boot 를 활용해서 maven 으로 pom.xml 에 다음과..
-
[java] 자바 서버 ip 가져오기Java/Java Library 2021. 2. 25. 18:13
public static String getIp(){ String result = null; try { result = InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { result = ""; } return result; } InetAddress.getLocalHost().getHostName() 을 사용하면 서버에서 hostname 을 찾는것과 같은 이름을 찾는다.
-
XJC(JAXB binding compiler) 로 .xsd 파일을 java 객체로 변환하기Java/Java Library 2021. 2. 11. 22:49
jaxb - Java Architecture for XML Binding jaxb 라는 xml 를 바인딩하는 라이브러리가 있다. 한마디로 파싱 관련 라이브러리다. JAXB 는 XML 문서정보를 거의 동일한 구조의 오브젝트로 직접 매핑한다. 스키마 컴파일은 xjc 라는 명령어로 수행한다. xsd 라는 xml 로 정의된 문서를 java 오브젝트로 컴파일 하는 작업이다. XJC(JAXB binding compiler) 툴 xjc 도구를 사용하여 XML 스키마 파일을 전체 어노테이션 지정된 Java 클래스로 컴파일할 수 있다. xjc는 JDK bin 디렉터리에 포함되어 있다. 확인하기 1) 내 java jdk 경로 EX) C:\Program Files\Java\jdk1.8.0_191\bin 위 예시 경로에 xj..
-
[Java] 자바 문자열로 된 수식 계산하기 - 스크립트 엔진Java/Java Library 2021. 2. 9. 14:41
문자열로 된 수식 계산하기 예를 들어 데이터에 "1+1" 이라는 스트링이 넘어올 경우 이 값의 결과값 2 가 필요한 경우가 있다. 이런 경우에 스크립트 엔진을 이용해 문자열을 계산하자 파싱안하고 스크립트 엔진으로 연산하기 import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; public class Test { public static void main(String[] args) throws Exception{ ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("JavaScript"); String foo =..
-
[Gson] gson deserialize 파싱사용 이유 및 방법Java/Java Library 2021. 2. 1. 18:41
gson 을 사용할 떄 json 구조에 맞춰서 fromJson 메소드를 호출하면 자동으로 파싱을 해주지만, 종종 커스텀을 해서 파싱을 해야 할떄가 있다. 1. 해야하는 순간은 해당 데이터가 모두 동일한 포맷으로 파싱이 되어야 한다든지, EX) 공백 "" 스트링이 있으면 항상 null 로 치환, 또는 날짜가 포함된 경우 동일한 포맷으로 파싱해야 하는 경우. 2. 일반적인 방식으로 파싱이 어려운 경우 EX) json 객체의 키값이 가변적인 경우여서 객체명으로 파싱이 불가능할 경우 { "1234": { "name" : "cat" }, "5594": { "name": "dog" } } EX) 같은 json 키 이지만 값에 value 에 따라 파싱되는 객체 구조가 다를 경우 여기서 registerTypeAdapt..
-
[Java Library] gson casting 오류 com.google.gson.internal.LinkedTreeMap cannot be cast to my class - jsonlist 를 List 객체로 만들기Java/Java Library 2021. 1. 28. 15:42
Gson casting 오류 gson 을 사용하다 보면 __com.google.gson.internal.LinkedTreeMap cannot be cast to my class__ 이런 오류가 나는데, casting 을 사용하려고 하면 나는 오류다. Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken(){}.getType()); jsonString list 로 fromJson 하는 경우에 생기는 오류이다. 결론은 아래 메소드로 다시 json 변환 후 object 로 변환 하던지, 아니면 gson 파싱 객체를 casting하지 않도록 만들어야 한다. //array 를 json String 으로 변환 public static Stri..
-
sftp java 접속 라이브러리 jschJava/Java Library 2021. 1. 27. 18:04
SFTP 접속하는 라이브러리는 jsch 다. sftp: 내서버에서 다른 서버 22번 sftp 접속하는 방법이다. public class FTPUtil { private static Log logger = LogFactory.getLog(FTPUtil.class); private Session session = null; private Channel channel = null; private ChannelSftp channelSftp = null; // SFTP 서버연결 public void connect(String user, String url, String password) throws Exception{ logger.info(url); //JSch 객체 생성 JSch jsch = new JSch()..