본문 바로가기
Spring

230201 Spring @Controller, @RequestMapping 실습

req_quiz01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<hr>
	<%--
	맵핑
	1.RequestController에 현재 파일의 화면 처리를 하는 메서드를 생성.
	2.폼 전송을 처리하는 메서드 생성(login맵핑 - POST만 허용)
	3.아이디가 abc123, 비밀번호가 xxx123이라면 req_quiz01_ok.jsp 로 화면 이동
	4.아니라면 req_quiz01_no.jsp로 화면이동 
	--%>

	<form action="login" method="post">
		ID:<input type="text" name="id"><br>
		PW:<input type="password" name="pw"><br>
		<input type="submit" value="로그인" >
	</form>
	
	
</body>
</html>

req_quiz01_ok에는 <h2>로그인성공..</h2>가, req_quiz01_no에는 <h2>아이디 비밀번호를 확인하세요</h2>가 있다.

 

 


RequestController.java

package com.simple.controller;

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


@Controller
@RequestMapping("/request") //메서드 앞에 공통으로 들어가는 요청경로
public class RequestController {

	//실습
	@RequestMapping("/req_quiz01")
	public void quiz01() {
	}
	
	//폼 요청
	@PostMapping("/login")
	public String login(@RequestParam(value="id", required = false,defaultValue = "")String id,
    		@RequestParam(value="pw",required = false,defaultValue = "")String pw) 
   	{
	   return id.equals("abc123")&&pw.equals("xxx123")? "request/req_quiz01_ok":"request/req_quiz01_no";
	}
	
	
}

화면을 그리는 메서드를 우선 생성

 

요청받는건 post로 제한되었으니 @PostMapping사용

@RequestParam은 아이디와 비밀번호를 입력하지 않으면 안되기 때문에 value만 주어도 되지만 추가로 주었다.

return을 통해 조건에 맞으면 ok로, 아닐 경우 no로.

 

아이디와 비밀번호가 일치해야 ok페이지로 이동

 

+)이때, 화면을 그리는 걸 @RequestMapping으로 생성하였고, 이동을 @PostMapping으로 하였기 때문에

form의 action경로와 두 경로가 모두 일치해도 정상적으로 작동한다. 값이 있는가에 따라 다르게 적용된다.

만...굳이 똑같이 할 필요는 없을 듯.