본문 바로가기

728x90

Backend

(70)
[JAVA] String, StringBuffer, StringBuilder 의 차이점 이번 주제는 자주 사용하는 클래스인 String, StringBuffer 그리고 익숙하지는 않지만 중요한 StringBuilder 클래스에 대해서 알아보고자 한다. | String Java 코딩을 하다보면, String 클래스를 사용하는데 문자열을 추가하고 할때 String s1 ="text" + " good"'; 이런식으로 "+" 연산자를 이용하여 문자열을 더한다. 하지만 메모리를 효율적으로 사용하고자 할때, 고민을 하고 사용해야 한다. 그 이유를 설명하자면 다음과 같다. 이렇게 코딩이 되어있다면 당연히 결과는 "안녕하세요 반가워요"라고 콘솔에 출력할 것이다. 그렇다면 메모리구조는 어떻게 될까? public class Main { public static void main(String[] args) {..
[JAVA] 추상클래스(Abstract Class) * 추상메서드 - 추상메소드란 선언은 되어 있으나 코드가 구현되어 있지 않은 껍데기만 있는 메소드이다. * 추상클래스 : 추상클래스는 추상 메서드가 하나라도 있으면 그 클래스는 추상클래스가 된다. (만드는 2가지 방법 ) 1) 추상 메소드를 포함하는 클래스 2) 추상 메소드가 없지만 abstract(예약어)로 선언한 클래스 * 추상 클래스는 객체를 생성할 수 없다. 응용프로그램은 추상 클래스의 객체(인스턴스)를 생성할 수 없다. 추상클래스는 본래 객체를 생성할 목적으로 만드는 클래스가 아니다. 추상 클래스에는 실행 코드가 없는 미완성 상태인 추상 메소드가 있을 수 있기 때문에, 추상 클래스의 객체를 생성하는 코드에는 컴파일 오류가 발생한다. 컴파일 오류 , 추상 클래스의 객체를 생성할 수 없다. 그러나,..
[JAVA 디자인 패턴] 싱글톤 패턴 (Singleton Pattern) * 싱글톤 패턴 (Singleton pattern) 싱글턴 패턴은 인스턴스가 오직 하나만 생성되는 것을 보장하도록 하고, 어디서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다. 이를 구현하고자, 생성자를 외부에서 호출할 수 없게 만들기 위해 생성자를 private하게 만든다. 이 패턴은 Database에 접근하고자 DAO객체를 만들때이고, Spring framework 에서 Bean을 만들때 기본적으로 Singleton으로 만들도록 하는 데 쓰인다. 그렇다면, 싱글톤을 안쓸때의 문제와 써야 하는 상황을 Printer관리자를 만드는 것을 예를 들어 설명해보겠다. 사무실에 Printer가 하나가 있고, 여기에 접근하려는 사용자가 여러명이 있는 상황이다. 이런 경우 Printer 객체는 단 하나만 존..
[JAVA 디자인 패턴] 커맨드 패턴 (Command Pattern) 활용 1 연습문제 1. TwoButtonController 클래스를 구현. * 기존코드 class TwoButtonController{ private TV tv; public TwoButtonController(TV tv) { this.tv = tv; } public void button1Pressed() { tv.power(); } public void button2Pressed() { tv.mute(); } } class TV{ private boolean powerOn = false; private boolean muteOn =false; public void power() { powerOn =! powerOn; if(powerOn) { System.out.println("power on"); } else ..
[JAVA 디자인 패턴] 커맨드 패턴 (Command Pattern) * 커맨드 패턴 (Command pattern) 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다. * 커맨드 패턴이 왜 필요한지에 대해서 알아보자. 눌리면 특정 기능을 수행하는 버튼을 생각해보자. 버튼 눌렸을때 불이 켜지는 프로그램을 개발하려면, 버튼을 눌려졌음을 인식하는 Button 클래스, 불을 켜는 기능을 하는 Lamp 클래스, 버튼을 눌렸을 댸 램프를 켜려면, Button 클래스는 Lamp 객체를 참조 해야 한다. 이 버튼을 만들고자 한다면 이렇게 만들 수 있을 것이다. class Lamp{ public void turnOn() { System.out.println("La..
[Spring Framework] 03_03. 요청 파라미터 처리 방법 1. 컨텍스트 루트 경로가 변경될 경우 처리 방법. 1) 컨텍스트 루트 경로를 변수로 지정함. 요청 파라미터값 테스트!!! 회원 가입 양식 - ID: - PW: - NAME: - HOBBY: 축구 독서 음악 - jstl 사용 - EL 사용 2) 태그를 사용함. 요청 파라미터값 테스트!!! 회원 가입 양식 - ID: - PW: - NAME: - HOBBY: 축구 독서 음악 로 변경 2. 요청 파라미터 처리 방법 * 파라미터 받는 VO 객체 생성 * UserVo.java package com.spring.web.model; import java.util.List; public class UserVO { private String userId; private String userPw; private Strin..
[Spring Framework] 03_02. GET / POST 요청 메서드 매핑 1) GET / POST 따로 받는 방법 * req-ex01.jsp RequestController를 이용한 요청 처리 연습 컨트롤러 테스트 중입니다~ * RequestController.java @Controller @RequestMapping("/request") public class RequestController { public RequestController() { System.out.println("RequestCon 작동!"); } //@RequestMapping(value="/request/basic01", method=RequestMethod.GET) @GetMapping("/request/basic01") public String basicGet() { System.out.printl..
[Spring Framework] 03_01. Spring Framework 설계 모델 스프링 MVC 프레임워크 기반의 웹 프로그래밍 구조를 살펴보면 다음과 같다. DispatcherServlet Class가 브라우저의 요청을 받고, 그 요청을 HandlerMapping에게 넘겨준다. HandlerMapping은 많은 Controller중에 가장 적합한 것(URL, HTTP 메서드 및 정보, 파라미터 참고)을 선택한다. Controller가 결정되었다면, 실제로 해당되는 컨트롤러의 메소드를 호출해야 되는데 호출방법이 타입에 따라 다르므로 아무리 Controller를 결정했다고 하더라도, DispatcherServlet은 알 길이 없기에 컨트롤 타입을 지원하는 HandlerAdapter라는 인터페이스가 적합한 파라미터를 추출해 해당 Controller의 메소드를 호출한다. 다시 Dispatc..

728x90