본문 바로가기

dev151

[Spring] Tomcat port 변경 >> Tomcat의 Port 변경은 server.xml 설정을 변경해줘야 한다. >> server.xml 은 2개가 있는데 >>1. 톰캣을 설치했을때의 경로에서 Tomcat 9.0>conf>server.xml 여기서 설정을 바꾸게 되면 톰캣 전체의 설정을 바꾸게 되는것이고, >>2. STS 의 Servers 파일에서 server.xml 을 바꾸게 되면,, 해당 STS 프로젝트 내에서 Tomcat 설정을 따로 지정하여 줄수 있다. 프로젝트 실행시 우선순위는 STS의 설정이 더 우선순위가 있다 (1실행 후 --> 2실행) 즉 늦게 실행된 설정이 적용이 된다. 따라서 프로젝트마다 설정을 다르게 하려면 STS 내에서 Server>server.xml에서 Connect port를 변경하자 2022. 6. 4.
[Spring] ModelAttribute, BindingResult @ModelAttribute >>적용 대상을 Model의 속성으로 자동 추가해주는 애너테이션으로, 반환타입 또는 컨트롤러 매서드의 매개 변수로 사용 가능 >> 즉 Model m --> m.addAttribute() 해서 추가해주던것을 자동으로 해줌 >> 반환 타입 앞에서도 사용이 가능하다. >> http://localhost:8080/ch2/getYoilMVC5?year=2022&month=6&day=4 실행결과 >> model.addAttribute() 하지 않아도 model을 통해 전달되어 >> browser 에서 2022 // 6 // 4 // 토 가 출력되는 것을 확인 할 수 있다. 컨트롤러 매개변수 1. 기본형 @RequsetParam 4개의 표현식은 결과적으로 다 같은 말로 >> @ModelA.. 2022. 6. 4.
[Spring] RequestParam @RequestMapping("/requestParam2") //public String main2(RequestParam(name="year" require=false) String year ) public String main2(String year) { // http://localhost/ch2/requestParam2 --> year=null // http://localhost/ch2/requestParam2?year --> year="" (빈문자열) return "yoil"; } 현재 주석 처리되어 있는 부분과 // 주석처리되어 있는 부분 아래는 같은 표현으로 (RequestParam(name="year" require=false) 이부분은 생략이 가능한 부분이다. name의 경우는 JSP에서 .. 2022. 6. 3.
[JAVA] 제네릭스 Box 지네릭 클래스, T의 Box 또는, T Box라고 읽는다. T 타입변수, 또는 타입 매개변수(T는 타입문자) Box 원시타입 지네릭 클래스를 생성할 떄는 다음과 같이 진행해야한다. 참조변수와 생성자에 대입된 타입(매개 변수화된 타입)이 일치해야 한다. 일치하지 않으면 에러가 발생한다. Box appleBox = new Box(); -- OK Box appleBox = new Box(); -- Failed 두타입이 상속 관계에 있더래도 마찬가지이다. Apple이 Fruit의 자손이라고 생각하자 Box appleBox = new Box(); -- Fail.. 타입이 다르다. 단, 두 지네릭 클래스의 타입이 상속관계에 있고, 대입된 타입이 같은것은 괜찮다 FruitBox가 Box의 자손이라고 가정하자 .. 2022. 6. 2.
[JAVA] 익명 클래스 익명 클래스란? : >> 익명클래스란 이름이 없는 클래스로써, 객체의 생성및 정의를 동시에 실시합니다. 생성 조건 >> 익명클래스는 자식 클래스로 부모 클래스 또는, 구현 클래스로 생성한다. >> 생성 방법으론 new 부모클래스 or 구현인터페이스() { } 이다. new 부모클래스or구현인터페이스() { //새롭게 정의할 자식클래스 정의 } >> 따라서 생성된 익명의 클래스는 부모클래스 타입으로 참조변수에 대입되거나, 구현한 인터페이스의 참조변수에 대입되어 사용된다. 이렇게 생성한 익명 클래스의 접근성은 참조변수 타입이 부모클래스이므로, 익명클래스(자식클래스)에서 생성한 멤버와, 메서드는 사용불가능 하며, 부모클래스의 메서드를 재정의할 경우 재정의된 메서드로 호출이 된다. ================.. 2022. 5. 31.
[JAVA] 인터페이스의 장점 현재 AA 클래스가 BB클래스의 메서드를 사용하는데 만약에 AA클래스가 BB클래스가 아닌 CC클래스를 사용하려면 >> AA클래스가 변경되어야 한다. main안에서도 해당 매서드 사용하는 곳의 매개변수를 바꿔줘야 한다. 이것을 인터페이스를 사용하게 되면, AA클래스를 변경하지 않고 main메서드에서 사용할 클래스만 바꿔주면된다. 메서드의 선언과 구현을 분리한다. >> 상속 관계에 있으므로 매개변수로 들어가는 I 부분이 I i = new BB(); I i = new CC(); 이 가능하다. 2022. 5. 31.
[JAVA] 인터페이스의 다형성 >> 인터페이스도 구현 클래스의 부모로 취급한다. 현재 Fighter의 클래스가 Unit과 Fightable을 상속 및 구현하고 있다고 하면 이 가능하다. 다형성에서 배웠다시피,, 상속 관계에 있을때 자손의 인스턴스가 부모의 참조변수를 가르킬 수 있다. 즉 Fightable f = new FIghter(); 의경우는 Fighter가 아무리 많은 멤버를 가지고 있더래도 f의 리모컨은 자기가 가지고 있는 멤버밖에 사용하지 못한다 . >> f.move(), f.attack() >> 인터페이스 타입 매개변수는 인터페이스를 구현한 클래스의 객체만 가능 즉 public void attack(Fightable f) {} 의 경우 >> attack 의 매개변수로는 Fightable 을 구현한 클래스의 인스턴스만 올수 .. 2022. 5. 31.
[JAVA] 인터페이스 인터페이스란 ? : 추상 메서드의 집합, 구현된 것이 전혀 없는 설계도, 껍데기(모든 멤버가 public) 추상클래스 인터페이스 차이점. 일반 클래스인데 추상메서드를 가지고 있는 클래스 인터페이스는 구현된게 없는 추상메서드의 집합이다. iv (인스턴스 변수)를 가질 수 없다. 인터페이스에서는 상수와, 추상메서드를 가질수 있다. 이때 상수는 모두 public static final 이 붙으며, 생략이 가능하다 또한 추상메서드도, public abstract 가 항상 붙으며, 생략이 가능하다. JAVA 8이후로 인터페이스에서 default 메서드와, static 메서드도 생성할 수 있다. Interface의 상속: >> 인터페이스의 조상은 인터페이스만 가능(Object가 최고 조상이 아니다) >> 다중상속이.. 2022. 5. 31.
[JAVA] 매개변수의 다형성 1. 다형적 매개변수 >> 조상 타입의 참조변수로 자손 객체를 다루는것 >> 참조변수의 형변환 -> 리모컨 바꾸기 -> 사용할수 있는 멤버의 갯수 조절 >> instanceof 연산자 -> 형변환 가능 여부 체크 -- 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨 줄수 있다. 상품 클래스, 상품 클래스를 상속하는 Tv, Computer, Audio 소비자 클래스가 있을때 void buy(Tv t) --> 라는 매서드가 있다면 buy의 매개 변수로는 Tv 타입만 들어올수 있으므로 Computer나 Audio를 사려면 void buy(Computer c), void buy(Audio a) 매서드가 필요하다 이럴경우 매서드가 너무 많아지고 다루기가 힘든데 이경우는 매개변수.. 2022. 5. 30.
[JAVA] 다형성 / 참조변수간의 형변환 다형성이란? >> 조상 타입 참조변수로 자소나입 객체를 다루는것 객체를 생성할때 참조변수와 생성자의 타입을 동일하게 생성했었는데 Tv t = new Tv(); SmartTv s = new SmartTv(); 다형성이란 객체간 상속 관계가 형성되어 있을때 조상타입의 참조변수 t로 자손 타입의 객체 SmartTv()를 다루는 것이다. Tv t = new SmartTv(); (불일치 해도 OK) > SmartTv s = new SmartTv(); 로 생성할 경우에는 Tv의 멤버 4개와 SmartTv 멤버 2개 총 6개의 멤버를 모두 사용할 수 있다. Tv t = new SmartTv(); 로 생성할 경우는 Tv에는 멤버가 4개 밖에 없기 때문에 SmartTv가 6개를 가지고 있더래도 Tv에는 SmartTv에만.. 2022. 5. 30.