컨트롤러
클라이언트 요청을 처리하는 컨트롤러 객체로 , 요청을 받아 사용자의 요청에 부합하는 메서드를 실행한다.
@Controller
public class MyController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Spring MVC!");
return "hello"; // View 이름을 반환합니다 (예: hello.jsp, hello.html)
}
}
컨트롤러로 사용하기 위해서는 클래스 위에 @Controller 이렇게 어노테이션을 작성해야 한다.
요청 매핑 어노테이션
@RequestMapping("주소")
@RequestMapping("/home")
public String home() {
return "home";
}
주소가 /home로 왔을 때 home 라는페이지로 보내는것처럼 어떠한 주소로 왔을때 그에 맞게 연결해 준 느 역할을 한다
사용법은 비슷하지만 요청내용에 따라
@GetMapping("주소")
=> GET요청을 매핑하는 데 사용된다. 주로 데이터 조회하는 데 사용한다.
=> 서버로부터 데이터를 요청하며 주로 데이터를 가져오는 데 사용된다.
@GetMapping("/example")
public String handleGetRequest() {
// GET 요청을 처리하는 로직
return "exampleView";
}
@PostMapping("주소")
=> post 요청을 매핑한다.
=> 데이터를 전송하고 수정하는 데 사용된다.
@PostMapping("/example")
public String handlePostRequest() {
// POST 요청을 처리하는 로직
return "exampleView";
}
@PutMapping("주소")
=> PUT 요청은 HTTP 프로토콜에서 사용되는 메서드 중 하나로, 클라이언트가 서버로 데이터를 전송하여 리소스를 생성하거나 업데이트하는 데 사용됩니다. 일반적으로 RESTful API에서 업데이트나 새로운 리소스를 생성하는 데 사용됩니다.
@DeleteMapping("주소")
=> 클라이언트가 서버로부터 리소스를 삭제를 요청한다.
@PathVariable는 주소에 있는 {id} 값을 이용하겠다는 내용이다.
@GetMapping("/users/{id}")
@ResponseBody
public User getUserById(@PathVariable Long id) {
return userService.findById(id);
}
위 코드에서 @ResponseBody는 제이슨 데이터로 전달하겠다는 의미이다.
@RequestParam는 넘어오는 파라미터를 사용할 수 있도록 해준다 이때 넘어오기 전 사용한 필드 이름하고 같아야 한다.
@PostMapping("/submit")
public String submitForm(@RequestParam("username") String username, @RequestParam("password") String password) {
// 폼 데이터를 받아와서 처리하는 로직
return "successView";
}
@RequestParam 대신 vo객체를 이용하면 코드를 줄일 수 있다.
스프링은 vo 객체에 자동으로 할당해 준다.
@RequestMapping("/signUpConfirm")
public String signUpConfirm(@RequestParam String m_id,@RequestParam String m_pw,
@RequestParam String m_mail,@RequestParam String m_phone) {
System.out.println("멤버변수출력");
System.out.println(m_id);
return null;
}
vo 객체 사용
@RequestMapping("/signUpConfirm")
public String signUpConfirm(MemberVo memberVo) {
System.out.println("멤버변수출력");
System.out.println(memberVo.getM_id());
System.out.println(memberVo.getM_mail());
System.out.println(memberVo.getM_phone());
System.out.println(memberVo.getM_pw());
memberService.signUpConfirm(memberVo);
return "home";
}
vo 객체 코드
public class MemberVo {
String m_id;
String m_pw;
String m_mail;
String m_phone;
게터 세터 ~~~
}
Service
사용자가 요청한 컨트롤러가 실행되면 컨트롤러는 서비스 객체를 이용한다.
@Service
public class MemberService {
@Autowired
MemberDao memberDao;
public int addUser(MemberVo memberVo) {
서비스 내용
memberDao.insertMember(memberVo);
return 0;
}
}
@Service 이걸 이용해서 스프링 컨테이너에 빈 객체를 생성할 수 있다.
컨트롤러 코드에 @Autowired를 사용하여 빈을 쉽게 사용할 수 있다.
@Autowired
MemberService memberService;
DAO
애플리케이션과 데이터베이스 또는 다른 데이터 저장소 간의 데이터 액세스를 추상화하는 역할을 합니다.
간단히 말하면 실제로 DB와 연결하여 DB의 데이터를 수정할 수 있도록 해주는 메서들이 담겨 있는 곳이다.
@Component
public class MemberDao {
private Map<String, MemberVo> memberDB= new HashMap<String, MemberVo>();
public void addUser(MemberVo memberVo) {
System.out.println("삽입");
System.out.println(memberVo.getM_id());
System.out.println(memberVo.getM_mail());
System.out.println(memberVo.getM_phone());
System.out.println(memberVo.getM_pw());
memberDB.put(memberVo.getM_id(), memberVo);
//위 부분은 실제로 db를 사용할때 쿼리문을 사용해서 db로 에 값을 집어넣을수 있다
}
}
}
실재 jdbc template를 이요한 코드
@Repository
public class MemberDao {
private final JdbcTemplate jdbcTemplate;
@Autowired
public MemberDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void addUser(MemberVo memberVo) {
String query = "INSERT INTO members (m_id, m_mail, m_phone, m_pw) VALUES (?, ?, ?, ?)";
jdbcTemplate.update(query, memberVo.getM_id(), memberVo.getM_mail(), memberVo.getM_phone(), memberVo.getM_pw());
}
}
@Repository 어노테이션은 해당 클래스가 데이터 액세스 계층의 일부임을 나타냅
'자바 공부 > 스프링공부' 카테고리의 다른 글
토이프로젝트 sns 만들어보기 1 (0) | 2024.05.26 |
---|---|
리액트 스프링부트를 이용한 토이프로젝트 및 공부 (0) | 2024.05.19 |
JDBCTemplate 사용하기 (0) | 2024.05.13 |
자동으로 의존 객체 주입하기 (0) | 2024.05.10 |
스프링 DI,IOC 사용해보기 (0) | 2024.05.09 |