자바 언어를 기반으로 한 오픈소스 프레임워크입니다. 스프링은 자바 엔터프라이즈 개발에 필요한 기능을 제공하며, IoC(Inversion of Control) 컨테이너와 AOP(Aspect Oriented Programming) 등의 기능을 포함하고 있습니다. 스프링을 사용하면 자바 언어로 웹 어플리케이션을 개발할 때 많은 부분을 자동화할 수 있습니다.
스프링은 다양한 모듈로 구성되어 있으며, 각 모듈은 다음과 같은 기능을 제공합니다.
스프링의 주요 특징은 다음과 같습니다.
따라서, 스프링은 자바 언어로 웹 어플리케이션을 개발하기 위한 필수적인 기술 중 하나로, 많은 개발자들이 사용하고 있습니다.
※ 자바가 설치되어 있어야함.
스프링 설치방법 두가지
Eclipse or STS
Eclipse
STS 플로그인 추가 설치 후 사용
STS
Eclipse와 별도로 다운로드 및 압축 해제
About Eclipse IDE(버전 확인)
관리자 권한으로 이클립스 재실행후 설치 진행
현재 버전 확인(4.8)
Help - Install New Software...
Add... - Add Repository 아래 스크린샷과 같이 작성 후 Add
name은 본인이 임의로 작성
Location에 복사해서 넣기
http://download.springsource.com/release/TOOLS/update/e4.8
Select All - Next >
Next를 누르면 설치가 진행된다.
동의후 Finish
하단에 Installing Software 설치되고 있다고 알려줌.
어쨋든 설치 클릭
Select All 후
Restart Now 클릭 하면 재시작하면서 설치가 완료된다.
설치가 완료된 모습
File - Open Projects from File System... 클릭
Directory... 클릭
Spring 예제 파일을 추가
파일이 추가된 것을 확인할 수 있다.
main : 구현하는 곳
resources
src/main/java/org/hj/controller : controller가 있는 위치 controller는 진입점
src/main/java/org/hj/model : model의 위치
MVC패턴을 사용해 업무분담을 위해서 위와 같이 폴더를 구성하고 사용한다.
스프링 프로젝트 생성
File-New-Spring Legacy Project
프로젝트명 작성(팀으로 작업하는 경우 프로젝트 명을 통일시켜줘야 한다.),
현재는 projectEx로 예제를 보는 중
패키지명 생성
ex) org.hj.controller
만들게 되면 아래와 같이 생성된다.
기본적으로 HomeController.java가 생성되며,
패키지를 더 만들어서 작업이 필요하다면 생성하는 것도 가능하다.
Controller(진입점)을 반드시 거쳐서 실행해야한다.
프로젝트를 선택후 우클릭 Run As - Run On Server
Next
아래와 같은 화면이 나타날것이다.
실행할 작업영역을 ADD를 누르거나 더블클릭으로 오른쪽으로 이동시켜주자.
실행했을때 다음과 같은 오류가 발생한다면
src/main/webapp/WEB-INF/spring/root-context.xml 파일 실행
url 경로와 Username과 password를 확인해주자
확인했다면 수정하고 저장
그래도 오류가 터진다면
C:\Users\GR.m2\repository
경로에 있는 파일을 다 지워주고 이클립스 재시작하면 파일을 자동으로 다시 받게된다.
jstl을 workspace에 넣고 Maven update(갱신)를 해주자
마지막으로 Clean눌러주고
http://localhost:8080/서버이름(도메인)
더블클릭
Edit을 눌러서 Path를 수정할 수 있습니다.
/ 만 넣어서 localhost:8080 으로 변경 , localhost:8080뒤만 수정 할 수 있다.
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 https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<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>
<context:component-scan base-package="org.hj.controller" />
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver">
</beans:bean>
</beans:beans>
Controller는 Spring MVC에서 요청을 받아들이고, 처리할 Service와 DAO를 호출한 후, 결과를 Model에 담아 View에 전달하는 역할을 합니다. View는 일반적으로 JSP 페이지로 구성되며, Controller가 전달한 Model 객체의 데이터를 화면에 표시합니다.
따라서, Controller와 JSP는 서로 밀접한 관계가 있습니다. Controller는 사용자가 요청한 URI를 분석하고, 해당 요청을 처리하기 위한 비즈니스 로직을 실행한 후, 결과를 Model에 담아 JSP에 전달합니다. JSP는 Model 객체의 데이터를 화면에 표시하고, 사용자에게 결과를 제공합니다.
이러한 관계에서, JSP는 HTML과 Java 코드를 함께 사용할 수 있는 동적인 페이지로 작성됩니다. JSP는 HTML과 같은 정적인 페이지와 달리, Java 코드를 사용하여 동적으로 데이터를 생성하고, 화면에 표시할 수 있습니다. JSP는 일반적으로 View를 담당하는 역할을 하지만, Controller와 Model 객체와 함께 작동하여 전체 Spring MVC 애플리케이션에서 중요한 역할을 합니다.
즉, Controller와 JSP는 Spring MVC에서 함께 동작하여 사용자의 요청을 처리하고, 데이터를 화면에 표시하는 데 중요한 역할을 합니다. 이를 통해 사용자가 애플리케이션을 사용하는 데 있어서 좀 더 직관적이고 편리한 환경을 제공할 수 있습니다.
Spring MVC에서 URL 규칙은 일반적으로 다음과 같습니다.
요청 URL이 들어오면, DispatcherServlet이 해당 요청을 처리합니다.
DispatcherServlet은 HandlerMapping을 사용하여 적절한 Controller를 찾습니다.
Controller는 요청을 처리하고, 결과를 Model 객체에 담아 View 이름을 반환합니다.
DispatcherServlet은 ViewResolver를 사용하여 View를 찾습니다.
View는 Model 객체를 사용하여 요청 결과를 생성하고, 클라이언트에게 전송합니다.
URL 규칙은 다음과 같이 정의될 수 있습니다.
요청 URL은 일반적으로 다음과 같은 형식으로 구성됩니다.
http://<hostname>:<port>/<context>/<servlet>/<path>
context는 애플리케이션 이름이며, web.xml 파일에서 설정할 수 있습니다.
servlet은 DispatcherServlet의 이름이며, web.xml 파일에서 설정할 수 있습니다.
path는 Controller에서 처리할 요청 경로입니다. 예를 들어, /board/list는 BoardController에서 list() 메서드를 호출하여 요청을 처리합니다.
Controller에서 반환하는 View 이름은 일반적으로 다음과 같은 형식으로 구성됩니다.
<prefix><viewName><suffix>
prefix는 ViewResolver에서 사용하는 접두어입니다. 일반적으로 "/WEB-INF/views/"를 사용합니다.
viewName은 Controller에서 반환하는 View 이름입니다.
suffix는 ViewResolver에서 사용하는 접미어입니다. 일반적으로 ".jsp"를 사용합니다.
예를 들어, "/board/list"라는 요청 URL이 들어오면, DispatcherServlet은 BoardController의 list() 메서드를 호출하여 요청을 처리합니다. list() 메서드는 Model 객체에 게시글 목록을 저장하고, "board/list"라는 View 이름을 반환합니다. DispatcherServlet은 ViewResolver를 사용하여 "/WEB-INF/views/board/list.jsp"를 찾고, 이를 사용하여 요청 결과를 생성합니다.
[예제]
실제 실행되는 파일은 빨간색 밑줄로 표시했습니다.
pom.xml에 작성되는 코드는 본인이 임의로 작성하지말고 아래의 링크에서 필요한것만 가져와서 복사해서 사용하면 된다.
https://mvnrepository.com/ 으로 접속
mysql에 필요한 한것이 있다면 mysql로 검색
해당하는 버전클릭후 아래의 Maven을 복사해서 코드를 붙여넣자