2020. 9. 3. 21:22ㆍJava/Spring
XML을 이용하여 MVC 환경을 세팅하는 방법을 알아보도록 한다.
@RequestMapping(value="/",method = RequestMethod.GET)
public String home() {
System.out.println("home");
return "index";
}
프로젝트를 생성하고 이전 포스트에서 작성한 pom.xml을 붙여 넣는다.
그리고 WebContent -> WEB-INF 에 web.xml을 생성한다.
다음과 같이 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<!-- 현재 웹 어플리케이션에서 받아들이는 모든 요청에 대해 appServlet 이라는 이름으로 정의되어 있는 서블릿을 사용하겠다. -->
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
모든 실행에 대해서 springframework.web.servlet.DispatcherServlet로 실행한다.
indexs.jsp를 찾아서 실행한다고 보면 된다.
WebContent -> index.jsp 를 생성한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h5>index</h5>
</body>
</html>
위 처럼 프로젝트를 클릭하고 실행한다.
루트에서 index.jsp가 실행되면 여기까지 설정이 완료된 것이다.
WebContent -> WEB-INF 에 config 폴더를 생성하고 servlet-context.xml 파일을 생성한다.
해당 파일에서는 spring framework에 대한 설정을 한다.
현재는 따로 작성하지 않고 생성만 한다.
그 후 WebContent -> WEB-INF -> web.xml 을 다음과 같이 수정한다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<!-- 현재 웹 어플리케이션에서 받아들이는 모든 요청에 대해 appServlet 이라는 이름으로 정의되어 있는 서블릿을 사용하겠다. -->
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
추가 후 실행하면 콘솔에 오류가 난다.
servlet-context.xml 에 별다른 코드를 입력하지 않아서 생긴 오류이다.
일단, 파일을 읽었으므로 정상적으로 세팅이 되고 있다.
다음으로 beans를 세팅 할 xml을 config에 만들어준다.(root-context.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">
</beans>
그 후 web.xml에 해당 코드를 작성한다.
<!-- Bean을 정의 할 xml 파일을 지정한다. -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/root-context.xml</param-value>
</context-param>
<!-- 리스너 설정 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
그 후 한글 인코딩을 위한 코드를 추가한다.
<!-- 파라미터 인코딩 필터 설정 -->
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Controller 세팅
controller를 세팅하기 위해 src에 패키지를 새로 만들어준다.(cookingcoding.controller)
그후 servlet-context.xml 파일에 다음과 같이 추가한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 스캔한 패키지 내부의 클래스 중 Controller 어노테이션을 가지고 있는 클래스를 Controller로 로딩하도록 한다. -->
<annotation-driven/>
<!-- 스캔할 bean들이 모여있는 패키지를 지정한다. -->
<context:component-scan base-package="cookingcoding.controller"/>
</beans:beans>
생성한 controller 패키지에 HomeController 클래스를 생성한다.
해당 클래스를 다음과 같이 작성한다.
@Controller
public class HomeController {
@RequestMapping(value="/",method = RequestMethod.GET)
public String home() {
System.out.println("home");
return null;
}
}
/ 로 들어갔을 시 home 메소드를 실행시킨다.
기존에 생성한 index.jsp를 삭제하고 실행시킨다.
500 에러가 뜨면서 home이 출력된다.
HomeController 클래스에 다음과 같이 추가하고 실행한다.
@RequestMapping(value="/test",method = RequestMethod.GET)
public String test() {
System.out.println("test");
return null;
}
그 후 /test에 접속하면 다음과 같은 콘솔이 확인 가능하다.
View 설정
WEB-INF에 views 폴더를 생성한다.
그 안에 index.jsp를 생성한다.
그 후 HomeController 클래스의 home 메소드를 다음과 같이 수정한다.
@RequestMapping(value="/",method = RequestMethod.GET)
public String home() {
System.out.println("home");
return "/WEB-INF/views/index.jsp";
}
해당 주소 입장시 메소드를 실행하고 index.jsp를 반환한다.
페이지와 콘솔 모두 잘 나오는 것을 확인한다.
HomeController의 반환값에서 중복될 것들이 많기에 중복을 줄여준다.
servlet-context.xml에 다음을 추가한다.
<!-- Controller의 메서드에서 반환하는 문자열 앞 뒤에 붙힐 경로를 세팅한다. -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
그 후 HomeController 클래스의 home 메소드의 리턴 값을 다음과 같이 수정하면 정상 작동한다.
@Controller
public class HomeController {
@RequestMapping(value="/",method = RequestMethod.GET)
public String home() {
System.out.println("home");
return "index";
}
정적파일(이미지,js,css) 경로 설정
해당 파일들을 보관할 resources 폴더를 WebContent에 생성한다.
servlet-context.xml에 다음을 추가한다.
<!-- 정적파일 경로 세팅 -->
<resources mapping="/**" location="/resources/"></resources>
그 후 resources 폴더에 image 폴더를 만들어 이미지를 한 개 넣는다.
다음과 같이 index.jsp를 작성하고 실행한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>index</h3>
<img src="image/1.png">
</body>
</html>
이미지 로딩까지 완료! 여기까지가 xml을 이용한 세팅은 끝이다.
다음장에서는 java의 어노테이션을 이용한 세팅을 해보자!
'Java > Spring' 카테고리의 다른 글
Spring MVC - URL Mapping (0) | 2020.09.05 |
---|---|
Spring MVC - 기본세팅(3) - JAVA (0) | 2020.09.04 |
Spring(MVC) - 기본세팅(1) (0) | 2020.09.02 |
Spring - mybatis (0) | 2020.09.01 |
Spring - JDBC(mysql) (0) | 2020.09.01 |