새소식

JAVA 교육/Spring

2019/10/15 Spring 프로젝트생성 및 환경구축 (사칙연산 test)

  • -

Spring

MVC 버전을 배웠으니 이제 MVC버전을 구조화시킨 Spring을 사용하여 프로젝트를 만들어 보자

1. enterprise 선택

 spring 툴에서 enterprise를 보면 javaEE 와 Spring존재 elclipse와 동일하지만 spring을 사용할 수 있다는 차이점이 있다.
 Spring를 선택하여 프로젝트를 생성시켜 보자 

2. 프로젝트 생성

 JSP에서는 Dynamic Web Project로 프로젝트를 생성하는데, Spring은 Spring Legacy Project로 프로젝트를 생성한다

 

패키지 이름을 적고, Templates 에서 Spring MVC Project 를 선택해주었다

 Project Settings에서 package는 3단 이상의 패키지 설정 가능

 

3. 프로젝트 구성

   /basicSpring/src/main/java                           : Java class 저장 폴더
   /basicSpring/src/main/webapp                      : Eclipse WebContent와 동일 기능
   /basicSpring/src/main/webapp/resources         : CSS, JS, Image 등의 리소스
   /basicSpring/src/main/webapp/WEB-INF          : Web 환경 설정 
   /basicSpring/src/main/webapp/WEB-INF/spring : Spring 환경 설정 
   /basicSpring/src/main/webapp/WEB-INF/views  : Spring jsp file

 

※ [Spring 관련 라이브러리(의존성) 검색]

  http://mvnrepository.com

 

Maven Repository: Search/Browse/Explore

Score Data API Last Release on Oct 14, 2019

mvnrepository.com

모듈 1 방식 , 모듈 2 방식은 라이브러리를 해당 사이트를 돌아다니며 다운로드해왔다,

그러나, Spring을 사용하면 위의 사이트에서 해당 사이트를 열어 직접 다운로드할 수 있다.

 

4. maven 설정(라이브러리)

1. [Maven 설정 파일의 생성]

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                              http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository>D:/java0514/maven</localRepository>
    <interactiveMode>true</interactiveMode>
    <usePluginRegistry>false</usePluginRegistry>
    <offline>false</offline>
    <pluginGroups>
        <pluginGroup>org.codehaus.mojo</pluginGroup>
    </pluginGroups>
</settings>

 경로 : D:/java0123/maven/settings.xml

 ▲ 위의 코드에서 <localRepository> 에서 내 개발 폴더인 java0514로 설정을 해주고, 
 그 폴더안에 maven 폴더를 생성하겠다. 이  maven 폴더에 Spring 에서 사용할 lib 넣어둘 장소이니 
 꼭 생성해두고 관리하자

 

2. [STS에서 Maven 환경 설정]

  STS -> Window
       -> Preferences
       -> Maven
       -> User Settings
       -> User Settings : settings.xml 지정

C:\Users\soldesk\. m2\repository

 

 

maven/User Setting 에가서 위에서 생성한 setting.xml 파일을 업데이트 함

 

5. Spring의 Contoller

1.web.xml

  서블릿을 등록하기위한 web.xml의경로는 Dynamic project 하고 다르게 위치 함
  web.xml을 찾아 열어보면 우리가 직접 등록했던 서블릿들이 자동으로 코딩 

DispatcherServlet 은 MVC 버전에서 사용하던 Controller 역할이고, servlet-context.xml은 commend_properties 이다 

 

2. HomeController.java

 

package kr.co.basicspring;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/* 결과확인
	 * http://localhost:8090/basicspring/hello.do
	 */
	@RequestMapping(value = "hello.do", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
	
}
 25 line  RequestMappin 에서 value 값에 hello.do 를 넣어주고 잘 돌아가는지 결과확인을 해보자

 

성공~~~!! .do 명령어가 작동했으니 controller 가 잘 작동.

 

 

3. CalcController.java (add.do)

package kr.co.basicspring.test01;

import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

/*
	스프링 프레임워크 특징
	환경설정이 복잡하다
	어노테이션 방식으로 구성할 수있다
 */
@Controller //해당 클래스는 컨트롤러 기능이다
			//스프링컨테이너(서버)에서 자동으로 객체 생성된다
public class CalcController {

	public CalcController() {
		System.out.println("------------CalcController() 객체생성됨");
	}
	
	//결과확인
	//http://localhost:8090/basicspring/add.do
	//http://localhost:8090/basicspring/add.do?no1=5&no2=8
	//@RequestMapping
	//->요청 명령어 등록
	//->요청 명령어 등록후 실행의 주체는 메소드로 한다. 
	@RequestMapping(value = "/add.do",method=RequestMethod.GET)
	public ModelAndView add(HttpServletRequest req) {
		//사용자가 요청한 값 가져오기
		int no1=Integer.parseInt(req.getParameter("no1"));
		int no2=Integer.parseInt(req.getParameter("no2"));
		System.out.println(no1);
		System.out.println(no2);
		int result=no1+no2;
		
		//view 단으로 이동하기 위한 클래스
		//->Model
		//->ModelAndView
        
		ModelAndView mav=new ModelAndView();
		//View 페이지로 이동
		//servlet-context.xml -> prefix : "/WEB-INF/views/" 
		//servlet-context.xml -> surffix : ".jsp"
		
		// /WEB-INF/views/calcResult.jsp
		// |-------------|----------|----|
		//  prefix        filename   surffix
		mav.setViewName("calcResult");
		
		//공유장소 req영역에 값 올리기
		req.setAttribute("msg", "<h1>두수의 합</h1>");
		req.setAttribute("img", "<img src='resources/images/add.png'>");
		
		req.setAttribute("no1",no1);
		req.setAttribute("no2",no2);
		req.setAttribute("result",result);
		
		return mav;
	}//add() end		
	}//sub() end
}//class end

14 line @Controller  (해당 클래스는 컨트롤러 기능) 스프링컨테이너(서버)에서 자동으로 객체 생성된다

28 line @RequestMapping 이라는 어노테이션(enotation) 을 사용하여 함수를 부를 명령어를 value 에 설정을 해두고,
해당 함수가 받은 방식을  method 에 설정을 해서 함수를 불러온다.

44 line  ModelAndView는 페이지 이동을 할때 사용하는 클래스이며 setViewName 함수로 이동할 수 있다

페이지로 이동할 때는 공유영역에 값을 올리고 이동하자

4. 나머지 뺄셈, 곱셈, 나눗셈 함수를 만들어 사칙연산을 완성해 보자

 

5. 요청 명령어 처리 방법 2

	@RequestMapping("diff.do") //<-GET|POST 둘다 허용
	public ModelAndView diff(@RequestParam("no1") int a,
					         @RequestParam("no2") int b) {
		//두수사이의 차이
		int result=Math.abs(a-b);
		
		ModelAndView mav=new ModelAndView();
		mav.setViewName("calcResult");
		
		mav.addObject("msg","<h1>두수의 차이</h1>");
		mav.addObject("no1",a);
		mav.addObject("no2",b);
		mav.addObject("result",result);
		return mav;
	}//diff() end

※ 요청명령어를 처리하는 메소드 매개변수의 유연성
( @RequestParma("요청변수명") 자료형 변수명  )
-> 사용자가 요청한 값을 직접 변수에 저장가능하다

 

6. 요청 명령어 처리 방법 3

	@RequestMapping("max.do")
	public ModelAndView max(int no1, int no2) {
		//두수중 큰수
		int result=Math.max(no1,no2);
		
		ModelAndView mav=new ModelAndView();
		mav.setViewName("calcResult");
		
		mav.addObject("msg","<h1>두수의 차이</h1>");
		mav.addObject("no1",no1);
		mav.addObject("no2",no2);
		mav.addObject("result",result);
		return mav;
	}//max() end

3) 사용자가 요청한 값을 매개변수로 직접 저장
-> 요청변수명과 매개변수명과 동일해야 한다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.