Spring 프로젝트 환경설정
Spring 프로젝트 환경설정
Spring 수동 환경설정
[Step 1]
- file → new → maven Project 클릭
- next → 제일 아래의
maven_archetype-webapp
선택 후 next → groupID 등 입력후 finish
[Step 2]
- 프로젝트 설정 내의
Project Facets
꼭 들어가서runtimes
에apacheTomcat
이 체크되어 있는지 확인. - 해당 창에서 자바 버전과 dynamic webapp 버젼이 10년 전인 1.5와 2.3으로 되어있는것 확인 (나중에 바꿔줄것임. 여기서 콤보박스 내려도 변경 안됨) ※ 프로젝트 세팅 → Resource : 현재 작업하고 있는 프로젝트 파일 경로가 어딘지 알고싶을때.
- 해당 프로젝트를 탐색기에서 열고
.settings
폴더 들어가서org.eclipse.jdt.core.prefs
파일 내 java 버전을 설치된 버전과 일치시킴 org.eclipse.wst.common.project.facet.core.xml
파일 내의 java 버전 변경, jst.web 버전을 3.0으로 변경- 프로젝트 refresh 후
project Facets
들어가서 버전 바뀐것 확인 pom.xml
들어가서 dependency, build 설정alt + F5
단축키 눌러 뜨는Update Maven Project
에서 프로젝트 체크 후 하단의force update of snapshots/releases
꼭 체크하고 OK 하는것을 생활화!Dependency
내com.oracle
의ojdbc6
부분은 라이센스 문제가 있다. 사실 ojdbc12 써도 되는데 라이센스 허용이 6 버전까지 되어있으니 그냥 사용할 것. (6버전도 구동 잘 된다. 안되는걸 찾기가 더 힘듬)
[중간 참고사항]
※ repository가 가끔 깨지는 경우가 있다. 그 경우 C:\Users\MIN\.m2\repository
디렉토리 내의 파일들 삭제하고 다시 maven update 해야 한다.
※ groupId = 폴더 경로
artifactId = 그 폴더 경로내의 프로그램
version = 해당 프로그램의 버젼
(하향식으로 접근 가능)
[Step 3]
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 encoding UTF-8 encodingFilter /* </web-app> ```
[Step 4]
WEB-INF
오른쪽 클릭 → new → file
file name
인풋창에 적을 파일 명은dispatcher-servlet.xml
파일 내 코드의<servlet-name>dispatcher</servlet-name>
부분이 여기와 연관되어 있다.
해당dispatcher
부분을 차용해dispatcher-servlet.xml
로 파일 이름 설정 해준다. (가끔 다른 스프링에서 이dispatcher
부분의 텍스트가 다른 부분이 있기때문에 숙지 요망)해당
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>
15번, 21번째 줄 코드 숙지
15번 : presentation logic 경로 설정 구문 21번 : business logic 경로 설정 구문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>
Ctrl + F11
눌러서 제대로 실행되면 성공!
[Step 5]
- 프로젝트 트리의 src → main 밑에
java
폴더 하나 만들기.
(Java Resources에 있는거 써도 되지만 이번 예제에서는 만든다) - 클래스 파일 생성 → package name에 아까 설정해줬던
pack01
이름으로 설정하고Tiger.java
생성 클래스파일은 앞자가 무조건 대문자여야함. 파일 내 내용은 하단 복붙
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; } }
\src\main\webapp\WEB-INF
경로에views
폴더 생성 후, 내부에TigerView.jsp
파일 생성
(내가 사용할 컨트롤러의class의 이름 + view
를 붙이는게 네이밍의 정석이다. 하여TigerView
로 설정된다)index.js
에<a href="t2">링크2</a>
추가pack01 폴더의
Tiger.java
파일로 들어가서 경로 추가(...) @RequestMapping("/t2") public String func02() { System.out.printf( "함수 f2 콜\n" ); return "TigerView"; } }
- 실행이 완료된다면 스프링 프로젝트 생성 완료! 스프링 프로젝트 환경설정이 끝났기 때문에 해당 프로젝트를 복붙하여 다시 환경설정을 하지 않고 사용 가능하다.
※ 이전프로젝트가 물려서 서버를 실행 시켜도 이전 프로젝트가 계속 뜨거나, 오류가 뜬다면 하단의 Server탭에서 과감히 Server를 삭제하고 다시 설정한다.
상단에 만든 프로젝트를 복붙하여 사용 할 경우 (Spring01 프로젝트)
- 상위
Spring01
프로젝트를 이클립스 탐색기 내에서 복붙한다. pom.xml
에서 상단의 groupID, artifactId 바뀐 이름으로 변경f5
눌러서 프로젝트 Refreshalt + F5
눌러서 maven force update- 하단 탭 Server 삭제 후 톰캣 new Server로 다시 세팅
(추가)
구태여 할 필요는 없지만 나중에 문제생길 수 있으니 함.
web.xml과 pom.xml 저장 표시만 내기위해 뒤쪽에 스페이스바 하나 넣고 저장.
xml 변경했으니 alt+F5 눌러서 maven force update - 프로젝트 세팅들어가서 path가 바뀐 이름과 같은지 확인
- 실행. 잘되면 제대로 복사 된 것임.
※ Server 탭에서 Tomcat 서버 더블클릭 후 PortName에 8005가 잘 살아있는지 확인.
(가끔 포트번호가 사라지는 경우가 있음, 해당 포트번호가 없으면 인카운트 문제 발생함)
스프링 활용 예시 코드
param 받아오기
index.jsp
에 코드 추가<a href="t3?name=apple">링크3</a>
Tiger.java
에 코드 추가@RequestMapping("/t3") public String func03(@RequestParam(value="name") String name) { System.out.printf( "함수 f3 콜\n" ); System.out.println(name); return "TigerView"; }
콘솔창에 잘 뜨는지 확인
param이 여러개일 때
index.jsp
에 코드 추가
<a href="t4?name=apple&age=100">링크4</a>
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"; }
콘솔창에 잘 뜨는지 확인
view로 데이터 보내기 1
index.jsp
에 코드 추가<a href="t5?name=apple&age=100">링크5</a>
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"; }
TigerView.jsp
코드 추가 (받는 방법 두가지)(1)
<!-- 쉽게 받는 방법 --> <h1>${name}</h1> <h1>${age}</h1> <h1>${salery}</h1>
(2)
<!-- 어렵게 받는 방법 --> <!-- request.getParameter 라는 함수는 여기서 작동되지 않는다. 사용하지 말라. --> <% String name = (String)request.getAttribute("name"); %> <%=name %>
페이지에 잘 뜨는지 확인
view로 데이터 보내기 2
index.jsp
에 코드 추가<a href="t6?name=apple&age=100">링크6</a>
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"; }
콘솔창에 잘 뜨는지 확인
모델을 사용하지 않고 데이터 받기
index.jsp
에 코드 추가<a href="t7">링크7</a>
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; }
페이지 상에 잘 뜨는지 확인