스프링으로 JSP 뷰 페이지 열기
@RequestMapping 애노테이션을 사용해 매핑을 해보자
◆전체 패키지 및 파일 구조
- pom.xml : 스프링 프로젝트 바로 아래
- web.xml : WEB-INF 폴더
- xml 파일 : src/main/resources
- java 파일 :src/main/java
pom.xml
jsp 뷰 페이지를 띄울 수 있도록 <dependency> 코드를 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>sp4</groupId>
<artifactId>springTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>utf-8</encoding>
<failOnMissingWebXml>true</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
spring-mvc.xml
뷰 페이지를 주소를 지정하는 설정파일
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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">
<!-- 뷰페이지 등록 -->
<mvc:view-resolvers>
<mvc:jsp prefix="/WEB-INF/view/"/>
</mvc:view-resolvers>
</beans>
spring-controller.xml
뷰를 매핑하는 컨트롤러(자바파일)를 지정하는 설정파일
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- 컨트롤러 등록 -->
<bean class="test01.HelloController" />
</beans>
HelloController.java
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello(Model model, @RequestParam(value = "name", required = false) String name) {
model.addAttribute("helloWorld", "NAME = [" + name + "]");
return "hello";
}
}
@Controller : 컨트롤러 애노테이션을 적어 스프링이 관리하도록 지정
@RequestMapping : 요청처리할 주소값 지정. 예를들어, hello 라는 값으로 들어온 요청을 처리한다.
Model : 컨트롤러의 처리결과를 뷰에 전달하기 위한 객체
@RequestParam : http 파라미터로 들어온 값을 처리하도록 지정
- value : 파라미터 명
- required : 필수여부 지정 (true/false)
String name : 그냥 변수
.addAttribute : 모델(뷰에 전달할 객체)에 다음 내용을 추가하기
- 1 : "helloWorld" 라는 이름으로
- 2 : "NAME = [" + name + "]" 내용 추가
return "hello" : 뷰 페이지 중에 hello 라는 페이지를 찾는다.
(아래에 작성하게 될 hello.jsp 에 model을 전달한다는 의미)
web.xml
스프링을 위한 설정파일
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring-mvc.xml
classpath:spring-controller.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>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<servlet> : dispatcher 라는 서블릿을 등록하면서, 해당 서블릿이 필요로 하는 spring-mvc.xml 과 spring-controller.xml 설정을 추가해준다.
<filter> : 특정 url로 요청이 들어오는 경우 적용될 필터를 설정한다. 위 코드의 경우 모든 요청(/*)에 대해 UTF-8 인코딩을 적용하도록 설정했다.
hello.jsp
처리된 요청을 보여주는 뷰
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hello</title>
</head>
<body>
<h1>${helloWorld}</h1>
</body>
</html>
${ } 태그를 사용해 helloWorld 안에 들어간 값을 가져온다.
서버를 가동해 다음과 같은 주소 요청을 보내면 결과를 확인할 수 있다.
name 파라미터에 아무런 값을 지정하지 않았기 때문에 null 이 나온다.
파라미터에 값을 지정해 주소를 요청하면 다음과 같은 결과를 확인할 수 있다.
'웹 개발 > Spring' 카테고리의 다른 글
[Spring] web.xml 작성, 컨트롤러 등록, URL 매핑 테스트 (0) | 2021.11.19 |
---|---|
[Spring] Eclipse 에서 Maven 프로젝트 생성하기(+pom.xml) (0) | 2021.11.19 |
[Spring] maven - pom.xml 파일 dependency 주입코드 작성 (0) | 2021.11.11 |
[Spring] web.xml (sample) (0) | 2021.11.11 |
[Spring] pom.xml (sample) (0) | 2021.11.11 |