4. Step01_Hello

2017. 7. 26. 23:29· FrameWork/spring
반응형
SMALL

이클립스 우측 상단에



테이블 모양 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>
Colored by Color Scripter
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>
 
Colored by Color Scripter
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>
Colored by Color Scripter
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";
    }
}
 
Colored by Color Scripter
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>
Colored by Color Scripter
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>
 
Colored by Color Scripter
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로 가서




이렇게 코딩 하고 잘 동작하나 확인해 보면 됌


친구목록 보기를 눌렀을때



이렇게 잘 나오면 된것임.





반응형
LIST

'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
'FrameWork/spring' 카테고리의 다른 글
  • Step03_Hello-1.프로젝트 생성
  • FrameWork 란?
  • 3. spring 기본 - 3
  • 3. spring 기본-2
- 광속거북이 -
- 광속거북이 -
IT관련 일하면서 공부 및 일상 에 관한 내용들을 기록하기 위한 블로그 입니다.
누리IT관련 일하면서 공부 및 일상 에 관한 내용들을 기록하기 위한 블로그 입니다.
- 광속거북이 -
누리
- 광속거북이 -
전체
오늘
어제
  • 카테고리 (457)
    • 구글문서 (4)
    • 설치방법들 (3)
    • FrameWork (73)
      • Django (6)
      • Python (32)
      • AngularJS (13)
      • spring (21)
    • Programing (61)
      • JAVA (11)
      • etc... (2)
      • 오류 해결 (29)
      • Algorithm (5)
    • Front-End (25)
      • CSS (3)
      • html (6)
      • javascript (10)
      • vueJS (5)
    • Back-End (5)
      • 리눅스 (12)
      • PostgreSQL (14)
      • MySQL (2)
      • Shell (1)
      • docker (1)
      • GIT (1)
    • Util (9)
      • BIRT (2)
      • JMeter (3)
      • MobaXterm Personal (1)
      • ClipReport (2)
    • 이클립스 설정 (10)
      • SVN (1)
    • 업무중 기록해둘 것들... (1)
    • 영화 (8)
    • etc.. (199)
      • 여행 (25)
      • AI (1)
      • 문화생활 (3)
      • tistory (3)
      • 글, 생각 (4)
      • 먹을 곳 (29)
      • issue (4)
      • 결혼 (1)
      • 가족여행기록 (1)
      • Tip (51)
      • 강아지 (5)
      • 일기 (0)
      • 게임 (3)
      • 주식 (7)
      • 코로나19 (7)
      • 맥북 (5)
    • 비공개 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 윈도우10
  • IntelliJ
  • 맛집
  • tomcat
  • 설정
  • 합정
  • 이클립스
  • VSCode
  • 인텔리제이
  • PostgreSQL
  • 카페
  • 리눅스
  • Java
  • 연천
  • 해지
  • 백준
  • 포켓몬고
  • 제주도
  • 설치
  • 삼성증권

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
- 광속거북이 -
4. Step01_Hello
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.