2015년 7월 24일 금요일

신입SW인력을 위한 실전 자바(Java) 스프링(Spring) 동영상과정 14_@RequestMapping에 대해서

이 게시물은
http://www.wiz.center/244

해당 링크를 청취하고 작성한 글입니다.

본인 이해도 확인을 위해서 작성한 것이니
스프링에 대해서 알고 있다면 쑥 훝어보고 끝내시고

좀 깊게 알고 싶다면 위의 링크부터 시작해서
총 30개 강의로 이루어진 스프링 과정을 청취하세요

1. @RequestMapping 으로 get, post 방법 구별하여 처리하기
   form 변수를 get으로 보내느냐 post로 보내느냐에 따라
   controller단에서 반응하는 method가 틀리게 작성이 가능하다.

index.jsp 에서 form 을 하나 작성하고 아래와 같이 body에 작성한다.

<form action="student" method="get">
student id : <input type="text" name="id"> <br />
<input type="submit" value="전송">
</form>

Controller 에서 다음과 같이 메서드를 작성한다.

//폼 입력 화면으로 요청시 진행
 @RequestMapping("/index")
 public String goIndex() {
  return "index";
 }
//폼에서 입력후 버튼 누르면 student action을 받아 진행
// 이때 RequestMethod 는 get 방식인지 확인한다.(get방식만 받는다)
// 액션값이 같아도 GET 요청만 처리된다.
 @RequestMapping(method = RequestMethod.GET, value = "/student")
 public String goStudent(HttpServletRequest httpServletRequest, Model model) {
  String id = httpServletRequest.getParameter("id");
  model.addAttribute("studentId", id);
  return "student/studentId";
 }


views 밑에 student 폴더를 생성후 그 밑에 students.jsp 파일을
   만들어 내용을 작성한다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>

studentId : ${studentId}

</body>
</html>


http://localhost:8181/ex/index
링크로 실행후 id값에 2 를 입력후 버튼을 누르면
   get 방식이기 때문에
http://localhost:8181/ex/student?id=2
   라고 링크가 변하면서 진행된다.

여기서 form 작성 jsp 에서 method="get" 을
   method="post" 로 변경시에는 실행되지 않는다.

controller 에서 RequestMethod.GET 부분을
    RequestMethod.POST 로 바꾸면 실행되고
   결과 링크는 post 방식이기 때문에
http://localhost:8181/ex/student
   라고 링크에 id 값이 포함되지 않고 전달된다.


2. redirect 키워드
   컨트롤러 단에서 return 시 redirect 라는 키워드를 앞에 붙이면
    view 페이지를 가지 않고
    Controller에서 다시 redirect 다음 주어진 키워드를 찾게된다.

@RequestMapping("/studentConfirm")
 public String studentRedirect(HttpServletRequest httpServletRequest, Model model){
  
  String id = httpServletRequest.getParameter("id");
  if(id.equals("abc")) {
   return "redirect:studentOk";
  }
  return "redirect:studentNg";
 }
 
 @RequestMapping("/studentOk")
 public String studentOk(Model model){
  
  return "student/studentOk";
 }
 
 @RequestMapping("/studentNg")
 public String studentNg(Model model){
  return "student/studentNg";
 }


   여기서 id 라는 값을 받아 해당 값이 abc 면 Controller의
     studentOk 값을 다시 찾아 해당 메서드를 실행하게되고
     그 이외에는 studentNg 값을 찾아 해당 메서드를 실행하여
     해당 Controller 대로 진행하게 된다.
   redirect는 또한 jsp 파일도 직접 지정가능한데 WEB-INF 안에 없는
     파일로는 direct 접근이 가능하다 (WEB-INF 밑에는 Controller로만
     접근가능) 이럴때도 redirect 키워드로 접근할 수 있다.

Controller 단에서 return 값을 다음과 같이 준다.
return "redirect:http://localhost:8181/IDE 에서 설정한 프로젝트명/작성한jsp파일.jsp";

댓글 없음:

댓글 쓰기