본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA/Spring

Dynamic web project Spring MVC패턴: Controller로 화면띄우기

프로젝트를 생성한뒤, pom.xml를 통해 spring프레임워크를 주입했다면 본격적으로 화면을 띠워보자.

*아직이라면 아래 게시물을 참고해 수행한다.

+ Eclipse를 아직설치하지않았다면 이 게시물을 참고한다.

https://standout.tistory.com/1085

 

전자정부프레임워크 설치: 가장쉬운방법 + 게시판띄우기

앞서 전장부프레임워크를 설치할때 다운후 - jdk연결 및 tomcat을 연결하여 게시판을 띄웠었다. https://standout.tistory.com/1071 전자정부프레임워크 egov 게시판 hsql → Oracle DB바꾸기 우선 전자정부프레

standout.tistory.com

 

https://standout.tistory.com/1094

 

JAVA Dynamic Web Project 만들기

new - Dynamic web project *없을경우 other - Dynamic web project next - ... - finish 우선페이지를 하나 띄워보자. webcontent폴더안에 jsp하나를 만들자. 서버시작후 /text.jsp 잘 뜨는지 확인 완료. https://standout.tistory.c

standout.tistory.com

 

https://standout.tistory.com/1104

 

pom.xml 생성하기

pom.xml 생성하기 프로젝트 우클릭 - Configure - Convert to Maven Project - finish https://standout.tistory.com/1103 pom.xml의 역할 pom.xml Maven의 프로젝트 설정파일 의존성관리, 빌드설정, 플러그인 설정등을 정의하는

standout.tistory.com

 

https://standout.tistory.com/1106

 

Maven pom.xml update하기

Maven pom.xml update하기 프로젝트 - Maven - update project - 프로젝트 선택 - 워하는 update체크 - ok update를 하니 pom.xml이 update되며 스프링아이콘이 추가되는것을 확인할 수 있다. perspactive를 바꿔서 한번더

standout.tistory.com

 

https://standout.tistory.com/1105

 

Maven라이브러리 추가하기: Dynamic java web project에 spring 프레임워크 추가하기

Maven라이브러리 링크접속 - 원하는 라이브러리 검색 - 상세페이지 - 다운수가 많은 버전 선택 - Maven textarea 클릭 - 복사완료 https://mvnrepository.com/ 5.3.23 org.springframework spring-context ${org.springframework-ver

standout.tistory.com

 

 

시작하기 앞서, 단 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