티스토리 뷰

Spring

[Spring] RequestMapping Parameter

감자형 2018. 3. 5. 15:11






1. RequestMapping Method(Get,Post Method)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
처리 순서 1. Controller.java
 
@RequestMapping("/index")
 
public String goIndex(){
 
return "index";
 
}
 
=> /index경로로 요청이 들어오면 index.jsp 파일로 넘어가서 처리를 한다.
 
처리 순서 2. index.jsp 
 
<form action="student" method="get">
 
student id :<input type="text" name="id"> <br />
 
<input type="submit" value="전송">
 
</form>
 
=>submit 을 누르면 -> /student로 이동한다
 
처리 순서 3. Controller.java 
 
@RequestMapping(method =RequestMethod.GET value ="/student")
 
// indext.jsp로 부터 요청처리가 들어왔으므로 /student경로에 RequestMapping 처리가 이루어 진다.
 
public String goStudent(HttpServletRequest,Model model){
 
// httpServletRequest는 index.jsp파일에 id값을 받아온다. 
 
System.out.println("RequestMethod.GET");
 
String id = httpServletRequest.getParameter("id");
 
System.out.println("id :" + id);
 
model.addAttribute("studentid ",id);
 
return "student/studentId";
 
}
 
=> Get방식은 get 끼리, Post는 post끼리 받을 수 있음.
 
만약 Request방식이 틀릴경우에는 405 Error 발생
 
* 여기서 Get,Post방식을 둘다 처리하고 싶을 경우
 
위의 코드와 지금 쓰는 코드를 같이 쓰면 get,post를 둘다 표현 할 수 있음.
 
public ModelAndView goStudent(HttpServletRequest){
 
// httpServletRequest는 index.jsp파일에 id값을 받아온다. 
 
System.out.println("RequestMethod.Post");
 
String id = httpServletRequest.getParameter("id");
 
System.out.println("id :" + id);
 
ModelAndView mv = new ModelAndView();
 
mv.setViewName("student/studentId");
 
mv.addObject("studentId",id);
 
return mv;
 
}
 
여기서 get,post방식을 정리하면 get은 Url에 정보를 헤더에 담아 전송하지만, 파라미터값이 보이게 된다.
 
그리고 post방식은 Url에 정보를 바디에 담아 전송하므로 보안적으로 파라미터값이 보이지 않는다.
cs

2. ModelAttribute Annotation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
ModelAttirubute Annotaion 이용시 커멘드 객체의 이름을 개발자가 변경 할 수 있음.
 
예제로 살펴보자)
 
@RequestMpping("studentView")
 
public String studentView(StudentInformation studentInformation){
 
return "studentView";
 
}
 
=> 지금 클래스 이름이 너무길다, 그래서 따로 커멘드 객체의 이름을 바꿔버리고 싶은 경우가 있을 것이다 .
 
@RequestMpping("studentView")
 
public String studentView(@ModelAttribute("StudentInfo") StudentInformation studentInformation){
 
return "studentView";
 
 
=>이렇게 ModelAttribute 어노테이션을 사용하게 될경우 StudentInformation -> StudentInfo로 커멘드 객체의 이름을 변경할 수 있다.
 
그러면 이제 .jsp파일에서 변경된 StudentInfo를 사용서 객체를 참조할 수 있음
 
(닉네임이라고 생각하면 편함)
 
.JSP 파일의 내용
 
name : ${StudentInfo.name}
 
id : ${studentInfo.id}
 
pw : ${studentInfo.pw}
 
email :${studentInfo.email}
 
혹시 한글이 깨질경우에는 => web.xml파일에 utf파일형식을 붙여넣기한후, index.jsp파일의 인코딩타입을 바꿔준다 utf-8으로 그러면 한글 깨짐을 해결 할 수 있음.
cs

3. Redirect Conduct(Proecess)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
다른 페이지로 이동할 때 사용
 
@Controller
 
public class RedirectController{
 
@RequestMapping("/studentConfirm")
 
public String studentRedirect(HttpServletRequest httpServletRequest,Model model){
 
String id = httpServletRequest.getParameter("id");
 
if(id.equals("kgh")){
 
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";
 
}
 
@RequestMapping("/studentURL1")
 
public String studentURL1(Model model){
 
return "redirect:http://localhost:8181/spring_14_3_ex1_springex/studentURL1.jsp";
 
}
 
@RequestMapping("/studentURL2")
 
public String studentURL1(Model model){
 
return "redirect:student/studentURL2.jsp";
 
}
 
}
 
=> Request path 를 모두 써서 사용할 수도 있고, 조건처리문에서 리다이렉트문을 써버리면 편리하다.
 
로그인 처리할때 쓰면 될듯(인증부분)
 
- Class RequestMapping
 
@Controller
 
@RequestMapping("/board")
 
public class HomeController(){
 
}
 
- Method RequestMapping
 
@RequestMapping("/write")
 
model.addAttribute("id","value");
 
return "/board/view";
 
}
 
=> Class, Method RequestMapping 을 하여 조합된 경로를 요청한다 (/board + /write)
 
Path : "/board/write"
 
write는 jsp 파일이다
 
@RequestMapping("/modelAndView/modelView")
 
public ModelAndView modelAndView(){
 
//ModelAndView Create Object
 
ModelAndView mv = new ModelAndView();
 
// Model 객체에 데이터를 담는다.
 
mv.addObject("id","value");
 
// 뷰이름을 설정
 
mv.setViewName("/modelAndView/modelView");
 
return mv;
 
}
 
위와 동일 하게 jsp 파일에 값을 사용하여 출력시킬 수 있음.
 
RequestMapping을 사용할 경우에는 Controller Annotation을 선언 해주어야 한다는것을 잊지말기.
 
@RequestMapping("/board/content")
 
public String content(Model model){
 
model.Addattribute("id","value");
 
값으로 지정한후
 
return "/board/content";
 
}
 
=> board 리턴값으로 경로 받아온후 view.jsp파일에서
 
id 값을 View page Value로 데이터 전달 가능
 
 
cs





공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함