8/12/2019

스프링 게시판 만들기 #1. 스프링 기본 설정

웹개발의 시작인 게시판 만들기입니다.

이 게시물에서는 Open JDK 1.8(오픈 JDK), STS 3.9.9(스프링 툴 스위트), Tomcat 8.5(톰캣), Maria DB(마리아 DB)를 사용합니다.

또한, 브라우저는 구글 크롬 브라우저를 사용하며, 웹개발에 필요한 Java 지식 또한 필요하겠습니다.

먼저 스프링, 정확히는 '스프링 툴 스위트(STS)'를 설치하기 위해 스프링 사이트에 접속합니다.

스프링(STS) 4버전은 기본적으로 스프링 부트를 사용하는데, 여기서는 스프링 레거시를 사용할 예정이므로 그 하위 버전인 스프링(STS) 3버전이 필요합니다. 스프링(STS) 4버전에서도 스프링 레거시를 사용할 수 있으나 추가적인 설치를 필요로하기 때문에, 설치 없이 사용할 수 있는 스프링(STS) 3버전을 사용하겠습니다.

스크롤을 가장 아래로 내리면, 스프링(STS) 3버전의 페이지로 이동하는 링크가 있습니다. 이 링크를 클릭합니다.

스크롤을 조금 내리면, 스프링(STS) 3버전의 모든 버전을 볼 수 있는 See all version 링크를 클릭합니다.

OS에 맞는 스프링(STS)를 다운로드 받습니다.

저는 윈도우 10 64비트를 이용하니, 그에 맞는 스프링(STS)를 다운로드 받겠습니다.

다운로드가 완료되었습니다.

적당한 폴더에 압축을 해제합니다.

저는 D드라이브의 board 폴더에 압축을 해제했습니다.

sts-bundle\sts-3.9.9.RELEASE 내부에 STS파일이 실행 파일입니다.

바탕화면에 바로가기를 만들어놓고, 이름을 적당히 바꿔줍니다.

저는 1개의 프로젝트당 1개의 스프링(STS)을 사용하다보니 이름을 프로젝트명으로 했습니다.

이제 프로그램을 실행하고, 프로젝트가 저장될 경로를 정해줍니다. 저는 위에서 만들었던 board 폴더 하위에 workspace라는 폴더를 생성하여 지정했습니다.

이 스프링(STS)으로는 게시판만 만들것이니, Use this as the default and do not ask again을 체크합니다. 체크하게되면 경로를 다시 물어보지 않습니다.

스프링(STS)가 실행된 화면입니다.

좌측 상단의 File → New → Project를 선택합니다.

spring으로 검색하면 쉽게 Spring Legacy Project(스프링 레거시 프로젝트)를 선택할 수 있습니다. Spring Legacy Project를 선택하고 다음(Next) 버튼을 클릭합니다.

Project Name(프로젝트 네임)을 입력합니다. 저는 board로 입력했습니다.

Templates(템플릿)은 Spring MVC Project(스프링 MVC 프로젝트)를 선택하고 다음(Next) 버튼을 클릭합니다.

최상위 패키지를 입력하고 완료(Finish) 버튼을 클릭합니다. 저는 com.board.controller로 입력했습니다.

최상위 패키지는 [최상위 도메인].[회사명 또는 프로젝트명].[대표 패키지 또는 애플리케이션명]으로 구성됩니다.

프로젝트가 생성되었습니다. 우측 하단을 보면 워크스페이스를 구성하고 있습니다.

모든 구성이 완료되었습니다.

스프링(STS)의 기본적인 설정을 하겠습니다.

상단 메뉴에서 Window → Preferences를 선택합니다.

General → Workspace에서 Text file encoding를 UTF-8로 변경하고 적용 및 닫기(Apply and Close) 버튼을 클릭합니다.

프로젝트를 한번 클릭 한 뒤, 상단 메뉴에서 Project → Properties를 선택합니다. 프로젝트를 우클릭하고 Properties를 선택해도 됩니다.

Resource에서 Text file encoding 에서 UTF-8로 되어있는지 확인합니다.

Project Facets에서 Java의 버전을 1.8로 변경한 뒤 적용 및 닫기(Apply and Close) 버튼을 클릭합니다.

src → main → webapp → WEB-INF → web.xml파일을 열고, </web-app> 위에 코드를 추가합니다.

<!--  문자 인코딩  시작 -->
<filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
  </filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
<!--  문자 인코딩  끝 -->

문자 인코딩을 UTF-8로 변경하는 코드입니다.

src → main → webapp → WEB-INF → views → home.jsp 파일을 열고 <html>위에 코드를 추가합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

현재 페이지의 인코딩을 UTF-8로 변경하는 코드입니다.

pom.xml파일을 열고, 하단 탭에서 pom.xml을 선택합니다.

현재 pom.xml에서는 Java의 버전이 1.6, Spring Framework(스프링 프레임워크)의 버전이 3.1.1로 되어있습니다.

Java의 버전을 1.8, Spring Framework(스프링 프레임워크)의 버전을 4.3.8로 변경합니다.

스프링(STS)의 좌측 하단에 있던 Servers윈도우에 우클릭을 한 뒤, New → Server를 선택합니다.

Tomacat v8.5로 검색하면 바로 나와서 찾기 쉽습니다. Tomcat v8.5를 선택하고 다음(Next) 버튼을 클릭합니다.

Tomcat 8.5가 설치된 경로를 입력하고 다음(Next) 버튼을 클릭합니다.

현재 서버를 사용할 프로젝트를 설정합니다.

프로젝트를 선택하고 추가(Add) 버튼을 클릭합니다.

프로젝트가 좌측에서 우측으로 이동했습니다. 완료(Finish) 버튼을 클릭합니다.

상단 메뉴에서 Window → Web Browser → Chrome을 선택합니다.

이제 프로젝트를 시작해보겠습니다.

프로젝트를 우클릭하고 Run As → Run on Server를 선택합니다.

Tomcat 서버가 선택되어있을텐데 선택되어있지 않다면 선택해줍니다. 이 프로젝트는 항상 톰캣 서버로만 실행할 예정이므로 하단의 Always use this server when running this project에 체크를 한 뒤 완료(Finish) 버턴을 클릭합니다.

처음 실행하는 경우 이처럼 보안 경고가 나올 수 있습니다. 액세스 및 허용 버튼을 클릭하여 진행합니다.

프로젝트가 크롬 브라우저로 실행되었으며, 한글이 잘 표시되는걸 확인할 수 있습니다.

게시물 수정
  1. ver2 보면서 따라하고 있었는데 기존 게시물은 전부 지우신건가요?ㅠㅠ

    답글삭제
    답글
    1. 안녕하세요?

      기존 내용과 같지만 좀 더 세부적으로 분류하되, 게시물 한개당 길이는 짧게 조절하고 싶어서
      기존 게시물은 숨김 처리했습니다만, 삭제 예정으로 다시 추가해놨습니다.

      스프링 게시판 만들기 ver.2

      방문해주셔서 감사합니다.

      삭제
    2. 다시 살려놓으셨네요 감사합니다!

      삭제
    3. 익명1/30/2023

      그대로 했는데 오류가 발생했습니다. 404오류입니다. 어떻게해야할까요?

      삭제
    4. 익명4/25/2023

      localhost:8080 이 맞는지 혹은 3000번으로 돌린지 확인 하세요. 404는 요청이 없으면 뜹니다.

      삭제
  2. spring mvc project 가 안보이네요.
    인터넷에 찾아봐서 해봤는데도 안되는데 다른 방법 있을까요?

    답글삭제
    답글
    1. 안녕하세요? 방문해주셔서 감사합니다.

      이쪽 게시물을 참고바랍니다.

      삭제

  3. HTTP 상태 404 – 찾을 수 없음


    타입 상태 보고

    메시지 Not found

    설명 Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다.


    Apache Tomcat/8.5.51

    http://localhost:8080/에서
    이 오류 뜨는데 어떻게 해야되나요? ㅠ

    답글삭제
    답글
    1. 안녕하세요? 방문해주셔서 감사합니다.

      프로젝트를 막 생선한 시점에 404에러가 나온다는건.. 컨트롤러 또는 뷰(View)쪽을 수정하신건가요?

      삭제
    2. 아음 패스를 /controller 해도 안되고 localhost:8080/ 이렇게 해도 안되고 저도 안되네요.수정은 1도 안했습니다.

      삭제
    3. jsp로 경로 잡아주고 하니까 톰켓은 문제가 없는데 경로가 좀 문제인거 같은데요 서버 모듈이나 되는거 좀 올려 주시면 안될까요?

      삭제
    4. 나두 같은 에러 났는데 답없더라.. 걍 포기해라.

      삭제
    5. 같은 오류인지는 모르겠지만 해결했습니다.

      톰캣 서버 설정에서 Path를 다시 잡았습니다.

      서버 더블클릭하면 module path를 수정할 수 있어요.

      기본 path가 /controller로 잡혀 있는 것을 /로 변경하시면 됩니다.

      같은 해결책이기를 바랍니다.

      삭제
    6. 안녕하세요? 방문해주셔서 감사합니다.

      저 에러는 톰캣의 경로에서 생기는 문제일 가능성이 매우 높습니다.
      이외에도 xml 설정 파일이 제대로 설정되지 않았을수도 있고(컨텍스트에서는 설정 파일을 로드하도록 작성했으나 실제로 해당 파일이 없는 경우)
      이클립스 기반의 IDE를 사용할 경우.. 프로젝트나 서버를 클린 시켜주면 되기도(...) 합니다

      삭제
  4. 익명3/20/2020

    쿠주로님. 또 왔습니다.

    구글 블로그 하다가 또 막혔습니다. 사이트에서 구글 블로그 검색을 아무리 해봐도 도저히 안나와서 오게되었습니다.

    HTML이 안먹혀서 메일로 보낼께요. 저번에 너무 감사해서 광고 눌렀습니다. ㅎㅎㅎ

    답글삭제
    답글
    1. 안녕하세요? 방문해주셔서 감사합니다.

      html은 댓글 창 위에있는 HTML 태그 (부등호) 변환에서 변환하시면 됩니다.

      말씀하신 광고 문제에 대한건은 메일로 보내드리렸습니다.

      삭제
  5. 기존 하위 스프링 버전 받으시려는 분들 아래 주소로 들어가셔셔 하단에 찾아보시면 됩니다 스프링 홈페이지가 기존 버전도 받기 쉽게 풀어났음 하는데. 오래된 버전은 사용을 권고 하지 않아 그런듯 합니다. 깃허브 들어가시면 받을수 있습니다. https://github.com/spring-projects/toolsuite-distribution/wiki/Spring-Tool-Suite-3

    답글삭제
    답글
    1. 안녕하세요, 방문해주셔서 감사합니다.

      생각해보니 저도 저 경로로 스프링 받아놓고 블로그쪽에는 갱신하지 않았네요.
      따로 작성해야겠군요... 감사합니다(__)

      삭제
  6. 안녕하세요 마리아나DB 쓰는데 오라클써도 상관없나요 ? 오라클하면 db설정이랑 코드가 좀 달라지나요 ?

    답글삭제
    답글
    1. 안녕하세요? 방문해주셔서 감사합니다.

      오라클 DB사용시 스프링내 코드는 달라지는게 거의 없으나
      pom.xml 의 라이브러리 설정 및 매퍼(mapper)의 쿼리문이 달라집니다.

      삭제
  7. 길다면 길고 짧다면 짧은 게시글에 실습하면서 수많은 오류와 충돌이 생기는데 그걸 구글링하면서

    해결하는 쾌감이 상당합니다.

    작성자님 감사합니다.

    답글삭제
  8. 회사에서 사용하는 jdk 버젼이 1.7.0_02인데요
    1.7.0_02버젼으로 사용해서 문제가 발생할 수 있을까요?

    스프링 처음이라 걱정이 듭니다.

    답글삭제
    답글
    1. 안녕하세요? 방문해주셔서 감사합니다.

      1.6부터 11까지 골고루..까지는 아니어도 이것저것 써본 결과
      1.7정도면 1.8과 큰 차이없는거 같지만...문제가 없다고 확답드리기는 없겠네요-_ㅠ

      삭제
  9. 익명3/24/2021

    cvc-id.3: A field of identity constraint 'web-app-servlet-name-uniqueness' matched element 'web-app', but
    this element does not have a simple type. 이런오류가 나와서 계속 찾아보는데 해결이 안되네요 ㅠㅠ 혹시 해결방법이 있을까요?

    답글삭제
    답글
    1. web.xml 파일의 wep-app 태그에 xmlns="http://java.sun.com/xml/ns/javaee" 부부을
      xmlns="http://JAVA.sun.com/xml/ns/javaee" 이렇게
      java -> JAVA 대문자로 변경해 보세요

      삭제
    2. 감사합니다! 덕분에 해결했습니다.

      삭제
  10. 안녕하세요. 강의를 따라가던 중 마지막 run on server를 누르니 하단과 같은 에러가 발생했습니다.

    'Publishing to Tomcat v8.5 Server at localhost...' has encountered a problem.

    Resource '/board/target/classes/log4j.xml' does not exist.


    뭐가 문제일까요....

    답글삭제
    답글
    1. 안녕하세요? 방문해주셔서 감사합니다.

      먼저 깃허브나 SVN같은 저장소를 사용하신다면, log4j.xml파일을 리버트 해보시고, 이클립스(=STS)의 경우 상단 메뉴에서 프로젝트→클린 후 프로그램 재시작

      log4j.xml파일을 열었을때 상단에 있는 코드를 <!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> 로 바꿔보세요.

      삭제
  11. 진짜 여러가지 스프링 게시판 만들기 블로그들을 헤메고 다녔는데. 여기가 가장 깔끔하고 따라하기가 쉽네요. 정말 개쩝니다. 정말 감사합니다.

    답글삭제
  12. 익명1/05/2023

    sts3에 java1.8 깔았더니 sts실행하니까 java11이상 필요하데서 깔려있던 java17로 바꿨더니 sts실행은 되는데 Plug-in org.eclipse.jdt.ui was unable to load class 이런 오류.. 아 멘탈 나감 처음부터

    답글삭제
  13. 익명3/10/2023

    감사합니다. 많은 도움이 됐습니다.

    답글삭제
  14. 익명8/17/2023

    선생님 지나가는 신입사원의 한 줄기 빛입니다.
    감사합니다. 아멘.

    답글삭제
  15. 선생님 감사합니다. 뽀뽀 해드리고 싶습니다 감사합니다 😘😘🥰🥰

    답글삭제