달력

7

« 2019/7 »

2019. 7. 7. 01:30

@PathVariable Development/Spring



 

 

@PathVariable

·         @PathVariable 어노테이션을 이용하면 경로(path) 변수를 넣어주면 해당 변수를 요청메소드의 파라미터로 이용 있습니다.

·         HTTP 요청에 대한 요청 URL 파라미터(경로변수;구분자)형태로 사용할 있습니다.

·         요청시 마다 변하는 부분을 경로 변수로 처리할 있습니다.

·         REST API에서 값을 호출할 uri에서 구분자에 들어오는 값을 처리해야 주로 많이 사용합니다.

 

 

요청 URL

/bbs/{경로변수}

파라미터 처리

@PostMapping("/bbs/{경로변수}")

@PathVariable("경로변수") int 매개변수

 

@PostMapping("/bbs/{경로변수}")

@PathVariable int 매개변수(경로변수명과 동일)

 

 

 

// 경로에 변수를 넣어서 요청 처리

// 해당 변수는 요청 메소드의 파라미터로 이용되어 집니다.

@RequestMapping("/student/{studentId}")

public String getStudent(@PathVariable String studentId, Model model) {

// @PathVariable 어노테이션을 통해 경에 설정한 변수를 요청메소드의 파라미터로 사용하고 있습니다.

model.addAttribute("studentId", studentId);

return "student/studentView";

}

@RequestMapping("/student/{studentId}")

// 경로변수명의 값을 저장할 변수명이 경로변수명과 다를 경우 @PathVariable 경로 변수경을 꼭어준 원하는 변수명을 사용해 주면 됩니다.습니다.

public String getStudent(@PathVariable("index") String studentNumberId, Model model) {

 

model.addAttribute("studentId", studentNumberId);

return "student/studentView";

}

 

 

 

 

 

 

요청 URL

http://localhost:8080/bbs/13

파라미터 처리

@PostMapping("/bbs/{index}")

@PathVariable("index") int articleId

 

POST방식의 /bbs/{index} 같이 uri 요청이 들어오면  /bbs/13 URL 경로에서 경로변수에 해당하는 (13) 가져와서 articleId 매개변수에 저장하여 사용합니다.

@PostMapping("/bbs/{index}")

@ResponseBody

public boolean deletePost(@PathVariable("index") int articleId) {

//...

return true;

}

 

 

 

@Controller

@RequestMapping("/bbs")

public class BbsController{

@Autowired

private BbsService bbsService;

 

@RequestMapping(value = "/{index}", method = RequestMethod.POST)

public boolean deletePost(@PathVariable("index") int articleId) {

        //...

        return true;

}

}

 

 

 

 


'Development > Spring' 카테고리의 다른 글

Static Web Resource 처리  (0) 2019.08.09
"Spring Explorer" 뷰 오픈 하기  (0) 2019.07.27
@PathVariable  (0) 2019.07.07
STS4에서 Spring Legacy Project 생성하기  (0) 2019.06.15
eclipse/STS - Spring 환경구성  (0) 2019.06.06
Jackson Library 검색 및 설치  (0) 2019.05.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

LinkedList<E>에서 컬렉션 클래스를 HashSet<E> 변경

IteratorEx01.java에서 LinkedList<E> HashSet<E>변경시 반복자를 사용하기 때문에

컬렉션 선언만 바뀌고 나머지 부분은 모두 동일하게 사용할 있습니다.

LinkedList<String> list = new LinkedList<String>();

list.add("First");

list.add("Second");

list.add("Third");

list.add("Fourth"); 

list.add("Fifth");

현재 LinkedList<E>

HashSet<String> set = new HashSet<String>();

set.add("First");

set.add("Second");

set.add("Third");

set.add("Fourth");

set.add("Fifth");

LinkedList<E>에서 컬렉션 클래스를 HashSet<E> 변경

 

 

 

ArrayList 저장된 요소 출력하기

ArrayList대신 List인터페이스를 구현한 다른 컬렉션 클래스에 대해서도 동일한 코드를 사용할 있습니다.

첫줄의 ArrayList() 생성자 대인 List인터페이스를 구현한 다른 컬렉션 클래스의 객체를 생성하도록 변경하면 나머지 부분은 모두 동일하게 사용할 있습니다.

Iterator 이용해서 컬렉션의 요소를 읽어오는 방법은 표준화되어 있기 때문에 아래와 같이 코드의 재사용성을 높일 있습니다.

// 다른 컬렉션으로 변경할 때는 new ArrayList()부분만 변경하면 됩니다.

List list = new ArrayList();

 

Iterator iterator = list.iterator();

 

while(iterator.hasNext()){

System.out.println(iterator.next());

}

List 없고 ArrayList에만 있는 메소드를 사용하는 것이 아니라면 List타입의 참조변수를 생성하도록 선언하는 것이 좋습니다.

성능상의 이유이거나 테스트할 목적으로 List인터페이스를 구현한 다른 클래스로 바꿔야 한다면(LinkedList 바꿔야 한다면) 선언문 하나만 변경하면 나머지 부분은 모두 동일하게 변경없이 사용할 있습니다.

List list = new LinkedList();

 

, 참조변수의 타입이 List이므로 List 정의되지 않은 메소드는 사용하지 않을 것이기 때문입니다.

 

ArrayList list = new LinkedList();

만약 참조변수의 타입을 ArrayList 경우 참조변수 선언 이후의 코드를 검토하여 List 정의되지 않은 메소드를 호출했는지 확인해야 합니다.

 




Posted by codedragon codedragon

댓글을 달아 주세요