스프링 MVC 프로젝트 - urlController

이지윤·2022년 4월 10일
0

MVC 예제 프로젝트

mvc-simple 예제 프로젝트 구성

mvc-simple 예제

스프링 MVC 프로젝트 생성 오류

  • 실습은 윈도우 였지만 글쓴이는 MAC OS를 사용중

    패키지 내용 보기 -> Contents -> Eclipse -> StringToolSuite4.ini

    -vm 아래 한 줄을 추가해준다.

예제 프로젝트 추가 환경 설정

urlController.java 컨트롤러 작성

  • @Controller 지정하면 Component-Scan기능을 통해 urlController를 빈으로 등록
    <urlController.java>
ackage org.tukorea.web.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;

@Controller
public class urlController {
	private static final Logger logger =
		LoggerFactory.getLogger(urlController.class); 
 }

@RequestMapping

  • URL과 컨트롤러 매서드의 매핑을 설정하는 애노테이션
  • 속성 값을 사용해 URL 설정

컨트롤러 메서드 매개변수

  • Model 오브젝트
  • @ModelAttribute 매개변수
  • @PathVariable 매개변수
  • @RequestParam 매개변수
  • @MatrixVariable 매개변수
  • @RequestBody 매개변수

@RequestMapping : 매핑 설정 방식 1

  • URL 경로 내의 변수 값을 @PathVariable 적용 변수로 전달
  • <urlController.java>
 // http://localhost:8080/web/try/thankyou
@RequestMapping(value="/try/{msg}", method = RequestMethod.GET) 
public String getUserTest( @PathVariable("msg") String msg) {
	logger.info(msg);
	logger.info(" /try URL called. then getUserTest method executed."); 
	return "result_a";
}
  • <result_a.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> 
<title>urlController Test</title> 
</head>
<body>
<span>Result A : Hello ${msg}</span>
</body>
</html>

@RequestMapping : 매핑 설정 방식 2

  • 요청 파라미터 값을 @RequestParam 적용 변수로 전달
  • <urlController.java>
// http://localhost:8080/web/tryA?msg=thankyou
@RequestMapping(value="/tryA", method = RequestMethod.GET) 
public String getUserTest1( @RequestParam("msg") String msg ) {
	logger.info(msg);
	logger.info(" /tryA URL called. then getUserTest1 method executed."); 
    return "result_a";
	}
}
  • <result_a.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> 
<title>urlController Test</title> 
</head>
<body>
<span>Result A : Hello ${msg}</span>
</body>
</html>

@RequestMapping : 매핑 설정 방식 3

  • 요청 파라미터 값을 @ModelAttribute 적용 변수로 전달
  • <urlController.java>
// http://localhost:8080/web/tryB?msg=thankyou
@RequestMapping(value="/tryB", method = RequestMethod.GET) 
public String getUserTest2( @ModelAttribute("msg") String msg ) {
	logger.info(msg);
	logger.info(" /tryB URL called. then getUserTest2 method executed."); 
    return "result_b";
}
  • <result_b.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> 
<title>urlController Test</title> 
</head>
<body>
<span>Result B : Hello ${msg}</span>
</body>
</html>

@RequestMapping : 매핑 설정 방식 4

  • @RequestMapping(value={"/tryC", "/tryD"})
    • 배열형태의값을지정할수있음
    • tryC, tryD 양쪽 URL에 대응하는 메서드를 정의할 수 있음
  • 요청 파라미터 값을 @ModelAttribute 적용 변수로 전달
 
// http://localhost:8080/web/tryC?msg=thankyou
@RequestMapping(value={"/tryC", "/tryD"}, method = RequestMethod.GET) public String getUserTest2( @ModelAttribute("msg") String msg ) {
	logger.info(msg);
	logger.info(" /tryB URL called. then getUserTest2 method executed."); 
    return "result_c";
}

HTTP Method: GET과 POST

  • CharacterEncodingFilter -> UTF-8 한글 인식

  • <register.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Register JSP</title>
<link rel = "stylesheet" href = "resource/member.css" type = "text/css"></link>
</head>
<body>
	<div align ="center">
		<header> 학생 정보 등록 </header>
		<form name =form1 action = "http://localhost:8080/web/tryF" method = "post">
			<table>
				<tr><th>LoginID</th><td><input type = "text" name = "id" autofocus placeholder = "공백없이 입력하세요"></td></tr>
				<tr><th>LoginPWD</th><td><input type = "text" name = "paswd" autofocus placeholder = "공백없이 입력하세요"></td></tr>
				<tr><th>YourName</th><td><input type = "text" name = "username" autofocus placeholder = "공백없이 입력하세요"></td></tr>
				<tr><th>StudentNumber</th><td><input type = "text" name = "snum" autofocus placeholder = "공백없이 입력하세요"></td></tr>
			</table>
			<dl>
			<dd><input type = "submit" value = "보내기"></dd>
			<dd><input type = "reset" value = "다시 작성"></dd>
			</dl>
		</form>
	</div>
</body>
</html>
  • <result_info.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Student Information</title>
<link rel = "stylesheet" href = "resource/member.css" type = "text/css"></link>
</head>
<body>
	<div align = "center">
		<header>학생 정보</header><br>
		<c:if test="${student != null}">
			<table>
				<tr>
					<th> LoginID </th><td><c:out value = "${student.id}"/></td>
					<th> LoginPWD </th><td><c:out value = "${student.passwd}"/></td>
					<th> YourName </th><td><c:out value = "${student.username}"/></td>
					<th> StudentNumber </th><td><c:out value = "${student.snum}"/></td>
				</tr>
			</table>
		</c:if>
	</div>
</body>
</html>

컨트롤러 메서드의 반환 값 : 기본적으로 뷰 이름

  • forward, redirect
profile
초보자

0개의 댓글