일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Thymeleaf
- mysql
- Controller
- Board
- rpa
- SpringBoot
- 이클립스
- 배열
- Uipath
- Array
- View
- jquery
- Oracle
- jsp
- Scanner
- db
- html
- 상속
- API
- React
- 조건문
- Database
- JDBC
- MVC
- 문자열
- Eclipse
- Java
- git
- spring
- string
- Today
- Total
유정잉
Spring MVC와 JSP를 이용 본문
✅ Spring MVC는 클라이언트 요청을 처리하고, JSP(View)로 데이터를 넘겨주는 구조!
✅ @RequestMapping을 사용해서 URL과 컨트롤러(Controller) 메서드를 연결!
✅ JSP 파일과 연결하는 과정을 직접 코드로 확인해보자!
🔥 1️⃣ Spring MVC 기본 구조 (Model-View-Controller)
✅ Spring MVC 흐름
[1] 클라이언트 요청 → [2] DispatcherServlet(Spring) →
[3] Controller(@RequestMapping) → [4] Service(비즈니스 로직) →
[5] Model(데이터 저장) → [6] View(JSP)로 데이터 전달 →
[7] 클라이언트에게 응답
✅ Controller가 요청을 받아서 처리하고, JSP(View)에 데이터를 넘겨줌!
✅ 즉, Controller → JSP 순서로 데이터를 전달하는 과정!
🔥 2️⃣ Spring MVC 프로젝트 구조
📌 JSP 파일을 사용하는 Spring MVC 프로젝트의 기본적인 디렉토리 구조
/src/main/java/com/example/controller/HomeController.java (Controller)
/src/main/webapp/WEB-INF/views/home.jsp (JSP 파일)
/src/main/webapp/WEB-INF/web.xml (Spring 설정)
/src/main/resources/application.properties (설정 파일)
✅ Controller에서 요청을 처리하고, JSP(View)로 데이터를 넘김
✅ JSP 파일은 WEB-INF/views/ 폴더에 저장됨
🔥 3️⃣ 프로젝트 설정 (Spring MVC + JSP 설정)
💡 Spring MVC 프로젝트를 설정하려면 web.xml과 dispatcher-servlet.xml 설정이 필요!
✅ (1) web.xml 설정 (DispatcherServlet 등록)
📌 Spring MVC의 핵심 역할을 하는 DispatcherServlet을 등록
<web-app>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
✅ Spring MVC에서 모든 요청을 DispatcherServlet이 받아서 처리하도록 설정!
✅ dispatcher-servlet.xml에서 세부 설정을 정의할 예정!
✅ (2) dispatcher-servlet.xml 설정 (View Resolver 등록)
📌 컨트롤러에서 반환한 View 이름을 JSP 파일로 연결해주는 설정
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- Spring MVC 활성화 -->
<mvc:annotation-driven />
<!-- View Resolver 설정 (JSP 파일 경로 지정) -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
✅ Controller에서 return "home";을 하면 /WEB-INF/views/home.jsp로 이동!
✅ JSP 파일을 WEB-INF/views/ 폴더에 저장하는 이유?
- 사용자가 직접 JSP 파일에 접근하는 것을 방지하기 위해! (http://localhost:8080/WEB-INF/views/home.jsp 직접 접근 불가능)
🔥 4️⃣ @RequestMapping을 이용한 Controller 구현
💡 클라이언트 요청을 받아서 JSP로 데이터를 넘겨주는 역할
✅ (1) HomeController.java (Controller)
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller // Controller 역할을 하는 클래스
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {
model.addAttribute("message", "Spring MVC + JSP 프로젝트!"); // 데이터를 JSP로 전달
return "home"; // home.jsp로 이동
}
}
✅ 클라이언트가 http://localhost:8080/ 요청하면 home.jsp가 실행됨!
✅ model.addAttribute("message", "Spring MVC + JSP 프로젝트!") → JSP로 데이터 전달!
🔥 5️⃣ JSP 파일 생성 (home.jsp)
📌 JSP 파일에서 model.addAttribute()로 전달된 데이터를 출력할 수 있음!
✅ (1) home.jsp (View)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Spring MVC Home</title>
</head>
<body>
<h1>Spring MVC + JSP 연동 예제</h1>
<p>메시지: ${message}</p> <!-- Controller에서 전달된 데이터 출력 -->
</body>
</html>
✅ Controller에서 전달한 데이터 ${message}를 출력할 수 있음!
✅ 즉, model.addAttribute("message", "Spring MVC + JSP 프로젝트!") 값이 home.jsp에서 사용됨!
🔥 6️⃣ 실행 결과 (http://localhost:8080/ 요청 시)
----------------------------------------
| Spring MVC + JSP 연동 예제 |
| 메시지: Spring MVC + JSP 프로젝트! |
----------------------------------------
✅ 클라이언트가 / 요청하면 home.jsp가 실행되면서 Controller에서 넘긴 데이터가 표시됨!
🔥 7️⃣ 추가 기능 (폼 입력 후 데이터 전달)
💡 사용자가 입력한 데이터를 Controller에서 받아서 처리한 후 JSP로 출력하는 예제
✅ (1) home.jsp 수정 (폼 추가)
<form action="/submit" method="post">
<input type="text" name="username" placeholder="이름 입력">
<button type="submit">전송</button>
</form>
✅ 사용자가 입력한 username 값을 /submit 경로로 POST 방식으로 전송
✅ (2) HomeController.java 수정 (폼 데이터 처리)
@RequestMapping(value = "/submit", method = RequestMethod.POST)
public String submitForm(@RequestParam("username") String username, Model model) {
model.addAttribute("message", "안녕하세요, " + username + "님!");
return "home";
}
✅ 폼 데이터를 받아서 model.addAttribute()로 JSP에 전달!
✅ 사용자가 입력한 이름이 JSP에서 출력됨!
🔥 결론
1️⃣ Spring MVC는 DispatcherServlet이 클라이언트 요청을 받아서 Controller로 전달!
2️⃣ Controller에서 @RequestMapping을 사용하여 요청을 처리하고, JSP(View)로 데이터를 넘김!
3️⃣ View Resolver 설정을 통해 return "home";을 WEB-INF/views/home.jsp로 연결!
4️⃣ 폼 데이터를 Controller에서 받아서 다시 JSP로 전달하는 과정도 가능! 🚀
'개발자 공부 > ♡ Spring XML' 카테고리의 다른 글
Spring MVC + MyBatis로 데이터 화면에 출력! Entity, Controller, Service, Mapper, JSP (0) | 2025.02.04 |
---|---|
@RequestParam vs @PathVariable vs @RequestBody (0) | 2025.02.04 |
@Autowired, @Qualifier("이름"), @Resource(name="이름") (0) | 2025.02.04 |
@ComponentScan과 @Bean의 차이점 (0) | 2025.02.04 |
Spring의 의존성 주입(DI) 4가지 방식 [ @Autowired, 생성자, 컬렉션, Setter ] (1) | 2025.02.03 |