본문 바로가기

Java/공부공부

[게시판 만들기 복습]

user -> Controller -> Service -> DAO -> mybatis -> DB

 

[ Controller ]

 

@RequestMapping (value = " ", method = RequestMethod. ~ )

value : 요청받을 url을 설정

method : 어떤 요청으로 받을지 정의  GET, POST, HEAD, OPTIONS, PUT,DELETE, TRACE 

@Controller
public class IndexController {
	
	@RequestMapping(value = "/main", method = RequestMethod.GET)	// /main 이라는 요청이 들어온다면 
	public String main(){		// main() 메소드를 실행시켜
    	...
    	return "main";		// main.jsp 페이지로 반환
    }

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

위처럼 써주면 get방식/post방식 동시에 가능

 


 

이때 요청방식이 포함된 방식으로 아래처럼 선언할 수 있다. 괄호안에 url 기재해주면 된다.

@GetMapping (" ")       Post method 로 RequestMapping

@PostMapping (" ")     Get method 로 RequestMapping

 

여러 요청에 대해서는 @GetMapping (value={"/", "/main"})  중괄호로 한번더 묶어서 기재하면 된다.

@Controller
public class IndexController {

    @GetMapping("/main")
    public String main() {
        ...
    return "main";
    }

    @PostMapping("/main")
    public String main() {
        ...
    return "main";    
    }

 

* HTTP Method GET 방식 vs POST 방식

 클라이언트  =>  서버 형태의 요청방식

GET 방식 : http://main?Key = Value 

POST 방식 : : http://main?

(Http Body에 리소스가 담겨서 전송_데이터의 제한이 없고 유출로부터 안전함)


jsp에서 bno값을 가져와 매개변수로 db까지 보내려면 아래의 방식으로 가져온다. 

@Controller
public class BoardController {

	@GetMapping("/detail")
	public String detail(HttpServletRequest request) {
    	String bno = request.getparameter("bno")
    
    }


@Controller
public class BoardController {
    
	@GetMapping("/detail")
	public String detail(@RequestParam(value = "bno", required = false, defaultValue = "0") int bno){
    
    }

@RequestParam(value = "bno" ~~ ) int bno )

value 값인 "bno"를 가져와서  bno라는 int타입의 변수로 다시 설정해준다.

 

required :  파라미터값 필수 여부

true 가 default(기본값)이기 때문에 파라미터가 없을 시 에러발생.

false 로 설정해주면 파라미터가 없더라도 에러가 안나고 null로 넘어간다. 

 

defualtValue  : 파라미터 값이 없는경우 대신 들어가는 값.

 

@Controller
public class BoardController {

	@GetMapping("/detail")
	public String detail(@RequestParam int bno) {
    
    
    }