Spring 프로젝트 환경설정



Spring 프로젝트 환경설정



Spring 수동 환경설정


[Step 1]

  1. file → new → maven Project 클릭
  2. next → 제일 아래의 maven_archetype-webapp 선택 후 next → groupID 등 입력후 finish

[Step 2]

  1. 프로젝트 설정 내의 Project Facets 꼭 들어가서 runtimesapacheTomcat이 체크되어 있는지 확인.
  2. 해당 창에서 자바 버전과 dynamic webapp 버젼이 10년 전인 1.5와 2.3으로 되어있는것 확인 (나중에 바꿔줄것임. 여기서 콤보박스 내려도 변경 안됨) ※ 프로젝트 세팅 → Resource : 현재 작업하고 있는 프로젝트 파일 경로가 어딘지 알고싶을때.
  3. 해당 프로젝트를 탐색기에서 열고 .settings 폴더 들어가서 org.eclipse.jdt.core.prefs 파일 내 java 버전을 설치된 버전과 일치시킴
  4. org.eclipse.wst.common.project.facet.core.xml 파일 내의 java 버전 변경, jst.web 버전을 3.0으로 변경
  5. 프로젝트 refresh 후 project Facets 들어가서 버전 바뀐것 확인
  6. pom.xml 들어가서 dependency, build 설정
  7. alt + F5 단축키 눌러 뜨는 Update Maven Project 에서 프로젝트 체크 후 하단의 force update of snapshots/releases 꼭 체크하고 OK 하는것을 생활화!
  8. Dependencycom.oracleojdbc6 부분은 라이센스 문제가 있다. 사실 ojdbc12 써도 되는데 라이센스 허용이 6 버전까지 되어있으니 그냥 사용할 것. (6버전도 구동 잘 된다. 안되는걸 찾기가 더 힘듬)

[중간 참고사항]

※ repository가 가끔 깨지는 경우가 있다. 그 경우 C:\Users\MIN\.m2\repository 디렉토리 내의 파일들 삭제하고 다시 maven update 해야 한다.

※ groupId = 폴더 경로
artifactId = 그 폴더 경로내의 프로그램
version = 해당 프로그램의 버젼
(하향식으로 접근 가능)

[Step 3]

  1. C:\Users\MIN\Documents\BIT\Spring\Spring01\src\main\webapp\WEB-INF 내의 web.xml 내의 코드 날린 후 아래 코드 복붙

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>Archetype Created Web Application</display-name>
    
    dispatcher org.springframework.web.servlet.DispatcherServlet 1 dispatcher /

    encodingFilter org.springframework.web.filter.CharacterEncodingFilter encodingUTF-8 encodingFilter /*

    </web-app> ```

[Step 4]

  1. WEB-INF 오른쪽 클릭 → new → file
    file name 인풋창에 적을 파일 명은 dispatcher-servlet.xml 파일 내 코드의 <servlet-name>dispatcher</servlet-name> 부분이 여기와 연관되어 있다.
    해당 dispatcher 부분을 차용해 dispatcher-servlet.xml 로 파일 이름 설정 해준다. (가끔 다른 스프링에서 이 dispatcher 부분의 텍스트가 다른 부분이 있기때문에 숙지 요망)
  2. 해당 dispatcher-servlet.xml에 하단 내용 복붙

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      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
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
      <!-- presentation logic 경로 설정 구문 -->
      <!-- 해당 base-package에 적은 이름으로 pakage name을 설정해 주어야 경로를 찾을 수 있다. -->
      <context:component-scan base-package="pack01" />
    
      <mvc:annotation-driven />
      <mvc:default-servlet-handler />
    
      <mvc:view-resolvers>
    
        <!-- business logic 경로 설정 구문 -->
        <mvc:jsp prefix="/WEB-INF/views/" />
      </mvc:view-resolvers>
    
    </beans>
    
  3. 15번, 21번째 줄 코드 숙지
    15번 : presentation logic 경로 설정 구문 21번 : business logic 경로 설정 구문

  4. index.jsp 내용 삭제후 복붙

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" page import="java.util.*, java.text.*"%> <%@ taglib
    prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
    <head>
      <title>메인 페이지</title>
    </head>
    <body>
      <%=new Date()%>
      <h2>Hello World</h2>
    
      <a href="t1">링크</a>
    </body>
    
  5. Ctrl + F11 눌러서 제대로 실행되면 성공!

[Step 5]

  1. 프로젝트 트리의 src → main 밑에 java폴더 하나 만들기.
    (Java Resources에 있는거 써도 되지만 이번 예제에서는 만든다)
  2. 클래스 파일 생성 → package name에 아까 설정해줬던 pack01 이름으로 설정하고 Tiger.java 생성
  3. 클래스파일은 앞자가 무조건 대문자여야함. 파일 내 내용은 하단 복붙

    package pack01;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    // 해당 @Controller 어노테이션을 입력해주면 Controller 역할을 한다고 알려줌. (없으면 인식 못함)
    // Controller stack에 들어감
    @Controller
    
    // 하나의 라우터
    public class Tiger {
    
      // t1 경로 이벤트
      @RequestMapping("/t1")
      public String func() {
        System.out.printf( "함수 콜\n" );
        return null;
      }
    }
    
  4. \src\main\webapp\WEB-INF 경로에 views 폴더 생성 후, 내부에 TigerView.jsp 파일 생성
    (내가 사용할 컨트롤러의 class의 이름 + view 를 붙이는게 네이밍의 정석이다. 하여 TigerView로 설정된다)

  5. index.js<a href="t2">링크2</a> 추가
  6. pack01 폴더의 Tiger.java파일로 들어가서 경로 추가

    (...)
      @RequestMapping("/t2")
      public String func02() {
        System.out.printf( "함수 f2 콜\n" );
        return "TigerView";
      }
    }
    
  7. 실행이 완료된다면 스프링 프로젝트 생성 완료! 스프링 프로젝트 환경설정이 끝났기 때문에 해당 프로젝트를 복붙하여 다시 환경설정을 하지 않고 사용 가능하다.

※ 이전프로젝트가 물려서 서버를 실행 시켜도 이전 프로젝트가 계속 뜨거나, 오류가 뜬다면 하단의 Server탭에서 과감히 Server를 삭제하고 다시 설정한다.



상단에 만든 프로젝트를 복붙하여 사용 할 경우 (Spring01 프로젝트)


  1. 상위 Spring01 프로젝트를 이클립스 탐색기 내에서 복붙한다.
  2. pom.xml에서 상단의 groupID, artifactId 바뀐 이름으로 변경
  3. f5 눌러서 프로젝트 Refresh
  4. alt + F5 눌러서 maven force update
  5. 하단 탭 Server 삭제 후 톰캣 new Server로 다시 세팅
    (추가)
    구태여 할 필요는 없지만 나중에 문제생길 수 있으니 함.
    web.xml과 pom.xml 저장 표시만 내기위해 뒤쪽에 스페이스바 하나 넣고 저장.
    xml 변경했으니 alt+F5 눌러서 maven force update
  6. 프로젝트 세팅들어가서 path가 바뀐 이름과 같은지 확인
  7. 실행. 잘되면 제대로 복사 된 것임.

※ Server 탭에서 Tomcat 서버 더블클릭 후 PortName에 8005가 잘 살아있는지 확인.
(가끔 포트번호가 사라지는 경우가 있음, 해당 포트번호가 없으면 인카운트 문제 발생함)



스프링 활용 예시 코드


param 받아오기
  1. index.jsp에 코드 추가

    <a href="t3?name=apple">링크3</a>
    
  2. Tiger.java에 코드 추가

    @RequestMapping("/t3")
    public String func03(@RequestParam(value="name") String name)
    {
      System.out.printf( "함수 f3 콜\n" );
      System.out.println(name);
      return "TigerView";
    }
    
  3. 콘솔창에 잘 뜨는지 확인


param이 여러개일 때
  1. index.jsp에 코드 추가
<a href="t4?name=apple&age=100">링크4</a>
  1. Tiger.java에 코드 추가

    @RequestMapping("/t4")
    public String func04(
      @RequestParam(value="name") String name,
      @RequestParam(value="age") String age)
    {
      System.out.printf( "함수 f4 콜\n" );
      System.out.println(name + age);
      return "TigerView";
    }
    
  2. 콘솔창에 잘 뜨는지 확인


view로 데이터 보내기 1
  1. index.jsp에 코드 추가

    <a href="t5?name=apple&age=100">링크5</a>
    
  2. Tiger.java에 코드 추가

    @RequestMapping("/t5")
    public String func05(
      //@RequestParam은 사용하는 속성이 여러가지 방법이 있다. (Default로 받는다던지, 받고 초기화 시킨다던지 하는 등의 기능있음. 찾아보자)
      @RequestParam(value="name") String name,
      @RequestParam(value="age") String age, Model model)
    {
      System.out.printf( "함수 f5 콜\n" );
      System.out.println(name + age);
    
      // 첫번째는 받을 때의 변수명, 뒤는 해당 값
      model.addAttribute("name", name);
      model.addAttribute(age, age);
      model.addAttribute("salery", 999);
    
      return "TigerView";
    }
    
  3. TigerView.jsp 코드 추가 (받는 방법 두가지)

    (1)

    <!-- 쉽게 받는 방법 -->
    <h1>${name}</h1>
    <h1>${age}</h1>
    <h1>${salery}</h1>
    

    (2)

    <!-- 어렵게 받는 방법 -->
    <!-- request.getParameter 라는 함수는 여기서 작동되지 않는다. 사용하지 말라. -->
    <% String name = (String)request.getAttribute("name"); %> <%=name %>
    
  4. 페이지에 잘 뜨는지 확인


view로 데이터 보내기 2
  1. index.jsp에 코드 추가

    <a href="t6?name=apple&age=100">링크6</a>
    
  2. Tiger.java에 코드 추가

    @RequestMapping("/t6")
    public String func06(HttpServletRequest r) {
      // 여기선 Parameter 사용
      String name = r.getParameter("name");
      String age = r.getParameter("age");
    
      System.out.printf( "함수 f6 콜\n" );
      System.out.println(name + age);
      return "TigerView";
    }
    
  3. 콘솔창에 잘 뜨는지 확인


모델을 사용하지 않고 데이터 받기
  1. index.jsp에 코드 추가

    <a href="t7">링크7</a>
    
  2. Tiger.java에 코드 추가

    @RequestMapping("/t7")
    public ModelAndView func07() {
      System.out.printf( "함수 f7 콜\n" );
    
      String s;
    
      // 내가 갈 곳을 분기시킬 때 ModelAndView를 사용한다.
      if(true) { s = "TigerView"; }
      else { s = "LionView"; }
    
      // ModelAndView 인수로 View페이지를 던져준다.
      ModelAndView mv = new ModelAndView(s);
      mv.addObject("name", "이순신");
      mv.addObject("age", 999);
    
      return mv;
    }
    
  3. 페이지 상에 잘 뜨는지 확인





© 2019. by mintheon

Powered by mintheon