본문 바로가기

수업 복습하기/Spring

Day 02 - lombok02 + spring01

728x90
728x90

= lombok02 =

- p06core -

< App.java >

package lecture.p06core;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import lombok.extern.log4j.Log4j;

@Log4j
public class App {
	public static void main(String[] args) {
		
		String config = "lecture/p06core/context.xml";
		
		ApplicationContext context = new ClassPathXmlApplicationContext(config);
		
		MyServlet myServlet = context.getBean(MyServlet.class);
		MyDao myDao = context.getBean(MyDao.class);
		
		log.warn(myServlet);
		log.warn(myDao);
		
		log.warn(myServlet.getMyDao());
	}
}

< MyDao.java >

package lecture.p06core;

public class MyDao {

}

< MyServlet.java >

package lecture.p06core;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class MyServlet {
	
	private MyDao myDao;
	
//	public MyServlet(MyDao myDao) {
//		this.myDao = myDao;
//	}
}

@AllArgsConsturctor를 삽입하면

아래 주석처리한 것과 같은 식이 완성된다. 

 

< context.xml >

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="myServlet" class="lecture.p06core.MyServlet">
		<constructor-arg ref="myDao"></constructor-arg>
	</bean>
	<bean id="myDao" class="lecture.p06core.MyDao"></bean>

</beans>

 

id에는 보통 클래스명이나 인터페이스의 lower camel case를 사용하는 것이 일반적이다.


- p07core -

< App.java >

package lecture.p07core;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import lombok.extern.log4j.Log4j;

@Log4j
public class App {
	public static void main(String[] args) {
		String config = "lecture/p07core/context.xml";
		
		ApplicationContext context = new ClassPathXmlApplicationContext(config);
		
		MyServlet myServlet = context.getBean(MyServlet.class);
		MyDao myDao = context.getBean(MyDao.class);
		
		log.warn(myServlet);
		log.warn(myDao);
	}
}

< MyDao.java >

package lecture.p07core;

import org.springframework.stereotype.Component;

@Component
public class MyDao {
}

< MyServlet.java >

package lecture.p07core;

import org.springframework.stereotype.Component;

@Component
public class MyServlet {

}

< context.xml >

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

<!-- <bean id="myServlet" class="lecture.p07core.MyServlet"></bean>
<bean id="myDao" class="lecture.p07core.MyDao"></bean> -->
	<context:component-scan base-package="lecture.p07core"></context:component-scan>
</beans>


- p08coreExercise -

< App.java >

package lecture.p08coreExercise;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import lombok.extern.log4j.Log4j;

@Log4j
public class App {
	public static void main(String[] args) {

		String config = "lecture/p08coreExercise/context.xml";

		ApplicationContext context = new ClassPathXmlApplicationContext(config);

		Student student = context.getBean(Student.class); // not exception
		Teacher teacher = context.getBean(Teacher.class); // not exception

		log.warn(student);
		log.warn(teacher);
		
		log.warn("--- bean 이름으로 얻기 ----");
		
		log.warn(context.getBean("student"));
		log.warn(context.getBean("teacher"));
	}
}

< Student.java >

package lecture.p08coreExercise;

import org.springframework.stereotype.Component;

@Component
public class Student {

}

< Teacher.java >

package lecture.p08coreExercise;

import org.springframework.stereotype.Component;

@Component
public class Teacher {

}

< context.xml >

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

<context:component-scan base-package="lecture.p08coreExercise"></context:component-scan>
</beans>


- p09core -

< App.java >

package lecture.p09core;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
	public static void main(String[] args) {
		
		String config = "lecture/p09core/context.xml";
		
		ApplicationContext context = new ClassPathXmlApplicationContext(config);
			
		MyServlet myServlet = context.getBean(MyServlet.class);
		MyDao myDao = context.getBean(MyDao.class);
		
		System.out.println(myServlet);
		System.out.println(myDao);
		
		System.out.println(myServlet.getMyDao());
	}
}

< MyDao.java >

package lecture.p09core;

import org.springframework.stereotype.Component;

@Component
public class MyDao {

}

< MyServlet.java >

package lecture.p09core;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MyServlet {

	private MyDao myDao;
	
	public MyDao getMyDao() {
		return myDao;
	}
	
	@Autowired
	public void setMyDao(MyDao myDao) {
		this.myDao = myDao;
	}
}

< context.xml >

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

<context:component-scan base-package="lecture.p09core"></context:component-scan>
</beans>


- p10coreExcercise -

< App.java >

package lecture.p10coreExcercise;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
	public static void main(String[] args) {		
		String config = "lecture/p10coreExcercise/context.xml";		
		ApplicationContext context = new ClassPathXmlApplicationContext(config);
		System.out.println(context.getBean("computer")); // not null, not exception
		System.out.println(context.getBean("memory")); // not null, not exception
		System.out.println(context.getBean(Computer.class).getMemory()); // not null, not exception
	}
}

< Computer.java >

package lecture.p10coreExcercise;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import lombok.Getter;
import lombok.Setter;
@Component
@Getter
@Setter(onMethod_ = @Autowired)
public class Computer {
	
	private Memory memory;
	/*
	 * public Memory getMemory() { return memory; }
	 * 
	 * @Autowired public void setMemory(Memory memory) { this.memory = memory; }
	 */
}

< Memory.java >

package lecture.p10coreExcercise;

import org.springframework.stereotype.Component;

@Component
public class Memory {
  
}

< context.xml >

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

<context:component-scan base-package="lecture.p10coreExcercise"></context:component-scan>

</beans>


- p11core -

< App.java >

package lecture.p11core;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
	public static void main(String[] args) {
		String config = "lecture/p11core/context.xml";

		ApplicationContext context = new ClassPathXmlApplicationContext(config);

		MyServlet s = context.getBean(MyServlet.class);
		MyDao d = context.getBean(MyDao.class);

		System.out.println(s);
		System.out.println(d);

		System.out.println(s.getMyDao());
	}
}

< MyDao.java >

package lecture.p11core;

import org.springframework.stereotype.Component;

@Component
public class MyDao {

}

< MyServlet.java >

package lecture.p11core;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import lombok.Getter;

@Component
@Getter
public class MyServlet {
private MyDao myDao;

@Autowired
public MyServlet(MyDao myDao) {
	this.myDao=myDao;
	}
}

< context.xml >

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

<context:component-scan base-package="lecture.p11core"></context:component-scan>
</beans>


- p12core -

< App.java >

package lecture.p12core;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
	public static void main(String[] args) {
		
		String path = "lecture/p12core/context.xml";
		ApplicationContext context = new ClassPathXmlApplicationContext(path);
		
		MyServlet s = context.getBean(MyServlet.class);
		MyDao d = context.getBean(MyDao.class);
		
		System.out.println(s);
		System.out.println(d);
		
		System.out.println(s.getMyDao());
	}
}

< MyDao.java >

package lecture.p12core;

import org.springframework.stereotype.Component;

@Component
public class MyDao {

}

< MyServlet.java >

package lecture.p12core;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import lombok.Getter;

@Component
@Getter
public class MyServlet {

	@Autowired
	private MyDao myDao;	
}

< context.xml >

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

<context:component-scan base-package="lecture.p12core"></context:component-scan>
</beans>


= Spring01 =

- p01controller -

< Controller01.java >

package org.zerock.controller.p01controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/cont01")
public class Controller01 {
	
	// "/cont01"
	@RequestMapping("")
	public void method00() {
		System.out.println("메소드00 일함");
	}
	
	// "/cont01/met01"
	@RequestMapping("/met01")
	public void method01() {
		System.out.println("메소드01 일함");
	}
	
	// "/cont01/met02" 요청이 왔을 때 일하는 메소드(method02)를 작성하세요. return : void
	@RequestMapping("/met02")
	public void method02() {
		System.out.println("메소드02 일함");
	}
		
	// "/cont01/met03", "/cont01/met04" 로 요청이 왔을 때 일하는 메소드
	@RequestMapping({"/met03", "/met04"})
	public void method03() {
		System.out.println("메소드 03 일함");
	}
	
	// "/cont01/met05", "/cont01/met06" 로 요청이 왔을 때 일하는 메소드 method05 작성
	@RequestMapping({"/met05", "/met06"})
	public void method05() {
		System.out.println("메소드 05 일함");
	}
}

@RequestMapping에 맞는 주소를 입력하면, 내가원하는 메소드를 가져올 수 있게 연습하기 (1)

 

< Controller02.java >

package org.zerock.controller.p01controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/cont02")
public class Controller02 {

	// url : "/cont02/met01" , method : get
	@RequestMapping(value = "/met01", method = RequestMethod.GET)
	public void method01() {
		System.out.println("메소드 01 일함");
	}

	// url : "/cont02/met01" , method : post
	@RequestMapping(value = "/met01", method = RequestMethod.POST)
	public void method02() {
		System.out.println("메소드 02 일함");
	}

//	@RequestMapping(value = "/met03", method = RequestMethod.GET)
	@GetMapping("/met03")
	public void method03() {
		System.out.println("메소드 03 일함");
	}

	// url : "/cont02/met03", method : post 일하는 메소드 method04를 작성
//	@RequestMapping(value = "/met03", method = RequestMethod.POST)
	@PostMapping("/met03")
	public void method04() {
		System.out.println("메소드 04 일함");
	}
		
	@RequestMapping(value="/met05", method = {RequestMethod.GET, RequestMethod.POST})
	public void mthod05() {
		System.out.println("메소드 05 일함");
	}
}

get은 입력하는거로 바로 확인할 수 있지만, post는 확인하는 방식이 다르기 때문에, 조금 복잡(?)한 방식을 거쳐야 한다.

gitbash를 켜서 확인하는 방법 예시!

식 간출이는 방법 :

-s 하면 위에나오는 통계내용 삭제

> 아무내용.txt (뒤쪽에 붙는 것)은 response 몸통을 가리게 해준다.

-X GET : requestMethod.get을 가져오고 출력 : method03을 가져온다

-X POST : requestMethod.post를 가져오고 출력 : method04를 가져오게 된다.

 

< Controller03.java >

package org.zerock.controller.p01controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/cont03")
public class Controller03 {

	@RequestMapping("/met01")
	public void method01(HttpServletRequest request) {
		System.out.println("메소드 01 일함");

		// 2. request 분석/ 가공
		String name = request.getParameter("name");
		String ageStr = request.getParameter("age");
		int age = Integer.parseInt(ageStr);

		// 3.
		System.out.println(name);
		System.out.println(age);
	}

	@RequestMapping("/met02")
	public void method02(String name, Integer age) {
		System.out.println("메소드 02 일함");
		System.out.println(name);
		System.out.println(age);
	}

	// /cont03/met03 : request 파라미터, address(String)와 id(Integer)를 받도록 메소드 작성
	@RequestMapping("/met03")
	public void method03(String address, Integer id) {
		System.out.println(address);
		System.out.println(id);
	}

	@RequestMapping("/met04")
	public void method04(@RequestParam("name") String contactName) {
		System.out.println(contactName);
	}

	// url:/cont03/met05?country=korea&height=200
	@RequestMapping("/met05")
	public void method05(@RequestParam("country") String c,
			@RequestParam("height") Integer h) {
		System.out.println(c);
		System.out.println(h);
	}
}

request 파라미터에 값을 넣고, @RequestMapping을 할 때, 그 값을 같이 가지고 나오지 않는 다면 null값이 나온다.

http://localhost:8080/controller/cont03/met01?name=john&age=20

를 넣으면, 콘솔창에 아래의 사진과 같이 출력된다.


728x90