일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 어윈 사용법
- GRANT VIEW
- 정수형타입
- Java
- 참조형변수
- 메소드오버로딩
- 자동차수리시스템
- 인터페이스
- 객체 비교
- 예외처리
- 예외미루기
- 컬렉션프레임워크
- EnhancedFor
- 제네릭
- 자바
- 한국건설관리시스템
- cursor문
- abstract
- 집합_SET
- NestedFor
- 환경설정
- 대덕인재개발원
- 생성자오버로드
- 추상메서드
- oracle
- exception
- 사용자예외클래스생성
- 컬렉션 타입
- 다형성
- 오라클
- Today
- Total
거니의 velog
(20) 스프링 애너테이션 기능 3 본문
(3) @RequestParam 이용해 Map에 매개변수 값 설정하기
* 전송되는 매개변수의 수가 많을 경우 일일이 변수를 저장해서 사용하려면 불편하다. 이번에는 전달되는 매개변수 값들을 Map에 저장해 보자.
1. LoginController 클래스를 다음과 같이 작성한다. @RequestParam Map<String, Stirng> info는 이름이 info인 Map에 매개변수 이름을 key로, 매개변수 값을 value로 저장하는 구문이다.
@RequestMapping(value = "/test/login3.do", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView login3(@RequestParam Map<String, String> info, // @RequestParam을 이용해 Map에 전송된 매개변수 이름을 key, 값을 value로 저장한다.
HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("utf-8");
ModelAndView mav = new ModelAndView();
String userID = info.get("userID");
String userName = info.get("userName"); // Map에 저장된 매개변수의 이름으로 전달된 값을 가져온다.
System.out.println("userID: "+userID);
System.out.println("userName: "+userName);
mav.addObject("info", info); // @RequestParam에서 설정한 Map 이름으로 바인딩한다.
mav.setViewName("result");
return mav;
}
2. 결과창에서 바인딩한 속성 이름으로 출력한다.
[result.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
<%-- <h1>아이디 : ${userID }</h1>
<h1>이름 : ${userName }</h1> --%>
<h1>아이디 : ${info.userID }</h1> <!-- Map에 key로 접근하여 값을 출력한다. -->
<h1>이름 : ${info.userName }</h1>
</body>
</html>
3. 로그인창에서 아이디와 이름을 입력한 후 로그인을 클릭하면 /test/login3.do로 요청하여 결과를 출력한다.
- http://localhost:8090/pro26/test/loginForm.do
(4) @ModelAttribute 이용해 VO에 매개변수 값 설정하기
* 이번에는 여러 개의 매개변수를 전달해 보자. 우선 @ModelAttribute를 이용해 VO 클래스의 속성에 매개변수 값이 자동으로 설정되도록 해보자.
1. LoginController 클래스를 다음과 같이 작성한다. @ModelAttribute("info") LoginVO loginVO는 전달된 매개변수에 대해 LoginVO 클래스 객체를 생성한다. 이어서 매개변수 이름과 같은 속성에 매개변수 값을 설정한 후 info 이름으로 바인딩한다. 예를 들어 로그인창에서 전달된 매개변수 이름이 userID이고, 값이 hong일 경우, @ModelAttribute로 LoginVO를 지정하면 전달 시 LoginVO의 속성 userID에 전달된 값 hong을 자동으로 설정해 준다.
@RequestMapping(value = "/test/login4.do", method = { RequestMethod.GET, RequestMethod.POST })
public ModelAndView login4(@ModelAttribute("info") LoginVO loginVO, // @ModelAttribute를 이용해 전달되는 매개변수 값을 LoginVO 클래스와 이름이 같은 속성에 자동으로 설정한다. addObject()를 이용할 필요 없이 info를 이용해 바로 JSP에서 LoginVO 속성에 접근할 수 있다.
HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("utf-8");
ModelAndView mav = new ModelAndView();
System.out.println("userID: "+loginVO.getUserID());
System.out.println("userName: "+loginVO.getUserName());
mav.setViewName("result");
return mav;
}
2. LoginVO 클래스를 다음과 같이 작성한다. 로그인 창에서 입력한 ID와 비밀번호를 속성에 저장한다.
package com.spring.ex02;
public class LoginVO {
private String userID;
private String userName;
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
3. 로그인 창에 입력한 ID와 비밀번호가 출력되도록 result.jsp를 작성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
<%-- <h1>아이디 : ${userID }</h1>
<h1>이름 : ${userName }</h1> --%>
<h1>아이디 : ${info.userID }</h1>
<h1>이름 : ${info.userName }</h1> <!-- @ModelAttribute("info")에서 지정한 이름으로 속성에 접근한다. -->
</body>
</html>
4. 로그인 창에서 로그인을 하면 ID와 이름을 출력한다.
- http://localhost:8090/pro26/test/loginForm.do
(5) Model 클래스 이용해 값 전달하기
* Model 클래스를 이용하면 메서드 호출 시 JSP로 값을 바로 바인딩하여 전달할 수 있다.
* Model 클래스의 addAttribute() 메서드는 ModelAndView의 addObject() 메서드와 같은 기능을 한다. Model 클래스는 따로 뷰 정보를 전달할 필요가 없을 때 사용하면 편리하다.
1. LoginController 클래스를 다음과 같이 작성한다.
@RequestMapping(value = "/test/login5.do", method = { RequestMethod.GET, RequestMethod.POST })
public String login5(Model model, // 메서드 호출 시 Model 클래스 객체를 생성한다.
HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("utf-8");
model.addAttribute("userID", "hong");
model.addAttribute("userName", "홍길동"); // JSP에 전달할 데이터를 model에 addAttribute() 메서드를 이용해서 바인딩한다.
return "result";
}
2. 로그인창에서 입력한 ID와 비밀번호가 출력되도록 result.jsp를 작성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
<h1>아이디 : ${userID }</h1>
<h1>이름 : ${userName }</h1>
</body>
</html>
3. 다음은 로그인창에서 요청한 실행 결과이다.
- http://localhost:8090/pro26/test/loginForm.do
'Java_Spring Framework part1' 카테고리의 다른 글
(21) 스프링 애너테이션 기능 4 (0) | 2023.11.13 |
---|---|
(19) 스프링 애너테이션 기능 2 (0) | 2023.11.11 |
(18) 스프링 애너테이션 기능 1 (0) | 2023.11.11 |
(17) 스프링 트랜잭션 기능 사용하기 2 (0) | 2023.11.11 |
(16) 스프링 트랜잭션 기능 사용하기 1 (0) | 2023.11.11 |