2018-5-29 포비 컨트롤러강의
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/form")
public String form() {
return "/user/form";
}
@PostMapping("")
public String create(User usr) {
userRepository.save(usr);
return "redirect:/users";
}
@GetMapping("")
public String list(Model model) {
model.addAttribute("users", userRepository.findAll());
return "user/list";
}
- url은 같지만 HTTP메서드가 다르기때문에 서버상에서 구분을 할 수 있다.
- 클라이언트에서 어떻게 요청을 보내느냐에 따라서 서버가 분기처리를 할 수 있다.
- path에 대한 중복은 있을 수 있지만, HTTP메서드에 대한 중복까지는 허용을 해서는 안된다.
- <a href> 태그를 통해서 요청을 보내면 무조건 GET방식으로 전달이 되어있다.
- post으로 보내는 방법은 form태그를 이용해서 거기서 methods=”post”로 하는 방식으로만 post메서드를 보낼 수 있다.
- form태그에서 GET으로 전송을 누르면 url상에 정보가 노출이 된다. 하지만 post방식으로 보내면 url상에 정보가 가려지고 보안이 get방식보다 더 좋다.
- GET방식은 key-value형태로 전달이 되서 url에 노출이 되지만 이 부분은 http의 헤더영역으로 전달이 된다.
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/styles.css" rel="stylesheet">
<script src="webjars/bootstrap/3.3.7-1/css/bootstrap.min.css"></script>
- 서버에 요청을 보내는 순간 우선 html부터 내려받아 온다.
- 브라우저는 index.html을 읽어오면서 css타입을 보고서 GET방식으로 서버에 다시 요청을 한다.
classpath?
- 프로덕션 자바 코드는 src/main/java/에 들어간다.
- 테스트코드는 src/test/java/에 들어간다.
- 그 외의 자원들은 src/main/resources/에 들어감.
- 기본적인 classpath의 루트는 자바의 루트는 java/의 하위가 루트, 그외의 자원은 resources/ 하위디렉토리가 루트이다.
- 상대경로는 url을 기준으로 잡히는 것이다.
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/styles.css" rel="stylesheet">
- 이것은 상대경로가 아니라 절대경로를 통해서 접근을 한것이다.
- 일반적으로 상대경로보다는 절대경로롤 접근을 하는것이 편하다.
@PostMapping("/users")
public String create(User usr) {
userRepository.save(usr);
return "redirect:/users";
}
-
redirect는 url로 요청을 위임을 하는것인데, 만약에 /users에 해당을 하는 GetMapping이 없다면 에러가 발생을 한다.
-
같은 패키지 내에 있어야 컨트롤러 어노테이션이 동작이 된다.
소켓에 대해서 공부를 해보기 :)
Written on May 29, 2018