이클립스 우측 상단에
테이블 모양 Open Perspective 클릭해서
Java EE 선택해줘
그럼 이렇게
Java EE 환경으로 바뀐것을 확인 가능
일단 톰캣이 안잡혔으니
톰캣서버 먼저 잡고 시작
난 tomcat 8.0 버전을 받아 놨으니
본인에 맞는 것을 선택후 Next~
Browse 선택해서 아파치 톰캣 설치한데 찾아서 확인 후 Finish~
그럼
Servers 생긴것 확인 가능
server.xml 에서 8080 포트를 8888 로 수정
이걸 안바꿔 주면 포트 충돌나서 에러 나옴
서버가 제대로 동작하는지
run 하고
stop 해봐
확인 후에 WebProject 하나 만들어줘
Step01 만들어
얘를 메이븐으로 바꿔야해
프로젝트 우클릭 해서
Convert to Maven Project 눌러줘
이거 나오면 피니쉬~
프로젝트 바뀐 모습
pom.xml에 maven을 복붙 하면 라이브러리를 받을 수있어
mavenrepository 에서
spring web mvc 찾아서
적당한 버전 찾아서 RELEASE 클릭~!
내 경우엔 4.2.0 으로 들어옴
여기에 Maven 에 있는 소스 코드 긁어와서
pom.xml 이 이렇게 되어 있는데
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Step01_Hello</groupId> <artifactId>Step01_Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.0.0</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> <!-- 의존 라이브러리 목록 --> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.0.RELEASE</version> </dependency> </dependencies> </project> | cs |
추가해주면 라이브러리가 알아서 받아져
그리고 프로젝트에 web.xml도 만들어줘
이렇게 하면 만들어짐
dispatcherservlet 가 있는 것을 볼수 있어
이렇게 2가지를 수정해줘
그리고 WEB-INF에 servlet-context.xml 을 만들어줘\
web-inf우클릭 -> new ->other 에서
이거 찾아
파일명 적어주고
next
여기서 context 클릭하고 finish
만약에 이게 안뜬다면
라이브러리가 받아지다 만 것이니
version을 다른 걸로 바꿔서 저장해주면 라이브러리를 다시 받아서 될것임
이제 servlet-context.xml 설정 할거야
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?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: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/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <!-- view page 설정 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <!-- 접두어 --> <property name="suffix" value=".jsp"></property> <!-- 접미어 --> </bean> </beans> | cs |
이렇게 코딩해 주고
index.jsp 도 만들어줘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>index.jsp</title> </head> <body> <h3>인덱스 페이지입니다.</h3> <ul> <li><a href="fortune.do">오늘의 운세</a></li> </ul> </body> </html> | cs |
인덱스 코딩
Spring MVC를 한번 해보는거야
이렇게 만들어 주고
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package test.controller; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; //1. Spring Controller 로 만들겠다는 어노테이션 @Controller public class FortuneController { //2. "/fortune.do" 요청을 처리하겠다는 annotation @RequestMapping("/fortune") public String fortune(HttpServletRequest request){ String fortuneToday="동쪽으로 가면 귀인을 만나요"; request.setAttribute("fortuneToday", fortuneToday); /* * 포워드 이동해서 응답할 jsp페이지의 위치를 문자열로 리턴한다. * * prefix => "WEB-INF/views/" * suffix => ".jsp" * * prefix+"fortune"+suffix => "/WEB-INF/views/fortune.jsp" */ return "fortune"; } } | cs |
코딩은 이렇게~
포워드 이동을 시켰으니 그대로 만들어 줘야 404가 발생안해
이렇게 만들고
1 2 3 4 5 6 7 8 9 10 11 12 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>views/fortune.jsp</title> </head> <body> <p> 오늘의 운세 : ${fortuneToday } </p> </body> </html> | cs |
EL로 받아와
servlet-context.xml 로 가서
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?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: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/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <context:component-scan base-package="test.controller"/> <!-- view page 설정 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <!-- 접두어 --> <property name="suffix" value=".jsp"></property> <!-- 접미어 --> </bean> </beans> | cs |
<context:component-scan base-package="test.controller"/>
이거 추가해줘
그리고 실행해 보면
잘 동작하는 것을 확인가능
--------------------------------------------------------------------------------------------------------------------
이 /fortune.do 요청에 대해서 어떻게 응답했는지 되돌아 보면
이게 같아야해
누군가 미리 만들어 놓은 서블릿을 맵핑하고 사용하는 것이니 형식에 맞게 사용해야해
*.do 요청 처리는 DispatcherServlet 이 다 하겠다는 의미임
누군가 미리 만들어 놓은 서블릿을 사용을 하되
우리가 뭔가 설정을 하고 싶을 때도 있어 근데 다른사람이 만들어 놓은 것을 수정하기는 너무 어려우니
<param-value> 에 xml 문서를 하나 지정해 놓고 그 xml 문서에서 세부 설정을 해줘
servlet-context.xml로 가보면
bean은 하나의 객체야
<property name="prefix" value="/WEB-INF/views/"/>
<property name=”prefix” 는 세터 메소드 호출 하면서 value=”/WEB-INF/views 이걸 전달하는 것.
스프링은 객체를 자기가 직접 관리를 해주는 컨테이너가 있어
그걸 Spring Bean Container 이라고 해
여기에 있는 정보대로 Spring Bean Container 에 객체를 가지고 있다가 필요한곳에 보내줘
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/> <!-- 접두어 -->
<property name="suffix" value=".jsp"></property> <!-- 접미어 -->
</bean>
이거 하면
InternalResourceViewResolver 객체가 만들어져
그럼 우리가 잘 받아서 쓰면돼
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"></property>
이 정보만 잘 전달하면 받아서 쓸수 있어
모든 뷰 페이지는 /WEB-INF/views/ 하위에 만들고 .jsp로 끝나
해당하는 부분에는 이 객체를 받아서 쓸수 있는 것
<context:component-scan base-package="test.controller"/>
이거의 역활은 스캔을 하면서 test.controller 패키지를 찾아가서 관리 할게 있으면 관리를 한다는 의미
스캔을 하다 보니까 어노테이션이 붙어 있어
이거 때문에 FortuneController 이 객체가 Spring Bean Container 에서 객체로 관리가 되는 것임
컴퍼넌트 스캔이 반드시 일어나야지만 어노테이션이 붙어 있는게 클래스로 객체가 생성이 되고 Spring Bean Container 에서 객체로 관리가 되는 것
이런 흐름이야
SpringDispatcherServelt 이 /fortune을 처리할게 있는지 찾아
이미 컨포넌트 스캔을 이용해서 알아놧어(서버 시작할때 이미 준비작업을 해 둔것)
/fotrune은 니 임무야 니가 처리해 라고
FortuneController 에게 처리하라고 넘겨
그럼 controller 에서는 비지니스 로직을 처리를 하고
비지니스 로직을 모델이라고 해
버리 할때에는 request 에 담고 forward 이동을 시켜
forward 이동을 views/fortune.jsp 로 보내면
응답을 하는 것이 보여지는 것
WEB-INF 는 보안되는 곳이기 때문에 직접 요청이 불가능해
그래서 컨트롤러를 거쳐서 가는 거야
SpringDispatcherServelt 얘의 동작을 설정하는 문서는 ServletContext.xml 인 것
/fortune 요청을 받았을때 밑에 메소드로 구현을 하겠다
인터페이스로 구현했기에 메소드명, 필요한 객체, 리턴타입 전부 마음대로 정의가능
요청을 받으면 실행 순서가 일로 들어와
만약에 요청 객체가 필요하면 public String fortune() 괄호안에 전달을 하면돼
prefix, suffix 가 붙는 이유는 servlet-context.xml 에서 정의를 해놨기 때문에 붙는 것.
이렇게 했으면 WEB-INF / views 밑에 가서 fortune.jsp 만들어서 응답할거 코딩하면 되는 것.
인덱스에 이렇게 링크를 하나 더 만들어서 이 요청을 처리 할수 있으면 된것.
이렇게 나올수 있게되면 성공~
링크 하나더~
패키지 하나 더 만들어서
이렇게 코딩하면
얘가 무작정 동작하는 건 아니고 얘가 속해 있는 패키지에 컴퍼넌트 스캔이 일어나야 해
servlet-context.xml 로 가서
이거 추가 코딩해줘
그리고 위에서 friends/list 로 포워드 이동 시켰으니 그 경로대로 만들어 줘야 해
경로대로 만들어 주고
여기서 반복문을 돌아야 하니까 tag 라이브러리가 필요해
예전엔 라이브러리 다운 받아서 lib 폴더에 집어 넣었는데
지금은 maven 프로젝트로 만들었기에 pom.xml 에 추가해주면 됌!!!
여기서 2번째꺼 눌러서 있는 여러가지 버전중에 아무거나 쓰면 되는데
1.2 버전을 클릭해서 들어가면
Maven 밑에 있는 dependency 소스코드를 복사 해와서 pom.xml 에 잘 넣으면 됌
여기에 dependencies 안에 붙여 넣기하고 저장하면 라이브러리가 받아져
이제 다시 list.jsp로 가서
이렇게 코딩 하고 잘 동작하나 확인해 보면 됌
친구목록 보기를 눌렀을때
이렇게 잘 나오면 된것임.
'FrameWork > spring' 카테고리의 다른 글
Step03_Hello-1.프로젝트 생성 (0) | 2017.07.28 |
---|---|
FrameWork 란? (0) | 2017.07.27 |
3. spring 기본 - 3 (0) | 2017.07.26 |
3. spring 기본-2 (0) | 2017.07.26 |
3. Spring 기본 (0) | 2017.07.25 |