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 다음 주어진 키워드를 찾게된다.
여기서 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";
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";
댓글 없음:
댓글 쓰기