Java: 248개의 글
[Java] FTP 서버로 파일 전송(업로드) 방법 및 다계층 디렉토리 만들기 1. 의존성 주입 (pom.xml) commons-net commons-net 3.3 2. FTP 생성자 코드 import java.io.IOException; import java.io.InputStream; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class FTPControl { private FTPClient ftpClient; public FTPControl() { this.ftpClient = new FTPClient(..
[Java] POI 암호걸린 EXCEL 풀고 데이터 읽어오기 - 의존성 추가 (Maven) 엑셀 복호화 기능은 POI 3.16 버전 이후로 사용가능하다. org.apache.poi poi 3.16 org.apache.poi poi-ooxml 3.16 org.apache.poi poi-ooxml-schemas 3.16 commons-codec commons-codec 1.11 1. Controller 여기서 colM 이나 password를 고정 값으로 넣었지만, 파라메터 데이터나 동적으로 설정가능하다 @RequestMapping(value="/uldExcel.do", method = RequestMethod.POST, consumes = "multipart/form-data", produces="text/..
[Java] 추상클래스와 인터페이스 차이 추상클래스 (abstract class) - 정의 : 한 개 이상의 추상메서드를 가지는 클래스 - 목적 : 추상메서드는 선언만되며 구현이 되지 않은 불완전한 메서드이므로 객체로 생성되지 않는다. 구분 일반 클래스와 추상 클래스의 차이 예시 일반 클래스 세부적이고, 구체적 고양이, 사자, 강아지 추상 클래스 추상적 고양이과, 개과 추상메서드 - 정의 : 내용이 없는 메서드, 구현(정의)는 하지 않고 선언만 한 메서드 - 목적 : 메서드의 내용이 너무 일반적인 내용이므로 부모 클래스에서 구체화하여 정의할 필요가 없을 경우, 추상메서드로 선언만하고 상속받은 자식 클래스에서 재정의하도록 할 때 사용 추상 클래스는 반드시 하나 이상의 추상메서드를 가지며, 객체를 생성할 수..
[Java] Spring Controller 파라미터 값 가져오기 (HttpServletRequest, @RequestParam, @RequestBody, @ModelAttribute) 일반적인 웹 프로젝트 구성에서 Controller 레벨에서 응답을 받고 비지니스 로직을 처리한 후에 다시 View 레벨로 넘어간다. 이 부분에서 파라미터를 어떻게 받고 어떻게 넘기는지에 대한 방법을 정리하고자 한다. HttpServletRequest.getParameter() 아래소스처럼 HttpServletRequest의 getParameter() 메서드를 이용하여 파라미터 값을 가져올 수 있다. 이때 parameter로 보낸 변수명과 getParameter("변수명") 에 들어갈 변수명이 일치해야한다. @Request..
[Java] SimpleCaptcha를 이용한 이미지 보안문자 생성하기 보안문자코드를 사용해야하는데, SimpleCaptcha를 주로 많이 사용하길래 한 번 써봤다. - 스펙 : 전자정부프레임워크 3.8, 자바1.8 1. SimpleCaptcha-1.2.1.jar 파일 다운로드 - 먼저 SimpleCaptcha 홈페이지에 들어가서 Java 버전에 맞는 버전을 다운받자. 참고로 SimpleCaptcha라이브러리를 이용한 CAPTCHA 샘플 프로그램은 JDK 1.6 기반이 가장 최신이라 SimpleCaptcha for Java 6을 다운받았다. 2. 다운로드받은 jar파일을 프로젝트에 추가해준다. 방법1. Spring MVC 프로젝트 구조의 WEB-INF의 lib에 위에서 다운받은 jar 파일을 추가해주었다..
[Java] 특정문자로 문자열 나누기 split 사용방법과 주의점 - 문자열 split("\\") 에러 "Unexpected internal error near index 1 \" 해결방법 먼저 split에 대해 살펴보자. java.lang.String.split() 문자열을 구분해서 사용하고 싶을 때 특정 구분자를 기준으로 나눠 배열에 담아 이용하는 방법이다. 문법 1. split(String regex) - 가장 일반적으로 사용하는 문법으로, 문자열을 구분할 때 사용하는 정규 표현식이 하나의 인수로 들어간다. 2. spilt(String regex, int limit) - 첫번째 인수는 위와 같고, 두번째 인수는 분류할 문자열의 수이다. (예를들어 분류할 문자가 5개인데 limit가 2이면 2개만 분..
[Java] StartsWith/EndWith : 문자열의 시작/끝 부분과 특정 문자열이 일치하는지 확인하기 String.StartsWith 메서드 - 문자열 인스턴스의 시작 부분과 지정한 문자열이 일치하는지를 확인한다. String str = "오늘은 날씨가 추워요, 따뜻하게 입어야해요"; String value1 = "오늘"; String value2 = "날씨"; boolean bool1 = str.StartsWith(value1);// true boolean bool2 = str.StartWith(value2);// false 매개변수(value) - String : 인스턴스의 시작 부분에 있는 부분 문자열과 비교할 문자열 반환 - Boolean : 인스턴스의 시작과 일치하면 true, 그러지 않..
Java는 C언어처럼 포인터가 없어 메모리의 주소와 해당 값을 함께 볼 수 없는 단점이 너무 너무 너무~ 크다 ! Java 문서나 많은 글을 읽어도 메모리의 구조가 어떻게 어떤 흐름으로 돌아가는 지 내가 알고 있는 이 답이 확실한가에 대한 의문도 많이 든다. StringBuffer의 append 메소드를 사용할 때, 어떤 식으로 값이 메모리에 할당되고 흘러가는 지 내가 이해한 바를 정리하고자 한다. StringBuffer sb = nes StringBuffer(); sb.append("a"); sb.append("b"); 단순 참조를 위한 문자열은 String 클래스, 연산이 많은 경우는 가변적으로 문자열을 저장하고 관리하는 StringBuffer 클래스를 사용한다. 위 코드와 같은 경우, 다음과 같은 ..
차이점 String 과 StringBuffer(StringBuilder), 두 클래스 모두 문자열을 담고 연산하는 것인데 차이가 뭐지? 성능이 어떻게 다르지? 궁금했던 분들에게 그 차이점을 스윽 정리해드리고자 한다! 아래 표를 보면 된다 ! String StringBuffer StringBuilder 문자열을 저장하고 관리하는 클래스 immutable (불변) mutable (가변) new 연산을 통해 생성되면 그 인스턴스의 메모리 공간은 절대 변하지 않는다. 문자열 연산을 했을 때, 메모리 공간이 변하는 것이 아닌 새로운 String 객체를 만드는 것이다. 문자열 연산에 있어서 new로 객체 생성을 한번 한 후, 연산이 필요할 때 크기를 변경시켜 문자열을 변경한다 동기화(Synchronized)를 지원..
String 문자열 생성 방식 String str1 = new String("Hello"); String str2 = "Hello"; String str3 = "Hello"; 1. new 이용한 문자열 생성 2. 문자열 리터럴 생성 두 방식의 차이점 두 방식의 가장 큰 차이점은 메모리 영역에 있다. new 연산자를 통해 String을 생성하면 Heap 영역에 존재하게 되고, 리터럴을 이용할 경우 string constant pool이라는 영역에 존재하게 된다. (아래 그림 참고) 똑같은 "Hello" 문자열을 사용하는 데 변수 str2 와 str3은 같은 객체를 바라보지만 new String으로 생성한 str1은 다른 메모리 주소의 객체를 바라보는 것이다. 문자열을 비교해보면, String str1 = ..