프로젝트를 생성한뒤, pom.xml를 통해 spring프레임워크를 주입했다면 본격적으로 화면을 띠워보자.
*아직이라면 아래 게시물을 참고해 수행한다.
+ Eclipse를 아직설치하지않았다면 이 게시물을 참고한다.
https://standout.tistory.com/1085
https://standout.tistory.com/1094
https://standout.tistory.com/1104
https://standout.tistory.com/1106
https://standout.tistory.com/1105
시작하기 앞서, 단 3파일만 신경쓰면 됨을 인지하며 편안하게 따라와보자.
1. web.xml에서 dispatcher servlet을 읽으라고 명령하며,
servlet으로 활용될 xml를 생성하여 그 xml이 위치해있는 경로를 연결시킨다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<!--
WEB-INF폴더에 위치한 web.xml에서
listener - contextLoaderListener를 통해 웹애플리케이션 시작시 contextLoaderListener를 등록하고자하며
servlet - init-parm 태그를 통해 설정파일 위치에 있는 xml를 참고한다.
--!>
<!-- web.xml 웹서버에서 사용할 기본적인 설정 -->
<display-name>Board_hardCoding</display-name>
<!-- 웹 애플리케이션 시작시 ContextLoaderListener를 등록한다. -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- dispatcher servlet -->
<!-- contextConfigLocation: Spring 설정파일 위치를 나타낸다. -->
<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/applicationContext.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>
2. applicationContext.xml에 resource, mvc annotation-driven, viewResolver 3개의 설정을한다.
- resources, css/js등을 위한 location 설정
- spring 프레임워크, 보다 간편한 bean 주입을 위한 annotation driven 설정
- 보호되어 있는 WEB-INF폴더안의 화면을 보여주기 위한 ViewResolver 설정
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- resources location설정 -->
<mvc:resources mapping="/resources/**"
location="/resources/" />
<!-- Spring MVC의 애노테이션 기반 컨트롤러를 활성화합니다. -->
<mvc:annotation-driven />
<!-- 컴포넌트 스캔을 통해 지정된 패키지에서 빈으로 등록할 클래스를 찾습니다. -->
<context:component-scan
base-package="com.sanghee.board" />
<!-- ViewResolver -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
위 코드에서 /resource/**라 함은 아래와같이 작성했을때 자동으로 Webcontent안의 resources폴더의 경로로 연결해주며
<link rel="stylesheet" href="/resources/css/style.css">
base-package에 지정된 Java Resource경로안의 class를 빈으로 등록하며
annotation이라 함은 그 파일안에서 @애너테이션을 통해 쉽게 MVC패턴을 구현할 수 있도록 설정함이다.
마지막으로 viewResolver는 view가 위치한 경로를 지정하며 필요에 따라 확장자를 .jsp 지정해 놓을 수 있다.
미리 suffix를 통해 확장자 등을 지정해 놓을 경우 view를 return할때 굳이 쓰지않아도 되니 선택사항이나 하는게 좋겠다.
WEB-INF의 원하는 경로에 view jsp파일을 만들어 준비해두자.
이때의 파일명은 앞서 suffix에 적어놓은 확장자와 같도록 한다.
화면단에 필요한 resources또한 webapp 혹은 WebContent안에 폴더를 생성해 생성 후 이용한다.
java resource 혹은 src 파일안에 패키지를 생성한뒤 class를 하나 만들자.
이때 패키지의 구조는 앞서 설정한 base-package에 맞춰 설정한다.
package com.sanghee.board.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class BoardController {
@RequestMapping(value = {"/", "/board/list.do"})
public String list() {
return "/board/list";
}
@RequestMapping(value = {"/board/sub.do"})
public String sub() {
return "/board/sub";
}
}
그 class는 @Controller 어노테이션으로 Controller임을 알리고
@RequestMapping 어노테이션 속성 value에 원하는 url형식을 지정해 메소드를 생성한다.
원하는 폴더/파일이름(확장자는 제외)을 return한다.
파일을 생성하지않았다면 파일이름만 return 할 수 있다.
각 url에 mapping된 화면이 잘 뜨는지 확인한다.
완료.
'JAVA > Spring' 카테고리의 다른 글
MyBatis: 간단히 DB 연결테스트하기 (0) | 2023.11.06 |
---|---|
JdbcTemplate: 간단히 DB 연결테스트하기 (0) | 2023.11.06 |
Annotation - @Builder (0) | 2023.06.25 |
Annotation - @NoArgsConstructor (0) | 2023.06.25 |
Spring MyBatis와 MyBatis 의 차이 (0) | 2023.06.25 |